rizamodocs
Webhooks

Replay a webhook delivery

POST
/webhooks/deliveries/{id}/replay

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.

Authorization

apiKey
headerAuthorizationBearer <token>

An API key from the web app, under Developers. It starts with rz_live_.

Path Parameters

id*string

The webhook delivery's id (whd_).

Lengthlength <= 100

Header Parameters

Idempotency-Key?string

1 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.

Length1 <= length <= 255

Response Body

OK

application/json
  1. response
id*string
endpointId*string
eventId*|

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*string

pending: 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).

Value in"pending""retrying""delivered""failed"
attempts*array<>

Oldest first.

nextAttemptAt*|null
held*boolean

Waiting 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*|null
createdAt*string
Formatdate-time
payload*|

The body as sent, JSON: the event as List events gives it. Null until the first attempt.

Example Request
curl -X POST 'https://api.rizamo.com/v1/webhooks/deliveries/whd_01m4mw5rc0ehs83dnfzc56pd0g/replay' \  -H 'Idempotency-Key: 4b9e7c1a-2f3d-4e8a-9c6b-1d2e3f4a5b6c'
Example Response
{  "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\"}}"}