List webhook deliveries
The webhook_deliveries.list operation: GET /api/v1/webhook_deliveries in the REST API and the webhook_deliveries_list tool in the MCP server.
/api/v1/webhook_deliveriesLists the brand's webhook deliveries in the request's mode, newest first: one per event and endpoint, plus
test deliveries and redeliveries, each with its attempts (status code and the start of the response body).
Filter by endpointId, eventId or status (pending, succeeded, failed, canceled).
Paginate with limit (1–100, default 10) and starting_after (the next_cursor of the previous page).
At a glance
- REST:
GET /api/v1/webhook_deliveries - MCP tool:
webhook_deliveries_list - Operation ID:
webhook_deliveries.list - Scope: Brand
- Permission:
webhooks:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Pagination:
limit(at most 100) andstarting_after - Authentication: API key with the
webhooks:readscope - Since: M4
Request
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
endpointId | we_… ID | No | Only deliveries to this endpoint. |
eventId | evt_… ID | No | Only deliveries of this event. |
status | one of pending, succeeded, failed, canceled | No | |
limit | integer (1 to 100) | No | |
starting_after | whd_… ID | No |
Response
200 OK with a JSON object, a page of the list (newest first):
| Field | Type | Description |
|---|---|---|
object | "list" | |
data | array of object | |
data[].id | whd_… ID | |
data[].object | "webhook_delivery" | |
data[].endpointId | we_… ID | |
data[].brandId | brd_… ID | |
data[].livemode | boolean | |
data[].eventId | evt_… ID | |
data[].eventType | string | |
data[].trigger | one of event, test, redeliver | |
data[].redeliveryOf | whd_… ID or null | |
data[].status | one of pending, succeeded, failed, canceled | |
data[].attempt | integer (at least 0) | |
data[].maxAttempts | integer (at least 1) | |
data[].nextAttemptAt | date-time or null | |
data[].responseCode | integer or null | |
data[].canceledReason | one of endpoint_disabled, endpoint_deleted or null | |
data[].attempts | array of object | |
data[].attempts[].attempt | integer (at least 1) | |
data[].attempts[].at | date-time | |
data[].attempts[].outcome | one of succeeded, http_error, timeout, network_error, blocked | |
data[].attempts[].responseCode | integer or null | |
data[].attempts[].responseExcerpt | string or null | |
data[].attempts[].durationMs | integer (at least 0) or null | |
data[].attempts[].error | string or null | |
data[].createdAt | date-time | |
data[].updatedAt | date-time | |
has_more | boolean | |
next_cursor | whd_… ID or null |
Examples
An endpoint's delivery log
GET /api/v1/webhook_deliveries?endpointId=we_01m4tx5nj8emwbyf7y9vcf47z0
Authorization: Bearer or_test_…
Response (200):
{
"object": "list",
"data": [
{
"id": "whd_01m4tx5nj8emwbyf7y9vcf47z2",
"object": "webhook_delivery",
"endpointId": "we_01m4tx5nj8emwbyf7y9vcf47z0",
"brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
"livemode": false,
"eventId": "evt_01m4tx5nj8emwbyf7y9vcf47z4",
"eventType": "customer.created",
"trigger": "event",
"redeliveryOf": null,
"status": "succeeded",
"attempt": 2,
"maxAttempts": 15,
"nextAttemptAt": null,
"responseCode": 200,
"canceledReason": null,
"attempts": [
{
"attempt": 1,
"at": "2026-10-13T12:00:00.000Z",
"outcome": "http_error",
"responseCode": 503,
"responseExcerpt": "Service Unavailable",
"durationMs": 812,
"error": null
},
{
"attempt": 2,
"at": "2026-10-13T12:01:00.000Z",
"outcome": "succeeded",
"responseCode": 200,
"responseExcerpt": "ok",
"durationMs": 95,
"error": null
}
],
"createdAt": "2026-10-13T12:00:00.000Z",
"updatedAt": "2026-10-13T12:01:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A filter or pagination value is malformed. | Fix the fields listed in details.issues and send the request again. |
permission_denied | 403 | You can't see this brand's webhooks. | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, scope_required, resource_not_found, dry_run_not_supported, rate_limited, internal_error.