<Intro>

<EndpointHeader />

<Description>

Returns the endpoint's recent delivery attempts, newest first. Each entry is one HTTP
request, so a retried event appears once per try; use it to see what failed and why
before requesting redelivery with
[Replay missed events](/docs/api/reference/create-webhook-replay).

Bound the window with the `before`/`after` timestamps and cap the page with `limit`.
The response carries no cursor: to page further back, pass the oldest `attempted_at`
you received as `before`.

</Description>

</Intro>

<Parameters in="query">

<Parameter name="limit" type="integer">

<Description>

Maximum number of attempts to return. Defaults to 50, capped at 100.

</Description>

</Parameter>

<Parameter name="before" type="string">

<Description>

Only return attempts strictly before this timestamp.

</Description>

</Parameter>

<Parameter name="after" type="string">

<Description>

Only return attempts strictly after this timestamp.

</Description>

</Parameter>

</Parameters>

<Payload kind="response">

<Field name="data" type="array of object" required>

<Description>

Delivery attempts, newest first.

</Description>

<FieldChildren kind="response">

<Field name="id" type="string" prefix="data." required>

<Description>

Identifier of this individual delivery attempt. Each retry is a separate attempt with its own id; use `event_id` to group the attempts for one event.

</Description>

</Field>

<Field name="event_id" type="nullable string" prefix="data.">

<Description>

Bird's source event ID, stable across retries of the same event. Null only for older attempts recorded before event IDs were available.

</Description>

</Field>

<Field name="event_type" type="string" prefix="data." required>

<Description>

Webhook event type. Open enum: new event types may be added over time, so treat any unrecognized value in a delivery as a future event rather than an error. Subscribing to a type that is not in the catalog returns a `422`. The values below are the types known at this version.

</Description>

<Description>

Possible values (may grow over time): `domain.failed`, `domain.verified`, `email.accepted`, `email.bounced`, `email.canceled`, `email.clicked`, `email.complained`, `email.deferred`, `email.delivered`, `email.list_unsubscribed`, `email.opened`, `email.out_of_band_bounce`, `email.processed`, `email.received`, `email.rejected`, `email.scheduled`, `email.unsubscribed`, `email_mailbox.message_delivered`, `email_mailbox.message_failed`, `email_mailbox.message_received`, `email_mailbox.message_sent`, `email_mailbox.suspended`, `email_mailbox.thread_created`, `email_suppression.created`, `realtime.cache_channels`, `realtime.channel_existence`, `realtime.client_events`, `realtime.presence`, `realtime.connection_count`, `sms.accepted`, `sms.delivered`, `sms.expired`, `sms.failed`, `sms.rejected`, `sms.sent`, `sms.tfn_verification.approved`, `sms.tfn_verification.info_requested`, `sms.tfn_verification.rejected`, `sms.tfn_verification.submitted`, `sms.undelivered`, `voice.call.answered`, `voice.call.ended`, `voice.call.initiated`, `whatsapp.accepted`, `whatsapp.delivered`, `whatsapp.failed`, `whatsapp.read`, `whatsapp.sent`

</Description>

</Field>

<Field name="status" type="string" prefix="data." required>

<Description>

Outcome of this attempt. `delivered` means your endpoint accepted it with a `2xx` response; `pending` means the attempt is still in flight; `failed` means it returned a non-`2xx` response or no response at all. A `failed` attempt is not final for the event: automatic retries appear as further attempts with the same `event_id`.

</Description>

<Description>

Possible values: `delivered`, `pending`, `failed`

</Description>

</Field>

<Field name="url" type="string" prefix="data." required>

<Description>

URL the request was sent to: the endpoint's `url` at the time of the attempt, which can differ from the current configuration after an update.

</Description>

</Field>

<Field name="response_status_code" type="nullable integer" prefix="data." required>

<Description>

HTTP status returned by the receiver. Null when no response was received (timeout, connection error, DNS failure).

</Description>

</Field>

<Field name="response_body" type="string" prefix="data.">

<Description>

Response body your endpoint returned, which may be truncated. Omitted when no body was returned.

</Description>

</Field>

<Field name="response_duration_ms" type="integer" prefix="data." required>

<Description>

Round-trip duration in milliseconds.

</Description>

</Field>

<Field name="attempted_at" type="string" prefix="data." required>

<Description>

When this attempt was made. Attempts are listed newest first by this timestamp, and the list's `before`/`after` parameters bound it.

</Description>

</Field>

</FieldChildren>

</Field>

</Payload>