Retry a delivery
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.
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
application/json
curl -X POST "https://example.com/v1/webhooks/deliveries/0198c1c2-4f1e-7a3b-9c2d-6f0a1b2c3d4e/retry"{ "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"}{ "code": "BAD_REQUEST", "description": "Bad Request"}{ "code": "UNAUTHORISED", "description": "Unauthorised"}{ "code": "FORBIDDEN", "description": "Forbidden"}{ "code": "BAD_REQUEST", "description": "Invalid input"}{ "code": "BAD_REQUEST", "description": "Invalid input"}{ "code": "RATE_LIMIT_EXCEEDED", "description": "Too Many Requests"}{ "code": "INTERNAL_ERROR", "description": "Internal Server Error"}Get a delivery and every attempt at it GET
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.
List events GET
Lists every event this platform raised for the caller's organization, newest first, with the payload a receiver reads under `data`. An event appears here whether or not a webhook subscribed to it, so the feed is readable before the first webhook exists. Requires the `org:connect:read` permission. Narrow it with `type` and a `created_from`/`created_until` window. The list deliveries operation says what was sent; this one says what happened.