---
title: "List webhook deliveries"
method: GET
path: "/webhooks/{webhookId}/deliveries"
tags: ["Webhooks"]
---

# List webhook deliveries

`GET /webhooks/{webhookId}/deliveries`

Get a paginated list of delivery attempts for a specific webhook.

Use this to:
- Monitor webhook health and delivery success rate
- Debug failed deliveries
- Find specific events to replay

**Filtering:**
- Filter by success/failure to find problematic deliveries
- Filter by event type to find specific events
- Filter by time range for debugging recent issues

**Retry behavior:**
Failed deliveries are automatically retried with exponential backoff over ~3 days.
Check `willRetry` to see if more attempts are scheduled.

## Query parameters

- `page` integer
- `perPage` integer
- `success` boolean
- `event` 'MessageSent' | 'MessageDelayed' | 'MessageDeliveryFailed' | 'MessageHeld' | 'MessageBounced' | 'MessageLinkClicked' | 'MessageLoaded' | 'DomainDNSError' | 'SendLimitApproaching' | 'SendLimitExceeded'
- `before` integer
- `after` integer

## Response `200`

List of webhook deliveries

- ListWebhookDeliveriesResponse — Paginated list of webhook delivery attempts
  - `data` WebhookDeliverySummary[], required
    - `id` string, required — Unique delivery ID (UUID)
    - `webhookId` string, required — ID of the webhook this delivery belongs to
    - `event` 'MessageSent' | 'MessageDelayed' | 'MessageDeliveryFailed' | 'MessageHeld' | 'MessageBounced' | 'MessageLinkClicked' | 'MessageLoaded' | 'DomainDNSError' | 'SendLimitApproaching' | 'SendLimitExceeded', required — Event type that triggered this delivery
    - `url` string, uri, required — URL the webhook was delivered to
    - `statusCode` integer, nullable, required — HTTP status code returned by the endpoint (null if connection failed)
    - `success` boolean, required — Whether the delivery was successful (2xx response)
    - `attempt` integer, required — Attempt number (1 for first attempt, increments with retries)
    - `willRetry` boolean, required — Whether this delivery will be retried (true if failed and retries remaining)
    - `timestamp` string, date-time, required — When this delivery attempt occurred
  - `page` integer, required — Current page number
  - `perPage` integer, required — Items per page
  - `total` integer, required — Total number of deliveries matching the filter
  - `totalPages` integer, required — Total number of pages
  - `meta` ApiMeta, required
    - `requestId` string, required — Unique request identifier for debugging and support

## Other responses

- `401` — Invalid or missing API key
- `404` — Resource not found
- `429` — Rate limit exceeded
- `500` — Internal server error

## Changes

- **2026-01-23** `c7a958bca791` — 4 info
  - added the optional property `error/hint` to the response with the `401` status
  - added the optional property `error/hint` to the response with the `404` status
  - added the optional property `error/hint` to the response with the `429` status
  - added the optional property `error/hint` to the response with the `500` status
- **2026-01-22** `b8e976f80ad3` — 2 warning, 2 info
  - added the new `SendLimitApproaching` enum value to the `data/items/event` response property for the response status `200`
  - added the new `SendLimitExceeded` enum value to the `data/items/event` response property for the response status `200`
  - added the new enum value `SendLimitApproaching` to the `query` request parameter `event`
  - added the new enum value `SendLimitExceeded` to the `query` request parameter `event`
- **2026-01-20** `722126c6dec8` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/arkhq-io/apis/ark-email-api/changes/webhooks/:webhookId/deliveries/get.md)

---

[API](https://skmtc.dev/arkhq-io/apis/ark-email-api.md) · [All operations](https://skmtc.dev/arkhq-io/apis/ark-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/arkhq-io/apis/ark-email-api/revisions/eafcdb767b21?raw)
