List Deliveries
Returns a paginated list of delivery attempts for a specific webhook endpoint. Use this to monitor delivery success rates and debug failed deliveries.
GET
/v1/webhooks/{webhook_id}/deliveries webhooks:read Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
webhook_id | string | Yes | The unique identifier of the webhook. |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | No | 50 | Number of delivery records to return (1 – 200). |
offset | integer | No | 0 | Number of records to skip for pagination. |
Request Examples
curl -X GET "https://xqr.co/api/v1/webhooks/wh_a1b2c3d4-e5f6-7890-abcd-ef1234567890/deliveries?limit=10&offset=0" \ -H "Authorization: Bearer xqr_pk_a1b2c3d4.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"const webhookId = "wh_a1b2c3d4-e5f6-7890-abcd-ef1234567890";const params = new URLSearchParams({ limit: "10", offset: "0" });
const response = await fetch( `https://xqr.co/api/v1/webhooks/${webhookId}/deliveries?${params}`, { headers: { Authorization: "Bearer xqr_pk_a1b2c3d4.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", }, },);
const { data } = await response.json();const failed = data.filter((d: any) => d.status === "failed");console.log(`${failed.length} failed deliveries`);import httpx
webhook_id = "wh_a1b2c3d4-e5f6-7890-abcd-ef1234567890"
response = httpx.get( f"https://xqr.co/api/v1/webhooks/{webhook_id}/deliveries", headers={ "Authorization": "Bearer xqr_pk_a1b2c3d4.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", }, params={"limit": 10, "offset": 0},)
data = response.json()["data"]failed = [d for d in data if d["status"] == "failed"]print(f"{len(failed)} failed deliveries")Response
200 OK
An array of delivery records.
{ "data": [ { "id": "del_a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "delivered", "event_type": "link.scanned", "created_at": "2026-03-21T14:35:00Z", "delivered_at": "2026-03-21T14:35:01Z", "failed_at": null, "attempts": 1, "response_status": 200 }, { "id": "del_f7e8d9c0-b1a2-3456-7890-abcdef123456", "status": "failed", "event_type": "link.created", "created_at": "2026-03-21T12:00:00Z", "delivered_at": null, "failed_at": "2026-03-21T12:00:45Z", "attempts": 3, "response_status": 503 }, { "id": "del_c3d4e5f6-7890-abcd-ef12-34567890abcd", "status": "delivered", "event_type": "link.created", "created_at": "2026-03-20T18:22:00Z", "delivered_at": "2026-03-20T18:22:00Z", "failed_at": null, "attempts": 1, "response_status": 200 } ], "meta": { "request_id": "req_2f3a4b5c6d7e8f90", "rate_limit": { "limit": 600, "remaining": 595, "reset": 1742572800 } }}Was this page helpful?
Thanks for your feedback!