Replay a webhook delivery
Sends a delivery again, once and now, through the queue: the body it sent before (made from its event when it never went), signed anew, with the same webhook-id (the event's id), so a receiver that has it already can skip it. One more attempt, to the endpoint's url as it is now, never retried; it shows among the delivery's attempts. The endpoint must still take the event (its types and profiles now) and be enabled. A delivery still waiting for a retry is refused: it goes on its own. A team replays up to 5,000 deliveries an hour, one at a time and by range together; more answer 429.
apiKeyAuthorizationBearer <token>An API key from the web app, under Developers. It starts with rz_live_.
id*stringThe webhook delivery's id (whd_).
length <= 100Idempotency-Key?string1 to 255 printable characters, new for each request (a UUID); the body up to 1 MB. For 24 hours a repeat with the same key, path and body gets the first answer, with Idempotent-Replayed: true, instead of running again; 5xx, 409 and 429 answers are not kept. Errors, Retries, has the rest.
1 <= length <= 255OK
application/json- response
id*stringendpointId*stringeventId*|The event it carries, as List events gives it and as webhook-id names it. Null for a test.
event*|The event's type, or webhook.test for a test.
status*stringpending: not tried yet. retrying: tried, and tried again at nextAttemptAt. delivered: an attempt got a 2xx. failed: Rizamo stopped trying (all retries used, a 410, an address it does not send to, the endpoint disabled or no longer taking the event, or a delivery it could not prepare).
"pending""retrying""delivered""failed"attempts*array<>Oldest first.
nextAttemptAt*|nullheld*booleanWaiting for its endpoint to answer again (breaker open), with no time set: it goes once an attempt to the endpoint is delivered, or as the breaker's next try.
deliveredAt*|nullcreatedAt*stringdate-timepayload*|The body as sent, JSON: the event as List events gives it. Null until the first attempt.
curl -X POST 'https://api.rizamo.com/v1/webhooks/deliveries/whd_01m4mw5rc0ehs83dnfzc56pd0g/replay' \ -H 'Idempotency-Key: 4b9e7c1a-2f3d-4e8a-9c6b-1d2e3f4a5b6c'{ "id": "whd_01m4mw5rc0ehs83dnfzc56pd0g", "endpointId": "wh_01m4m44q00ea9a11gpjs99ddcy", "eventId": "ev_01m4jm2m80fjwbwhe2nf0qbtsw", "event": "post.target.published", "status": "delivered", "attempts": [ { "number": 1, "at": "2026-11-06T09:00:05.000Z", "responseCode": 200, "durationMs": 182, "error": null }, { "number": 2, "at": "2026-11-07T08:00:00.000Z", "responseCode": 200, "durationMs": 166, "error": null } ], "nextAttemptAt": null, "held": false, "deliveredAt": "2026-11-07T08:00:00.000Z", "createdAt": "2026-11-06T09:00:04.000Z", "payload": "{\"id\":\"ev_01m4jm2m80fjwbwhe2nf0qbtsw\",\"type\":\"post.target.published\",\"at\":\"2026-11-06T09:00:04.000Z\",\"actor\":null,\"summary\":\"\\\"Winter menu is here: spiced orange latte and o…\\\" published on Instagram\",\"resource\":{\"type\":\"post\",\"id\":\"post_01m47bjzm0edmtk7w6gp7br39v\"},\"data\":{\"accountId\":\"acc_01m423bp00fz39kp5pc7m42tsw\",\"network\":\"instagram\",\"format\":\"feed\",\"url\":\"https://www.instagram.com/p/DQx8kLmCa1T/\",\"networkPostId\":\"npost_01m4fkyer0em9939e5rz4f89v7\"}}"}List webhook deliveries GET
Each event (and test) sent to an endpoint, newest first, with every attempt, from the last 30 days. A page at a time: pass `nextCursor` as `cursor` for the next one. Only deliveries of endpoints the caller sees; someone limited to some profiles sees only their profiles' events among them, and tests. Each payload is an event as `List events` shows it, so `webhooks:read` reads what `events:read` reads: the inbox's and comment automations' deliveries only with `inbox:read` or `automations:read` too.
Replay an endpoint's deliveries POST
Sends again, once each and now, the endpoint's deliveries made between `since` and `until` (within the last 30 days): the failed ones, or every one with `status` all. Each keeps its `webhook-id` and goes to the endpoint's `url` as it is now. Deliveries the endpoint no longer takes are skipped, and those still waiting for a retry are not replayed. Up to 1,000 a call, in the order they were made, and within the team's 5,000 replays an hour (429 once none are left); `more` says the range holds more, and `nextCursor` continues after the last one this call looked at. One range at a time: a call while the endpoint's last replay is still being sent answers 409. The endpoint must be enabled.