Skip to main content
For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt. This page is also available in markdown by appending .md to the URL.
Coverbase records every webhook delivery attempt as an audit row. Whether the delivery came from a domain-event fan-out, a workflow send_webhook action, or a manual test, there is one history record per attempt, including deliveries that were blocked by the URL restrictions. Use the history to debug failing receivers, confirm a delivery happened, and monitor delivery health over time. The aggregate health of a subscription (last_delivery_status, delivery_success_rate, delivery_count) is also surfaced on the webhook object.

In the dashboard

Under Configuration → Webhooks, click a webhook’s Delivery history button, or its Health value. The dialog lists each attempt with its Event, Status, Response (HTTP status and round-trip time) and Attempted time, newest first, with View payload to expand what was sent. The Status filter narrows the page you are looking at, and Previous and Next page through the rest.

List delivery attempts

GET
GET /v1/webhooks/{webhook_id}/deliveries
Returns the delivery attempts for one webhook, newest first, paginated. Org-scoped to the API key.

Path parameters

string
required
The webhook subscription ID (cbwh_...).

Query parameters

integer
default:"50"
Page size. Clamped to the range 1-100 (values outside the range are clamped, not rejected).
integer
default:"0"
Number of records to skip. Negative values are clamped to 0.

Example request

cURL
Python

Example response

Response fields

object[]
The page of delivery attempts, newest first. Each item:
integer
Total recorded attempts for this webhook, ignoring limit/offset. Page until offset + len(data) >= total.
integer
The effective page size after clamping.
integer
The effective offset after clamping.

Delivery status values

Every attempt is its own row. A delivery that timed out, lost its connection, or got a 408, 429 or 5xx answer is retried with the same event_id, up to six attempts in all, so the newest row for an event_id is where that delivery stands. Other non-2xx answers are recorded as error and not retried.

Error responses

Pagination example

Next page
See API conventions → Timestamps for the epoch-seconds convention used by attempted_at and created_at.