Webhooks Reference
Outbound webhook management. For the concept overview, see Events and Webhooks. For advanced deployment patterns, see Webhooks Deep Dive.
Required permission: webhooks:manage
GET /v1/webhooks#
List webhooks for the tenant.
POST /v1/webhooks#
Register a webhook.
1 2 3 4 5 6 7 8 9 10 | |
Fields:
| Field | Notes |
|---|---|
url |
HTTPS URL to POST events to. Must be publicly reachable |
events |
Array of event types to subscribe to |
secret |
Shared secret for HMAC signature. Generate with openssl rand -hex 32 |
status |
active / inactive. Inactive webhooks don't receive deliveries |
max_retries |
Max retry attempts on failure. Default 5 |
GET /v1/webhooks/{webhook_id}#
Get webhook details.
PUT /v1/webhooks/{webhook_id}#
Update webhook (URL, events, secret, status, retry policy).
DELETE /v1/webhooks/{webhook_id}#
Delete a webhook. Immediate effect; any in-flight deliveries are discarded.
POST /v1/webhooks/{webhook_id}/test#
Fire a synthetic test event to the webhook URL, for verifying setup.
Response:
1 2 3 4 5 6 7 8 | |
GET /v1/webhooks/{webhook_id}/deliveries#
List recent delivery attempts.
Query params: limit, status (success / failed / pending), since.
Response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Delivery format#
Each delivery is an HTTP POST:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Return 2xx within 10 seconds for success. Any other response (including timeout) is a failure.
Signature verification#
HMAC-SHA256 of the raw request body, keyed by the webhook's secret. See Webhooks (concepts) for sample code.
Retry schedule#
Failed deliveries retry with exponential backoff:
- Attempt 2: 30 seconds after first failure
- Attempt 3: 2 minutes
- Attempt 4: 10 minutes
- Attempt 5: 30 minutes
- Attempt 6: 2 hours
After max_retries attempts, the delivery is marked permanently failed.
After 50 consecutive failures on any events, the webhook is auto-disabled. You get a webhook.auto_disabled event (if another webhook subscribes to it) and an admin UI alert.
Event types#
See Events and Webhooks for the full event type list. Common ones:
request.completed,request.failedbudget.soft_limit_reached,budget.hard_limit_reachedscaikey.user.created,scaikey.user.updated- Module-specific:
scaicore.*,scaiqueue.*,scaibunker.*,scaimatrix.*
Replay#
Replay events that missed delivery (e.g., after your endpoint was down):
1 2 | |
Replays send events still in the event bus (default retention: 100K entries or 7 days, whichever is first).