Skip to content

Threat intelligence API / Reference / Alerts

Alerts endpoints

Alert rules, CVE alert rules and the webhooks they deliver to, with dry-run and send-test, plus what fired. Starter and up. Starter and up.

POST /alert-rules · GET /alert-rules · POST /cve-alerts · GET /cve-alerts · GET /webhooks · POST /webhooks · PATCH /webhooks/{webhook_id} · DELETE /webhooks/{webhook_id} · POST /webhooks/{webhook_id}/test · GET /alert-rules/{rule_uuid} · PATCH /alert-rules/{rule_uuid} · DELETE /alert-rules/{rule_uuid} · POST /alert-rules/{rule_uuid}/test · POST /alert-rules/{rule_uuid}/send-test · GET /cve-alerts/{rule_uuid} · PATCH /cve-alerts/{rule_uuid} · DELETE /cve-alerts/{rule_uuid} · POST /cve-alerts/{rule_uuid}/test

POST /alert-rules

Create an alert rule (personal or managed-customer scoped) · 1 credit per call

Create a personal alert rule that fires when its conditions match a new threat cluster. Tier-capped conditions (5 most tiers, 50 Business). Delivery via your webhook(s) and/or email. Omit `mssp_customer_id` for a personal rule, or set it to scope the rule to one of your managed customers (Business plan).

Request body · AlertRuleCreate

FieldTypeMeaning
name *stringRule name (required).
descriptionstring or nullOptional description.
logic_operatorstring'AND' (all conditions) or 'OR' (any).
conditions *array of AlertCondition1+ conditions. Tier-capped (5 for most, 50 for Business).
notify_webhookbooleanDeliver matches to your webhook(s).
notify_emailbooleanDeliver matches by email.
notify_email_addressstring or nullCustom email (must be your domain). Defaults to your account email.
webhook_idinteger or nullSpecific webhook id to route to (must be yours). Omit to use all.
mssp_customer_idinteger or nullScope this rule to one of your managed customers (Business). Omit for a personal rule. If set, any webhook_id must be scoped to the same customer or be unscoped
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/alert-rules"

GET /alert-rules

List your alert rules · 1 credit per call

Parameters

NameInTypeRequiredMeaning
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" \
  "https://threatcluster.io/api/public/v1/alert-rules"

POST /cve-alerts

Create a CVE alert rule (personal or managed-customer scoped) · 1 credit per call

Create a personal CVE alert rule. Fires when a CVE matches the filters (vendor/product/CWE/severity/CVSS/EPSS/KEV/exploit/ransomware/keywords), combined by match_logic. Shares the alert-rule tier quota.

Request body · CveAlertRuleCreate

FieldTypeMeaning
name *stringRule name (required).
descriptionstring or null
match_logicstring or null'AND' or 'OR' across the filters set.
vendorsarray or nullAffected vendor names to match.
productsarray or nullAffected product names.
cwe_idsarray or nullCWE ids, e.g. 'CWE-79'.
severityarray or nullCVSS severities: CRITICAL/HIGH/MEDIUM/LOW.
cvss_minnumber or nullMinimum CVSS v3 base score.
cvss_maxnumber or nullMaximum CVSS v3 base score.
epss_minnumber or nullMinimum EPSS probability (0-1).
epss_percentile_minnumber or nullMinimum EPSS percentile (0-1).
require_kevboolean or nullOnly CVEs on CISA KEV.
require_exploitboolean or nullOnly CVEs with a public exploit/PoC.
ransomware_usearray or nullCISA ransomware-use flag values (e.g. ['Known']).
keywordsarray or nullFree-text keyword filters on the CVE.
notify_webhookboolean
notify_emailboolean
webhook_idinteger or nullSpecific webhook id (must be yours).
mssp_customer_idinteger or nullScope this CVE rule to one of your managed customers (Business). Omit for a personal rule.
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/cve-alerts"

GET /cve-alerts

List your CVE alert rules · 1 credit per call

Parameters

NameInTypeRequiredMeaning
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" \
  "https://threatcluster.io/api/public/v1/cve-alerts"

GET /webhooks

List your webhooks · 1 credit per call

Parameters

NameInTypeRequiredMeaning
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" \
  "https://threatcluster.io/api/public/v1/webhooks"

POST /webhooks

Create a webhook (HTTPS, port 443, public host) · 1 credit per call

Request body · WebhookCreatePublic

FieldTypeMeaning
webhook_url *stringHTTPS URL on port 443; internal and private hosts are rejected.
webhook_typestringjson | slack | discord | teams
secret_keystring or nullOptional HMAC-SHA256 secret; json deliveries carry X-ThreatCluster-Signature.
namestring or null
mssp_customer_idinteger or null
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/webhooks"

PATCH /webhooks/{webhook_id}

Update a webhook · 1 credit per call

Parameters

NameInTypeRequiredMeaning
webhook_idpathintegeryes

Request body · WebhookUpdatePublic

FieldTypeMeaning
webhook_urlstring or null
webhook_typestring or null
secret_keystring or null
is_activeboolean or null
namestring or null
mssp_customer_idinteger or null
curl -H "X-API-Key: $TC_KEY" -X PATCH \
  "https://threatcluster.io/api/public/v1/webhooks/{webhook_id}"

DELETE /webhooks/{webhook_id}

Delete a webhook · 1 credit per call

Parameters

NameInTypeRequiredMeaning
webhook_idpathintegeryes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X DELETE \
  "https://threatcluster.io/api/public/v1/webhooks/{webhook_id}"

POST /webhooks/{webhook_id}/test

Send a test payload to a webhook · 1 credit per call

Parameters

NameInTypeRequiredMeaning
webhook_idpathintegeryes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/webhooks/{webhook_id}/test"

GET /alert-rules/{rule_uuid}

Get one alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" \
  "https://threatcluster.io/api/public/v1/alert-rules/{rule_uuid}"

PATCH /alert-rules/{rule_uuid}

Update an alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes

Request body · AlertRuleUpdate

FieldTypeMeaning
namestring or null
descriptionstring or null
logic_operatorstring or null'AND' or 'OR'.
conditionsarray or null
is_activeboolean or null
notify_webhookboolean or null
notify_emailboolean or null
notify_email_addressstring or nullEmpty string clears it.
webhook_idinteger or null0 clears it.
mssp_customer_idinteger or nullThe managed customer the rule belongs to, if not personal.
curl -H "X-API-Key: $TC_KEY" -X PATCH \
  "https://threatcluster.io/api/public/v1/alert-rules/{rule_uuid}"

DELETE /alert-rules/{rule_uuid}

Delete an alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X DELETE \
  "https://threatcluster.io/api/public/v1/alert-rules/{rule_uuid}"

POST /alert-rules/{rule_uuid}/test

Dry-run a rule against the last 7 days (sends nothing) · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/alert-rules/{rule_uuid}/test"

POST /alert-rules/{rule_uuid}/send-test

Fire a test notification to the rule's webhooks · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/alert-rules/{rule_uuid}/send-test"

GET /cve-alerts/{rule_uuid}

Get one CVE alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" \
  "https://threatcluster.io/api/public/v1/cve-alerts/{rule_uuid}"

PATCH /cve-alerts/{rule_uuid}

Update a CVE alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes

Request body · CveAlertRuleUpdate

FieldTypeMeaning
namestring or null
descriptionstring or null
is_activeboolean or null
match_logicstring or null
vendorsarray or null
productsarray or null
cwe_idsarray or null
severityarray or null
cvss_minnumber or null
cvss_maxnumber or null
epss_minnumber or null
epss_percentile_minnumber or null
require_kevboolean or null
require_exploitboolean or null
ransomware_usearray or null
keywordsarray or null
notify_emailboolean or null
notify_webhookboolean or null
webhook_idinteger or null
mssp_customer_idinteger or null
curl -H "X-API-Key: $TC_KEY" -X PATCH \
  "https://threatcluster.io/api/public/v1/cve-alerts/{rule_uuid}"

DELETE /cve-alerts/{rule_uuid}

Delete a CVE alert rule · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X DELETE \
  "https://threatcluster.io/api/public/v1/cve-alerts/{rule_uuid}"

POST /cve-alerts/{rule_uuid}/test

Preview which CVEs from the last 30 days a rule matches · 1 credit per call

Parameters

NameInTypeRequiredMeaning
rule_uuidpathstringyes
mssp_customer_idqueryinteger or null
curl -H "X-API-Key: $TC_KEY" -X POST \
  "https://threatcluster.io/api/public/v1/cve-alerts/{rule_uuid}/test"