Get a delivery and every attempt at it
Reads the delivery, the body that was sent, and one entry per attempt with what the
receiver answered to that attempt. A delivery that failed twice and then succeeded has
three entries; the summary on the list deliveries operation only carries the latest.
Requires the org:connect:read permission. Returns 404 when the caller's organization
has no delivery with this id.
Authorization
oauth2 Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.
In: header
Path Parameters
Unique identifier of the delivery.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/webhooks/deliveries/0198c1c2-4f1e-7a3b-9c2d-6f0a1b2c3d4e"{ "delivery": { "id": "0198c1c2-4f1e-7a3b-9c2d-6f0a1b2c3d4e", "webhook_id": "550e8400-e29b-41d4-a716-446655440000", "event_type": "approval.outcome", "payload": { "delivery_id": "0198c1c2-4f1e-7a3b-9c2d-6f0a1b2c3d4e", "event_type": "approval.outcome" }, "status": "PENDING", "attempts": 1, "sent_at": "2026-03-14T09:30:00Z", "http_status": 200, "response_snippet": { "status": "ok" }, "error": "Connection timed out after PT5S", "duration": "PT0.412S", "next_attempt_at": "2026-03-14T09:35:00Z", "created_at": "2026-09-01T10:15:30Z" }, "attempts": [ { "attempt_number": 1, "sent_at": "2026-03-14T09:30:00Z", "http_status": 200, "response_snippet": { "status": "ok" }, "error": "Connection timed out after PT5S", "duration": "PT0.412S" } ]}{ "code": "BAD_REQUEST", "description": "Bad Request"}{ "code": "UNAUTHORISED", "description": "Unauthorised"}{ "code": "FORBIDDEN", "description": "Forbidden"}{ "code": "BAD_REQUEST", "description": "Invalid input"}{ "code": "RATE_LIMIT_EXCEEDED", "description": "Too Many Requests"}{ "code": "INTERNAL_ERROR", "description": "Internal Server Error"}List deliveries GET
Lists every attempt this platform made to call a webhook of the caller's organization, newest first, with the body that was sent and whatever the receiver answered. Requires the `org:connect:read` permission. Narrow it with `webhook_id`, `status`, `event_type` and a `created_from`/`created_until` window. The window is over when the delivery was created; `sent_at` on each row says when the last attempt ran.
Retry a delivery POST
Sends the recorded delivery again, with the bytes it was created with, so the receiver sees the same idempotency key as before and can tell that this is the same action. The signature is new: it covers a new timestamp, which is what stops an old request from being replayed. Answers with the delivery as it now stands; the attempt itself runs in the background and the retry policy applies to it as it does to a first attempt. A delivery that was accepted can also be sent again, for a receiver that lost it; the delivery id does not change, so the receiver can tell the copy from a new action. One retry at a time — asking again while a retry is still running does not send a second copy. One manual retry per delivery per minute. Requires the `org:connect:write` permission.