API reference · Webhooks
List all deliveries
Deliveries across every endpoint, newest first.
- Authentication
- Bearer token
- Retries
- Safe to repeat
- Body
- None
- Version
- 2026-09-03
total comes back as -1: this is a keyset-paginated log with no count, for the reason given in endpoint_service.list_deliveries. Read has_more.
The payload is omitted from every row. Fifty deliveries carrying fifty payloads is a response nobody asked for; GET /deliveries/{id} has it.
Query parameters
webhook_idstring (uuid) | nulleventstring | nullUp to 64 characters
failed_onlybooleanDefault: false
limitintegerDefault: 20·≥ 1 and ≤ 100
cursorstring | nullUp to 512 characters
Responses
- 200OKapplication/json
PaginatedResponse_WebhookDeliveryResponse_
itemsarray of WebhookDeliveryResponserequired12 fields · WebhookDeliveryResponse
attemptsintegerrequiredcreated_atstring (date-time)requireddelivered_atstring (date-time) | nullrequiredduration_msinteger | nullrequiredeventstringrequiredidstring (uuid)requiredresponse_bodystring | nullrequiredresponse_statusinteger | nullrequiredstatusstringrequiredwebhook_idstring (uuid)requiredpayloadobject | nullreplay_of_idstring (uuid) | null
pageintegerrequiredpage_sizeintegerrequiredtotalintegerrequiredhas_morebooleanDefault: false
next_cursorstring | null
5 response headers
- RateLimit-Limit
Requests permitted in the current window.
- RateLimit-Remaining
Requests left in the current window. Back off before it reaches 0.
- RateLimit-Reset
Seconds until the current window resets.
- X-API-Version
The dated version of the API contract that served this response, e.g.
2026-09-03. Pin against it; it changes only when a response shape changes incompatibly.- X-Request-ID
Quote this in a support request to identify the call.
- 422Validation error
The shared error envelope, served as
application/problem+jsonwitherror.codeset to validation_error. Its details name each field that failed and why.
Example request
curl "https://api.integrable.cloud/api/webhooks/deliveries" \
-H "Authorization: Bearer $INTEGRABLE_API_KEY"Set INTEGRABLE_API_KEY first. The same call from the TypeScript or Python SDK takes the same fields.
Example response
{
"has_more": false,
"items": [
{
"attempts": 0,
"created_at": "2026-09-03T09:30:00Z",
"delivered_at": "2026-09-03T09:30:00Z",
"duration_ms": 0,
"event": "string",
"id": "01a0652b-3713-7ea1-a6c9-2e895389ec34",
"payload": {},
"replay_of_id": "01a0652b-3713-7ea1-a6c9-2e895389ec34",
"response_body": "string",
"response_status": 0,
"status": "string",
"webhook_id": "01a0652b-3713-7ea1-a6c9-2e895389ec34"
}
],
"next_cursor": "string",
"page": 0,
"page_size": 20,
"total": 0
}Generated from the schema above — the shape is exact, the values are placeholders.
Errors
Failures use one envelope on every endpoint, described in Retries, versioning and limits. The codes you are most likely to meet here:
validation_error· 422 — The payload was well-formed JSON but failed schema validation.unauthenticated· 401 — The request carried no API key, or one the API could not verify.forbidden· 403 — The key is valid, but it is not allowed to do this — either the scope is missing or the resource belongs to another workspace.rate_limited· 429 — Too many requests in the current window. The limit is per workspace, and some endpoints add a per-bot limit on top.
More Webhooks endpoints
- get/api/webhooksList webhooks
- post/api/webhooksCreate webhook
- get/api/webhooks/deliveries/{delivery_id}Get delivery
- post/api/webhooks/deliveries/{delivery_id}/replayReplay delivery
- get/api/webhooks/eventsList events
- get/api/webhooks/{webhook_id}Get webhook
- patch/api/webhooks/{webhook_id}Update webhook
- delete/api/webhooks/{webhook_id}Delete webhook
- post/api/webhooks/{webhook_id}/rotate-secretRotate secret
- post/api/webhooks/{webhook_id}/testTest webhook
Something here wrong or missing? Tell us — the documentation and the API are maintained by the same person, so a correction is a fix rather than a ticket.