List deliveries
What BlueBot tried to deliver to this webhook in the last 30 days, newest first, with each answer’s status.
/v1/webhooks/{id}/deliveries
What BlueBot tried to deliver to this webhook in the last 30 days, newest first, with each answer’s status.
Needs a key with the webhooks:manage scope.
Path parameters
idstringrequiredThe webhook’s id.
Starts with
wh_.
Query parameters
statestringOne of
pending,delivered,gave_up,dropped.limitintegerHow many to return, 1 to 100. Default 25.
1 to 100.Default
25.cursorstringThe
next_cursorof the page before. Leave it out for the first page.Up to 200 characters.
Example
/v1/webhooks/wh_1Hq2LxW9cVbN3mKpRtYs0a/deliveriescurl "https://usebluebot.com/api/v1/webhooks/wh_1Hq2LxW9cVbN3mKpRtYs0a/deliveries" \
-H "Authorization: Bearer $BLUEBOT_API_KEY"Response
200: A page of deliveries.
object"list"requireddataarray of WebhookDeliveryrequiredShow its 16 fieldsHide its fields
idstringrequiredA dlv_ id.
Starts with
dlv_.object"webhook_delivery"requiredwebhook_idstringrequiredA wh_ id.
Starts with
wh_.event_idstringrequiredA evt_ id.
Starts with
evt_.event_typestringrequiredOne of
message.queued,message.sent,message.delivered,message.read,message.failed,message.unconfirmed,message.expired,message.canceled,message.received,message.edited,message.unsent,reaction.added,reaction.removed,chat.created,contact.created,contact.stopped,contact.unstopped,sequence.completed,broadcast.completed,automation.matched,device.online,device.offline,device.check_failed.testbooleanrequiredTrue for an example sent with
POST /v1/webhooks/{id}/test.statestringrequiredpending(trying, or waiting to try again),delivered,gave_upafter the last retry, ordropped.One of
pending,delivered,gave_up,dropped.attemptsintegerrequiredlast_statusinteger or nullrequiredThe HTTP status of the last try.
last_errorstring or nullrequiredWhy the last try failed, when there was no answer.
last_duration_msinteger or nullrequiredlast_response_bodystring or nullrequiredThe first 2 KB of what your endpoint answered on the last try, as text. Null when it answered with no body or not at all.
next_attempt_attimestamp or nullrequiredWhen it is tried next, while pending.
delivered_attimestamp or nullrequiredWhen a 2xx answered it.
replay_ofstring or nullrequiredThe delivery this one repeats, for a replay.
Starts with
dlv_.created_attimestamprequiredWhen it was made.
has_morebooleanrequiredWhether another page follows.
next_cursorstring or nullrequiredSend as
cursorfor the next page; null on the last.
{
"object": "list",
"data": [
{
"id": "dlv_1Hq2LxW9cVbN3mKpRtYs0a",
"object": "webhook_delivery",
"webhook_id": "wh_1Hq2LxW9cVbN3mKpRtYs0a",
"event_id": "evt_1Hq2LxW9cVbN3mKpRtYs0a",
"event_type": "message.received",
"test": false,
"state": "delivered",
"attempts": 1,
"last_status": 200,
"last_error": null,
"last_duration_ms": 182,
"last_response_body": "{\"ok\":true}",
"next_attempt_at": null,
"delivered_at": "2026-11-13T19:44:13.000Z",
"replay_of": null,
"created_at": "2026-11-13T19:44:12.000Z"
}
],
"has_more": false,
"next_cursor": null
}Errors
Every refusal has the same envelope and a page of its own. These are the ones this operation can give.
| Code | Status | What it means |
|---|---|---|
| 401 | The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API. | |
| 403 | The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope. | |
| 429 | Too many requests. A key may make 120 requests a minute. The RateLimit header says how many are left, and Retry-After how long to wait. | |
| 500 | Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe. | |
| 400 | Something in the request doesn’t fit: a missing or malformed field, a bad id, or a combination the endpoint refuses. details names each field. | |
| 404 | There is no such thing on this account. Ids are prefixed by kind, so a message id starts with msg_. |
Try it
Call this operation from the page with your own key. The key stays in this tab and is forgotten when you leave.