Docs
Dashboard
API reference / WebhooksBeta

List deliveries

Newest first: each delivery's status, attempts (with a short history), the last answer's status, time and first 1 KB, and the error. The body that was sent is kept 7 days (then payload is null); log entries are kept 30 days.

GET/v1/webhooks/{id}/deliveries

Request

Method and pathGET/v1/webhooks/{id}/deliveries
Base URLhttps://api.boxline.dev
AuthenticationYour API key in the x-api-key header (or Authorization: Bearer). The examples read it from BOXLINE_API_KEY.

Path parameters

NameTypeDefaultAllowed valuesDescription
idrequiredstring––

Query parameters

NameTypeDefaultAllowed valuesDescription
afterstring––The next value of the previous page (same filters and sort). Opaque; do not build it yourself.
limitinteger20–From 1 to 100.
statusstring–pending, delivered, failed
curl "https://api.boxline.dev/v1/webhooks/$WEBHOOK_ID/deliveries?status=failed" \  -H "x-api-key: $BOXLINE_API_KEY"

Responses

200 OK

A page of deliveries.

Fields

NameTypeDefaultAllowed valuesDescription
dataobject[]––
data[].idstring––
data[].endpointIdstring––
data[].eventIdstring––The event's id (the same on every endpoint and every attempt).
data[].eventTypestring––
data[].testboolean––
data[].statusstring–pending, delivered, failedpending: waiting for its next attempt; failed: no more attempts.
data[].attemptsinteger––
data[].nextAttemptAtstring | null––Format: date-time.
data[].lastAttemptAtstring | null––Format: date-time.
data[].deliveredAtstring | null––Format: date-time.
data[].responseStatusinteger | null––The last answer's HTTP status (null when there was none).
data[].responseBodystring | null––The first 1 KB of the last answer (kept 7 days).
data[].durationMsinteger | null––
data[].errorstring | null––Why the last attempt failed.
data[].errorCodestring | null–bad_status, gone, timeout, connection_failed, tls_failed, address_not_allowed, gateway_unavailable, endpoint_disabled, project_suspended, payload_expired, queue_full, signing_failed, nullWhy a delivery (or an attempt) failed; null when delivered. The last five are deliveries that were never sent (queue_full: the project already had 10,000 deliveries waiting).
data[].historyobject[]––The last 20 attempts.
data[].history[].atstring––Format: date-time.
data[].history[].statusinteger | null––
data[].history[].durationMsinteger––
data[].history[].errorstring | null––
data[].history[].errorCodestring | null–bad_status, gone, timeout, connection_failed, tls_failed, address_not_allowed, gateway_unavailable, endpoint_disabled, project_suspended, payload_expired, queue_full, signing_failed, nullWhy a delivery (or an attempt) failed; null when delivered. The last five are deliveries that were never sent (queue_full: the project already had 10,000 deliveries waiting).
data[].payloadany––The body that was sent (the event); null after 7 days.
data[].createdAtstring––Format: date-time.
nextstring | null––Pass it back as after for the next page; null on the last page.
Response 200
{  "data": [    {      "id": "dlv_4fJx0aQm2Lk9Pz7N",      "endpointId": "…",      "eventId": "…",      "eventType": "…",      "test": false,      "status": "pending",      "attempts": 0,      "nextAttemptAt": "2026-09-29T10:00:00.000Z",      "lastAttemptAt": "2026-09-29T10:00:00.000Z",      "deliveredAt": "2026-09-29T10:00:00.000Z",      "responseStatus": 0,      "responseBody": "…",      "durationMs": 0,      "error": "…",      "errorCode": "bad_status",      "history": [        {          "at": "2026-09-29T10:00:00.000Z",          "status": 0,          "durationMs": 0,          "error": "…",          "errorCode": "bad_status"        }      ],      "payload": null,      "createdAt": "2026-09-29T10:00:00.000Z"    }  ],  "next": "eyJvIjoiY3JlYXRlZF9kZXNjIiwidCI6IjIwMjYtMDktMjlUMTA6MDA6MDAuMTIzNDU2WiIsImkiOiI2YzFmIn0"}

Errors

Errors have a matching HTTP status and the same body. code is stable, so check it in your code; message is for people. See Errors and request ids.

StatusCodesWhen
400 Bad Requestinvalid_request, invalid_json, invalid_cursor, invalid_idempotency_key, invalid_extension, variables_with_extensions, terms_not_accepted, invalid_reset_token, invalid_confirmation_code, wrong_password, no_password, invalid_next, invalid_oauth_tokenThe request is not valid.
401 UnauthorizedunauthorizedMissing or invalid API key.
404 Not Foundnot_found, invite_not_found, provider_unavailableNo such thing in this project (or organization), or no such route.
Error body
{  "error": {    "code": "not_found",    "message": "session not found",    "requestId": "req_4fJx0aQm2Lk9Pz7N"  }}

Learn more

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.