Skip to main content
Base path: https://api.aegis-kyt.com/v1/webhooks · Auth: X-API-Key: aeg_<48 chars>

Register a subscription

Response (HTTP 200):
secret is returned ONLY on creation. Store it server-side immediately — you’ll need it to verify the X-Aegis-Signature header on every delivery, and we never return it again. Lost the secret? Delete the subscription and create a new one.
Validation:
  • url must start with https:// (or http://localhost for dev).
  • events must be a non-empty subset of the allowlist (see Event schemas for the current set).
  • failure_threshold is optional, defaults to 5, range 1..50. Auto-disable kicks in after this many consecutive gave_up deliveries.

List subscriptions

secret is never returned by this endpoint or by GET /v1/webhooks/{id}.

Get one subscription

Returns 404 if the subscription doesn’t exist or isn’t owned by your API key (IDOR guard).

Update — toggle / change events

Setting is_active: true also resets consecutive_failures to zero, so this is the canonical way to re-enable a subscription after auto-disable. Both fields are optional — send only what you want to change.

Delete

Cascades to the aegis_webhook_deliveries history; you can’t get this data back. Pending deliveries already queued in BackgroundTasks may still fire once after delete (best-effort).

Send a synthetic test event

Response:
What happens next:
  1. We build a synthetic payload for the requested event_type — sentinel ids (00000000-…), a top-level synthetic: true field, and minimum-viable fields per event_type.
  2. We sign + POST it to just this subscription’s URL (the only_subscription_id filter — your other subs won’t see it).
  3. Retry policy is the same as production events: 5 attempts over ~1 h. This intentionally lets you verify your retry / idempotency handling, not just first-call signature checks.

Request body

Errors

Recipes

Verify your handler before going live

Re-enable after auto-disable

(also resets consecutive_failures to 0)