webhook_dispatch.
Every call below requires a bearer token whose user holds the matching
webhook:* / webhook-event:* permission. In the first release those
permissions are granted to the administrator role only.1. Create the webhook
The response is the public webhook row plus
secret, returned once:
2. Choose events
Look up the catalogue ids you need, then replace the subscription set in one call. The body is the full desired list — events not included are unsubscribed (soft-deleted), events already present are kept, new ones are inserted.events must contain at least one id. webhook.test is always kept on
the set (create and replace-set prepend it) so the Test action has a
subscription to record against.
3. Activate and deactivate
Webhooks are created active. Toggle with:consecutive_failures,
disabled_at and disabled_reason, which is how an automatically disabled
subscriber is brought back — see
Retries and failures.
4. Rotate the secret
secret, again only once. There is
no overlap window: every delivery signed after the call uses the new value.
Deploy the new secret on your side first, or expect a short burst of 401
responses that the platform will retry on the backoff schedule.
5. Update or remove
PATCH /api/v3/webhook/webhook/{id}— partial update ofurl,name,description,is_global,account. URL rules apply again.DELETE /api/v3/webhook/webhook/{id}— soft delete; the ledger is kept.DELETE /api/v3/webhook/webhook/{id}/purge— hard delete.
From Horizon Enterprise
The same flows are available under Webhooks in Horizon Enterprise (administrator role): the form shows the secret in a one-shot alert after
create and rotate, the event picker groups the catalogue by domain, and the
detail screen lists deliveries with filters, last_error and a Replay
action.