WebhookDelivery
Single webhook delivery record (each retry increments `attempt`). Returned by `GET /webhooks/deliveries` (cross-endpoint feed) and `GET /webhooks/{id}/deliveries` (per-endpoint). The cross-endpoint variant adds a joined `endpoint_url` to avoid extra lookups.
ExtendsJsonApiResourceBase
Properties
| Field | Type | Description |
|---|---|---|
type* | string | Resource type, fixed for this operation. Part of the resource identity in the JSON:API envelope. Always `webhook_delivery`. |
id* | string | Auto-increment delivery identifier. |
attributes* | object | Canonical webhook delivery attributes (receiver endpoint, attempt, response, and status). |
endpoint_id | string (uuid) | UUID of the webhook endpoint that originated this delivery. |
endpoint_url | string | Receiver endpoint URL. Only present on the cross-endpoint feed (`GET /webhooks/deliveries`). |
event_type | string | Event type that triggered the delivery. Determines the shape of the HMAC-signed payload sent to the receiver. The events are `validation.completed`, `validation.failed`, `validation.error`, `validation.retry.scheduled`, `validation.retry.resolved`, `validation.retry.exhausted`, `billing.payment_succeeded`, `billing.payment_failed`, `billing.trial_will_end`, `billing.subscription_canceled`, and `billing.invoice_upcoming`. |
validation_id | string | null | Validation UUID when the event is `validation.*`. `null` for `billing.*` events. |
response_status | integer | null | HTTP code returned by the receiver. `null` when the delivery never completed a request (timeout, SSRF block). |
response_body | string | null | Receiver response body, truncated to 500 characters. |
response_time_ms | integer | null | Total request time in milliseconds. |
attempt | integer | Attempt number (1 = first send, >1 = retries). |
status | string | Current delivery status. `pending` — not delivered yet; `retrying` — retrying; `success` — delivered; `failed` — attempts exhausted. |
next_retry_at | TimestampUTC | null | UTC ISO 8601 of the next scheduled retry. `null` when the delivery is terminal (delivered or exhausted). |
error_message | string | null | Error message if the delivery failed (`null` on success). |
created_at | string (date-time) | ISO 8601 timestamp in UTC with explicit `Z` suffix. Example: `"2026-05-01T05:14:38Z"`. Every datetime field uses this shape. The descriptor at `meta.datetime` makes the contract runtime-assertable. |
Used in operations
GET /v1/webhooks/{id}/deliveriesGET /v1/webhooks/deliveries