> The full uetr.ai documentation index is at https://uetr.ai/llms.txt, and every page under https://uetr.ai/docs/api is also Markdown at its address plus `.md`.

# List a webhook endpoint's deliveries

List the most recent deliveries to a webhook endpoint, newest first, with each attempt count and the receiver's last HTTP status code. Deliveries are kept for 30 days and payloads are never returned. Only the account owner's API keys and connected apps can read webhooks. Reading changes nothing.

`GET https://uetr.ai/api/v1/webhooks/{id}/deliveries`

- MCP tool: `list_webhook_deliveries`
- Access: any key or connection
- Only the account owner's keys and connections

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string (uuid) | Yes | The webhook endpoint's id. |

## Response

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `deliveries` | array of object | Yes |  |
| `deliveries[].id` | string (uuid) | Yes |  |
| `deliveries[].event_id` | string (uuid) | Yes | The webhook-id header the receiver saw. |
| `deliveries[].event_type` | `status_changed`, `final_state`, `checks_ended`, `test` | Yes |  |
| `deliveries[].status` | `pending`, `delivered`, `failed`, `dropped` | Yes | pending: waiting to be sent or retried. delivered: the receiver answered with a 2xx status. failed: every attempt failed; a test event is tried once and never retried. dropped: removed before sending, for example after an address change. |
| `deliveries[].attempts` | integer | Yes |  |
| `deliveries[].last_status_code` | integer or null | Yes | The receiver's last HTTP status code, or null if it never answered. |
| `deliveries[].last_attempt_at` | string or null | Yes |  |
| `deliveries[].created_at` | string | Yes |  |

## Example

```sh
curl -X GET "https://uetr.ai/api/v1/webhooks/3b1f8c2e-6a4d-4f5e-9c7b-2d8e1a0f4b6c/deliveries" \
  -H "Authorization: Bearer $UETR_API_KEY"
```

The answer:

```json
{
  "deliveries": [
    {
      "id": "5d9b3f7a-2e6c-4a1d-8f4b-7c0e3a6d9b2f",
      "event_id": "a1c3e5f7-9b2d-4f6a-8c0e-2b4d6f8a0c3e",
      "event_type": "test",
      "status": "delivered",
      "attempts": 1,
      "last_status_code": 200,
      "last_attempt_at": "2026-10-14T09:36:04.000Z",
      "created_at": "2026-10-14T09:36:00.000Z"
    }
  ]
}
```

## Refusals

Besides the [access refusals](/docs/api/errors#access-refusals) every call can meet, this call can answer:

- [`not_permitted`](/docs/api/errors#not_permitted) (403): Not permitted.
- [`not_found`](/docs/api/errors#not_found) (404): Not found.