Webhooks
List Outbound Webhook Event Types
Returns the full catalog of subscribable events. Each entry includes the wire `event` name, human `label`/`description`, UI `group`, the `required_scope` needed to subscribe and view samples, and a one-record `sample_payload` shaped exactly like the live webhook payload. Requires the `webhooks:manage` scope.
Get Outbound Event Sample Payload
Returns up to 3 most-recent real records for the named event, each shaped exactly like the live webhook payload. Backs sample-record discovery for connected apps. Returns an empty `data` array if the tenant has no matching records yet.
List Webhook Subscriptions
Paginated list of every webhook subscription on the tenant. The signing `secret` is never included here — it is shown only once in the create response. Requires the `webhooks:manage` scope.
Create Webhook Subscription
Create a subscription. Body fields:
Get Webhook Subscription
Returns a single subscription owned by the authenticated user/tenant. Never includes the signing `secret`. Requires the `webhooks:manage` scope.
Delete Webhook Subscription
Delete (unsubscribe) a subscription. Idempotent — always returns 204, even if no matching row existed (clients may retry unsubscribe calls). Requires the `webhooks:manage` scope.
List Deliveries
Paginated delivery log for one subscription, newest first. Each row captures one delivery attempt: HTTP `response_status`/`response_body`, `duration_ms`, `attempt` number, whether it `succeeded`, and whether it was `throttled` (dropped before dispatch because the tenant's per-minute outbound rate cap was hit — `succeeded: false`, `attempt: 0`, `response_status: null`). The full signed `payload` that was (or would have been) sent is included. Requires the `webhooks:manage` scope.
Send Test Delivery
Send a synchronous test delivery to the subscription's target URL with a signed `{ '_test': true }` payload. Runs inline (not queued) so the UI can show the result immediately, and records a row in the delivery log regardless of outcome. Always returns 200 with the generated `delivery_id` even if the target responds with an error (inspect the delivery log for the captured status). Requires the `webhooks:manage` scope.