- PERSONA
- Email Security Engineer
- CATEGORY
- Integration
- ENDPOINTS
- 6 used
- UPDATED
- April 2026
Programmable email security behind your gateway
Gateway auto-triage is a black box you cannot patch
- Gateway vendors change ML weights without notice; last week's rule works, today's does not.
- BEC response requires forwarding-rule and sign-in timeline data that M365/Workspace expose inconsistently across tenants.
- SOAR integrations to gateways are vendor-locked; swap vendors and your playbooks break.
- Per-seat pricing on 'advanced phishing' features punishes you for having a large mailbox footprint.
“Gateway vendors change ML weights without notice; last week's rule works, today's does not.”
The endpoints that solve it
Deterministic phishing analyzer
The hot-path call. Parses raw RFC 822, returns SPF/DKIM/DMARC alignment, authentication verdict, extracted indicators[], and a deterministic risk score. Same email in, same JSON out — safe to cache, safe to retry.
AI phishing adjudication
For the subset of messages where the deterministic score lands in the ambiguous band. Returns the same structure plus a natural-language explanation and recommended action — exactly what an engineer wants to pipe into an on-call notification.
Phishing enrichment (header add-ons)
Light-weight enrichment on the indicators already extracted by the analyzer: DNS, blacklist, GSB, URL expansion. Useful when you want extra context without paying for the full multi-source lookup.
Batch IOC enrichment
When a message's risk score crosses threshold, fan its indicators into the full multi-source enrichment (up to 11 sources per IP, 8 per domain/URL, 6 per hash). One response per IOC, ready to slot into an investigation ticket.
BEC forwarding-rule audit
Given tenant credentials (or delegated access), enumerates inbox and transport forwarding rules — the #1 persistence mechanism attackers use after a successful BEC. Returns a flat JSON list you can diff across time.
BEC activity timeline
Reconstructs a per-mailbox timeline of sign-ins, rule changes, and anomalous sends around a suspected compromise window. Outputs the artefact every IR writeup ultimately wants to paste into the report.
A two-lane pipeline: hot path + escalation
import os, base64, requests
API = "https://api.dfir-lab.ch"
H = {"Authorization": f"Bearer {os.environ['DFIR_API_KEY']}"}
def triage(raw_eml_bytes: bytes) -> dict:
# Hot path: 1 credit, sub-second latency
r = requests.post(
f"{API}/v1/phishing/analyze",
headers=H,
json={"raw_email": base64.b64encode(raw_eml_bytes).decode()},
timeout=10,
)
verdict = r.json()
if verdict["risk_score"] < 70:
return verdict # done — log and move on
# Escalation lane: AI adjudication + full IOC enrichment
ai = requests.post(
f"{API}/v1/phishing/analyze/ai",
headers=H,
json={"raw_email": base64.b64encode(raw_eml_bytes).decode()},
timeout=30,
).json()
iocs = verdict["indicators"]
enrichment = requests.post(
f"{API}/v1/enrichment/lookup",
headers=H,
json={"indicators": iocs},
timeout=30,
).json()
return {"verdict": verdict, "ai": ai, "enrichment": enrichment}- 01Step 01
Ingest
Gateway quarantine, user-report mailbox, or transport rule BCC. Any source of raw .eml works — no vendor-specific connector required.
- 02Step 02
Hot path
POST /v1/phishing/analyze for every message. Deterministic, cheap, safe to run in-line with your own queue.
- 03Step 03
Threshold + escalate
Risk score above your threshold? Fan out to /v1/phishing/analyze/ai and /v1/enrichment/lookup. Everything else just gets logged.
- 04Step 04
BEC playbook
When your IdP flags anomalous sign-ins, call /v1/bec/forwarding-audit and /v1/bec/timeline for the affected mailbox. Attach both JSONs to the incident ticket.
- 05Step 05
Own the output
All responses are plain JSON — no UI to depend on. Index into Splunk, post to Slack, push to Jira, diff across days. Your pipeline, your rules.
Pricing that tracks your workload
- 01
Small team — 200 emails/week hot path, 10% escalate
(200 × 4 × 1) + (20 × 4 × 10) + (100 × 4 × 3) = 800 + 800 + 1,200 = 2,800 credits/monthFits Professional ($99/mo, 2,500 credits) plus a small 500-credit top-up ($35), or Starter + 3,000-credit top-ups if volume is bursty. - 02
Mid-size org — 1,000 emails/week hot path, 15% escalate, 2 BEC cases/mo
(1,000 × 4 × 1) + (150 × 4 × 10) + (600 × 4 × 3) + (2 × (5 + 10)) = 4,000 + 6,000 + 7,200 + 30 = 17,230 credits/monthExceeds Professional on credits. Either stack credit top-ups or move to Enterprise for unlimited usage and a committed SLA. - 03
Small dev-team pilot — 50 emails/week all deterministic, no AI
50 × 4 × 1 = 200 credits/monthFits Free ($0, 100 credits) for the first half of the month; Starter ($29/mo, 500 credits) covers the full month with room for ad-hoc IOC enrichment.
Three ways to evaluate
Create a free account (100 credits/mo)
Full API access, dashboard, and your own credits. Includes everything the free tier offers.
Try /phishing-check — no signup
Paste raw headers or upload an .eml in the browser. Same deterministic analyzer as /v1/phishing/analyze, rate-limited to 10 checks/hour — use it to validate verdict quality before wiring the API into your pipeline.
API reference
Full schema, error codes, rate limits, and copy-ready code snippets for every endpoint referenced above.
Frequently asked
- Q / 01
- Same endpoints, different audience. The SOC page is written for the analyst using a finished pipeline. This page is for the engineer building and owning that pipeline — so it covers determinism, idempotency, BEC automation, and how the pieces compose into a larger email-security system.
- Q / 02
- No — and you should not want to. Gateways do inline SMTP-layer blocking; the DFIR Platform is a post-delivery programmable layer. They are complementary. If anything, a good programmable layer lets you keep a cheaper gateway.
- Q / 03
- The /v1/phishing/analyze endpoint is rule-based: same raw email in, same JSON out. The risk score does not drift because a model retrained overnight. The AI endpoints are explicitly separate so you can cache, retry, and audit the deterministic layer with confidence.
- Q / 04
- Yes — forwarding-rule and sign-in timeline data only exist inside your identity provider (M365, Google Workspace). You authorize access once under your tenant; the endpoints then expose the data in a normalized JSON shape consistent across IdPs.
- Q / 05
- Yes — every endpoint is HTTP + JSON with bearer auth. Any SOAR with a generic HTTP block works. Most teams wrap the hot-path + escalation pattern into a single sub-workflow and call it from their gateway and mailbox playbooks.
- Q / 06
- SaaS defaults to EU processing. Enterprise customers with hard data-residency requirements can deploy on-premise; ask for an Enterprise quote.
Other teams solving adjacent problems
Stop triaging by hand.
Create a free account — 100 credits per month, no credit card. Or keep browsing to find the use case that matches your workflow.