Skip to main content
A delivery is one attempt to send one event to one subscription. Endl records every one — the request sent, the response received, and each individual attempt. Every endpoint here requires the webhooks permission.
Mind the two similar paths: /api/v0/webhooks/events is the delivery log on this page, while /api/v0/events is the PULL event feed. The {id} in these paths is a delivery id, not an event id.

List deliveries

Your deliveries, newest first, with cursor pagination. Returns data.deliveries[], data.count, and data.nextCursor.

Query parameters

uuid
Scope results to one subscription.
enum
Filter by delivery status. Repeatable — ?status=FAILED&status=EXPIRED.
string
Filter by event type. Repeatable.
string
Pagination cursor.
integer
default:"25"
Page size, maximum 100.
200 · 400 bad limit, bad cursor, bad parameter, or missing permission · 401 / 503 authentication

Get a delivery

The full record of one delivery, including what Endl sent, what your endpoint replied, and every attempt.
enum
integer
Attempts made against attempts allowed. A retry adds three.
integer | null
HTTP status of the most recent attempt.
enum / string
The most recent failure class and its message.
object | null
The payload Endl sent, parsed. Leaf values are strings.
string | null
The X-WEBHOOK-TIMESTAMP and X-WEBHOOK-SIGNATURE Endl sent.
any / boolean
Your endpoint’s reply, parsed if it was JSON, and whether it was truncated.
object[]
Each attempt, as {attemptNo, statusCode, errorClass, latencyMs, at}.
date-time | null
Lifecycle timestamps.
mixed
Identity and creation time. createdOn is the pagination sort key.
requestSignature and requestPayload are the fastest way to debug a signature mismatch: re-run your verifier against the exact timestamp and body Endl recorded here.
200 · 404 not found or not yours · 400 non-UUID id or missing permission · 401 / 503 authentication

Retry a delivery

Re-arms one failed or expired delivery. Takes no body. It grants three more attempts and a fresh delivery window, and the status returns to QUEUED.
Retryable states only. Retrying a DELIVERED delivery returns 409, because it would double-deliver, and so does one still in flight. Only FAILED and EXPIRED can be retried.
Notice attemptBudget rising from 5 to 8 while attemptCount stays at 5 — that is the three extra attempts a retry grants.
200 re-armed · 400 retry rate limit, non-UUID id, or missing permission · 404 not found · 409 already delivered or otherwise not retryable · 401 / 503 authentication