Developer docs
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
curl -X GET "https://uetr.ai/api/v1/webhooks/3b1f8c2e-6a4d-4f5e-9c7b-2d8e1a0f4b6c/deliveries" \ -H "Authorization: Bearer $UETR_API_KEY"
The answer:
{
"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 every call can meet, this call can answer:
not_permitted(403): Not permitted.not_found(404): Not found.