List an endpoint's deliveries
GET/v1/webhook-endpoints/{endpointId}/deliveries
The endpoint's deliveries, newest first, for 30 days: status, attempts, the receiver's last status code and error, and when a pending one is tried again. No payload is stored.
Permissions: any valid key · Kind: read · Cost: 1 unit
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
endpointId |
uuid | yes |
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
status |
"pending" | "sending" | "succeeded" | "failed" | "skipped" | ||
limit |
integer | 1–100, default 25 | |
cursor |
string | max 500 chars |
Response 200
| Field | Type | Required | Description |
|---|---|---|---|
object |
"list" | yes | |
data |
object[] | yes | |
data[].object |
"webhook_delivery" | yes | |
data[].id |
uuid | yes | |
data[].endpointId |
uuid | yes | |
data[].eventId |
uuid | yes | Also the webhook-id header the receiver got. |
data[].eventType |
string | yes | |
data[].status |
"pending" | "sending" | "succeeded" | "failed" | "skipped" | yes | |
data[].attempts |
integer | yes | |
data[].nextAttemptAt |
string | null | yes | When it is tried again; null unless pending. |
data[].lastStatusCode |
integer | null | yes | |
data[].lastError |
string | null | yes | |
data[].lastDurationMs |
integer | null | yes | |
data[].createdAt |
string | yes | |
data[].updatedAt |
string | yes | |
nextCursor |
string | null | yes |
Errors
Errors are problem details. Besides the refusals described above, any call like this one can return:
invalid_request— Invalid requestunauthorized— Missing or invalid API keyinsufficient_scope— Missing permissionrate_limited— Rate limit reachednot_found— Not found