Webhooks
More ways to use this page
List the deliveries of a webhook
GET/v1/
TypeScript sendora
Python sendora
Key sk_… a server key
Every event handed to the webhook, newest first, one page at a time, with the outcome of the last attempt.
Parameters
limitin queryinteger (1 to 1000)Page size, 1 to 1000.
afterin querystring (uuid)The
nextvalue of the previous page.statusin query"pending" | "delivered" | "dead"idin pathstring (uuid)requiredThe webhook id.
Responses
200A page of the webhook's deliveries, newest first.
deliveriesarray of objectrequireddeliveryIdstring (uuid)requiredevent"delivered" | "bounced" | "deferred" | "spam_complaint" | "unsubscribed" | "cap_ requiredwarning" | "cap_ reached" | "inbound" messageIdstring (uuid) or nullrequiredNull for an event about usage rather than a message.
inboundMessageIdstring (uuid) or nullrequiredThe received message an inbound event is about; null for every other event.
status"pending" | "delivered" | "dead"requiredpending is waiting for its next attempt; dead gave up and can be replayed.
attemptsintegerrequirednextAttemptAtstring (date-time) or nullrequiredWhen the next attempt is due, while pending.
lastStatusCodeinteger or nullrequiredThe HTTP status the endpoint last answered.
lastErrorstring or nullrequiredWhy the last attempt failed, when it did.
deliveredAtstring (date-time) or nullrequiredcreatedAtstring (date-time)required
nextstring (uuid) or nullrequiredPass as
afterfor the next page; null on the last.
Example (18 lines)
{
"deliveries": [
{
"deliveryId": "9e8d7c6b-5a4f-4e3d-9c2b-1a0f9e8d7c60",
"event": "delivered",
"messageId": "5f432ffd-c005-499b-aa3a-5b8a088ea20e",
"inboundMessageId": null,
"status": "delivered",
"attempts": 1,
"nextAttemptAt": null,
"lastStatusCode": 200,
"lastError": null,
"deliveredAt": "2026-09-15T12:00:03.000Z",
"createdAt": "2026-09-15T12:00:02.000Z"
}
],
"next": null
}Errors
Every error answers error, the code, and message, a sentence for a person. A code that adds fields is shown in full below the table.
| Code | Status | Meaning |
|---|---|---|
invalid_ | 400 | The body, the query or a header does not match what the route takes. |
unauthorized | 401 | The key is missing, malformed or revoked. |
wrong_ | 403 | The key is of the other kind: a server key (sk_) where an account key (ak_) is needed, or the reverse. The message names the kind the operation takes. |
not_ | 404 | No such webhook of this server. |
invalid_request
issuesarray of objectOne entry per invalid field; absent when a header is wrong.
pathstringrequiredThe field, dotted, such as to.0.email; empty when the whole body is wrong.
messagestringrequired
Example
{
"error": "invalid_request",
"message": "The request is invalid: to.0: Invalid email address",
"issues": [
{
"path": "to.0",
"message": "Invalid email address"
}
]
}