- PERSONA
- Detection Engineer
- CATEGORY
- Integration
- ENDPOINTS
- 4 used
- UPDATED
- April 2026
One threat intelligence API for your SIEM, detections, and dashboards
In-house TI aggregation is a maintenance tax
- Each TI source ships a different auth model (header token, query param, basic auth, OAuth) and a different error shape.
- Rate limits diverge: VT is per-minute, AbuseIPDB is per-day, Shodan is per-query-credit — the glue code has to reconcile all three.
- Response schemas change under you — detection rules break silently when a provider renames a field.
- Key rotation across six vendors is a quarterly chore the on-call team inherits.
“Each TI source ships a different auth model (header token, query param, basic auth, OAuth) and a different error shape.”
The endpoints that solve it
Normalized IOC enrichment
Accepts an indicators[] array of mixed IPs, domains, URLs, and hashes. Each indicator returns a single normalized verdict aggregated across up to 11 sources per IP (VirusTotal, AbuseIPDB, GreyNoise, Shodan, Censys, OTX, urlscan, Pulsedive, ThreatFox, Hybrid Analysis, IPVoid), 8 per domain/URL, 6 per hash.
Threat-actor profile
Generate a structured written brief on a named threat actor — TTPs, associated malware families, historic victimology. Feeds analyst dashboards or the 'context' panel on a detection alert.
Detection-rule generation
Given an IOC set or an observed pattern, generate a draft detection rule in Sigma, YARA, or SIEM-native syntax. Useful as a starting point for rule engineering on novel campaigns; always reviewed before production.
Stable response schema
All response fields are versioned under /v1. Additive changes are announced in the changelog; breaking changes bump the major version. Your SIEM's ingest pipeline does not rebase every quarter.
The canonical detection-engineering integration
import os, requests
API = "https://api.dfir-lab.ch"
KEY = os.environ["DFIR_API_KEY"]
HDRS = {
"Authorization": f"Bearer {KEY}",
"Content-Type": "application/json",
}
def enrich(indicators: list[dict]) -> dict:
"""Called from the SIEM adapter when a rule fires."""
r = requests.post(
f"{API}/v1/enrichment/lookup",
json={"indicators": indicators},
headers=HDRS,
timeout=30,
)
r.raise_for_status()
return r.json()
# Example: a detection rule fires on outbound traffic to an unusual IP
result = enrich([
{"type": "ip", "value": "45.155.205.233"},
{"type": "domain", "value": "update-services.top"},
])
# result["indicators"][i] includes:
# verdict -> clean | suspicious | malicious
# confidence -> 0.0 .. 1.0
# sources -> per-source raw detail
# sources_consulted, first_seen, last_seen, tags
# Optional: generate a detection-rule draft for this pattern
rule_draft = requests.post(
f"{API}/v1/ai/detect",
json={"indicators": result["indicators"], "format": "sigma"},
headers=HDRS,
).json()- 01Step 01
Adapter
Drop a thin HTTP wrapper into your detection pipeline or SIEM ingestion layer. One function, one auth scheme, one retry path.
- 02Step 02
Enrich on rule fire
When a detection rule fires, submit the observed IOCs to /v1/enrichment/lookup. Attach the normalized verdict to the alert payload.
- 03Step 03
Route
Use the aggregated verdict and confidence score to drive routing — malicious + high-confidence escalates to on-call; clean + high-confidence suppresses the alert with an audit trail.
- 04Step 04
Contextualize
For analyst-facing dashboards, pull threat-actor context with /v1/ai/threat-profile and attach it to the alert detail view.
- 05Step 05
Iterate
For novel patterns, /v1/ai/detect drafts a Sigma / YARA / KQL rule scoped to the observed IOCs. Review, tune, promote to production.
Pricing that tracks your workload
- 01
Lean detection team — 40 alerts/day × 2 IOCs each
40 × 2 × 3 × 22 business days = 5,280 credits/monthExceeds Professional (2,500) — move to Professional + 5,000-credit top-up, or Enterprise if traffic grows. - 02
Dashboard-only usage — 20 enrichments/day
20 × 3 × 22 = 1,320 credits/monthFits Professional ($99, 2,500 credits) with headroom; Starter ($29, 500) is too tight for sustained daily use. - 03
Small team evaluation — 5 enrichments/day
5 × 3 × 22 = 330 credits/monthFits Starter ($29, 500 credits) comfortably with ~170 credits spare for occasional AI rule drafts.
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 /ioc-check — no signup
Paste an IP, domain, URL, or hash in the browser. Same aggregation engine as the API, rate-limited per IP — useful for sanity-checking the verdict shape before wiring it into your SIEM.
API reference
Full schema, error codes, rate limits, and copy-ready code snippets for every endpoint referenced above.
Frequently asked
- Q / 01
- It is an on-demand enrichment API — you submit indicators and receive normalized verdicts. It is not a push feed of curated indicators. If your architecture expects a STIX/TAXII stream, this is complementary rather than a replacement.
- Q / 02
- The endpoint is designed to degrade gracefully. Each response includes a sources_consulted array — if GreyNoise or AbuseIPDB times out on a request, the aggregate verdict is computed from the sources that did respond, and the missing source is flagged in the response rather than failing the whole call.
- Q / 03
- All endpoints are versioned under /v1. Additive changes (new fields) are announced in the changelog; breaking changes bump the major version and run both versions in parallel during the migration window. You should not need to rewrite parsers on a regular cadence.
- Q / 04
- Yes — the endpoint is a plain HTTP POST with a Bearer token, which every major SIEM can call from a search command, an ingest enrichment action, or a playbook. The Splunk-specific pattern is covered in a separate use case.
- Q / 05
- The response JSON maps cleanly to STIX 2.1 Indicator objects — there is no first-party STIX renderer yet, but the field mapping is documented and teams commonly run the translation in their own pipeline. A native bridge is on the roadmap.
- Q / 06
- Commercial tiers of the big three TI sources run into four-to-five-figure annual spend before you count the engineering time to stitch them together. A Professional plan covers most detection-engineering workloads at $99/mo flat with no glue code, which is usually the real win — the money saved is secondary to the team-hours not spent on adapter maintenance.
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.