---
title: "Create a change alert (webhook)"
method: POST
path: "/v1/alerts"
---

# Create a change alert (webhook)

`POST /v1/alerts`

## Request

- Base URL: `https://domaindrift.io`
- URL: `https://domaindrift.io/v1/alerts`
- Auth: API key in header `X-DomainDrift-Key`

Subscribe a public https webhook to material changes on a domain, a cohort tag, or the whole catalog. Every delivery carries X-DomainDrift-Signature = HMAC-SHA256(secret, body). The signing secret is returned once. Email channel is not available yet and is rejected.

## Request body

- object
  - `scope_kind` 'domain' | 'tag' | 'catalog', required
  - `scope_value` string: domain, or tag "key"/"key:value"; omit for catalog
  - `channel` 'webhook'
  - `target` string, required: public https webhook URL
  - `min_weight` integer: fire only when change significance >= this
  - `type_prefix` string: optional change-type prefixes, comma-separated - any one matching fires. A prefix covers itself and its dotted children, so "tls" covers tls.issuer.changed but never tlsfoo.changed. e.g. "tls" or "dns, tls, whois"

## Response `201`

Created - body includes signing_secret (shown once)

## Other responses

- `400`: Invalid scope/target, or channel not available (email), or limit reached

---

[API](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api.md) · [All operations](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domaindrift/apis/domaindrift-continuous-internet-telemetry-api/revisions/eb8e3f45736c?raw)
