REST API · Quickstart

Get integrated in five minutes.

Mint a key, list your brand findings, and look up an indicator. Three languages. Every snippet runs against the production API at https://securityalert.ai/api/v1; the auth header is the same shape everywhere. Full reference at /api/docs.

1Mint an API key

Sign in, navigate to Settings → API keys, click Create key, and copy the value. The token shows once and is never retrievable from storage. Format: sa_live_<32 hex chars>. Business and Enterprise plans only.

Each key is rate-limited at 120 requests/minute. The key inherits the owning user's RBAC permissions, so an Editor's key can't reach Owner-only endpoints.

2List your brand findings

Pull the active findings the key's owner can see. Filter by severity, source, brand_id, or first-seen-since timestamp.

curl -H "Authorization: Bearer $SA_KEY" \
     "https://securityalert.ai/api/v1/findings?severity=critical&limit=10"
import os, requests
r = requests.get(
    "https://securityalert.ai/api/v1/findings",
    headers={"Authorization": f"Bearer {os.environ['SA_KEY']}"},
    params={"severity": "critical", "limit": 10},
    timeout=10,
)
for f in r.json()["findings"]:
    print(f["risk_level"], f["variant_domain"], f["technique"])
const r = await fetch(
  "https://securityalert.ai/api/v1/findings?severity=critical&limit=10",
  { headers: { Authorization: `Bearer ${process.env.SA_KEY}` } }
);
const { findings } = await r.json();
findings.forEach(f => console.log(f.risk_level, f.variant_domain, f.technique));

3Look up an indicator

Universal lookup auto-detects the input type (CVE, IP, hostname, file hash, ASN, threat actor, ransomware group) and returns every place it appears across our threat-intel data.

curl -H "Authorization: Bearer $SA_KEY" \
     "https://securityalert.ai/api/v1/lookup?q=CVE-2024-3094"
import os, requests
r = requests.get(
    "https://securityalert.ai/api/v1/lookup",
    headers={"Authorization": f"Bearer {os.environ['SA_KEY']}"},
    params={"q": "CVE-2024-3094"},
    timeout=10,
)
data = r.json()
print(data["query"]["type"], data["total"], "matches")
for s in data["sections"]:
    print(f"- {s['label']}: {s['hits']} hit(s)")
const r = await fetch(
  "https://securityalert.ai/api/v1/lookup?q=CVE-2024-3094",
  { headers: { Authorization: `Bearer ${process.env.SA_KEY}` } }
);
const data = await r.json();
console.log(data.query.type, data.total, "matches");
data.sections.forEach(s => console.log(`- ${s.label}: ${s.hits} hit(s)`));

4Subscribe to release notes

Plug https://securityalert.ai/changelog.rss into your feed reader, ChatOps relay, or Pipedream / n8n automation to track every release as it ships. RSS 2.0, cached one hour. The same data drives the human-readable /changelog.

Full OpenAPI 3.1 spec: /api/openapi.json · Interactive docs: /api/docs · Integrations directory: /integrations