Mailfully logo

List dead-lettered deliveries

GEThttps://api.mailfully.com/v1/webhook-dead-letters

List the organization's dead-lettered webhook deliveries (events whose 7-attempt retry schedule was exhausted), newest first, with keyset pagination (default limit 50). Optionally filter by webhook_id. Dashboard only (owner, admin, or member). API keys get 403 insufficient_scope.

Loading code example
Loading code example

Authorizations

Authorizationstringheaderrequired

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

limitintegerdefault: 50

Maximum rows to return. Default 50, clamped to [1, 100].

Required range: x >= 1, x <= 100
Default: 50
cursorstring

Opaque pagination cursor from a previous response's next_cursor.

webhook_idstring

Filter to one endpoint's dead letters. An unknown value yields an empty page.

Response

application/json

A page of dead letters.

dataarray<object>required
data.idstringrequired

Dead-letter id (a bare ULID, no prefix).

data.webhook_idstringrequired

The exhausted endpoint (whk_…).

data.event_idstringrequired
data.event_type"email.delivered" | "email.bounced" | "email.complained" | "email.failed" | "email.delivery_delayed" | "email.opened" | "email.clicked" | "email.suppressed" | "email.unsubscribed" | "email.received"required

Subscribable webhook event types. email.suppressed and email.unsubscribed are accepted by the subscription filter but are never delivered as webhooks. The suppressed and unsubscribed events appear only in the message event timeline (GET /v1/emails/{id}/events). email.received fires once for each email received at a domain with receiving turned on or at the hosted address.

Allowed values: "email.delivered" | "email.bounced" | "email.complained" | "email.failed" | "email.delivery_delayed" | "email.opened" | "email.clicked" | "email.suppressed" | "email.unsubscribed" | "email.received"
data.last_status_codeintegerrequired

HTTP status of the exhausting attempt; null on a connection error or timeout, or when delivery was skipped because the endpoint is failing.

data.attemptsintegerrequired

Attempt count at exhaustion (7 on the normal path).

data.dead_lettered_atstring<date-time>required
data.replayed_atstring<date-time>required
has_morebooleanrequired
next_cursorstringrequired