Resend a delivery
Sends the same event (the same body and webhook-id, signed now) to the endpoint once more and adds the attempt to the delivery. Works on any delivery whose event is still kept (14 days), delivered or not.
api_key webhooksAuthorizationBearer <token>A team API key, made by an admin under Settings, API keys. Send it as Authorization: Bearer chk_....
Scope: webhooks
endpoint_id*stringThe endpoint's id.
delivery_id*stringThe delivery's id.
The delivery with the new attempt.
application/json- response
One delivery of an event to an endpoint.
attempts*array<>Every attempt, oldest first (the last 20).
created_at*stringWhen the event was first sent to this endpoint.
"2026-10-26T14:31:47.780Z"event*stringThe event type.
"run.completed"event_id*stringThe event's id: the same webhook-id on every attempt.
"evt_01JBEVNT8M1N4P7Q0R3S6T9V2W"headers*The request's headers, the signature removed.
{ "webhook-id": "evt_01JBEVNT8M1N4P7Q0R3S6T9V2W", "webhook-signature": "[redacted]", "webhook-timestamp": "1792420307"}id*stringThe Deliveries record's id.
"01JBDLVR5T8V1W4X7Y0Z3A6B9C"next_retry_at?|When the next retry is due, while one is.
nulloutcome*stringWhat happened, in a few words.
"Refused (401)"payload_preview*stringThe body that was sent, with secret-looking values masked, cut at 4 KB.
"{\n \"id\": \"evt_01JBEVNT8M1N4P7Q0R3S6T9V2W\" …"reason*stringA reason code when it failed.
"webhook_refused"reason_fix*stringWhat to do about it.
"Check that the endpoint verifies signatures with the right secret and accepts JSON, then press Resend."reason_message*stringThe reason in plain words.
"Your webhook endpoint refused the event (a 4xx answer), so it isn't retried."status*stringpending (being retried), handled (delivered) or failed.
"failed"curl -X POST 'https://api.coderhelm.com/api/webhooks/endpoints/ep_01jbendpt4a7b0c3d6e9f2g5h8/deliveries/01JBDLVR5T8V1W4X7Y0Z3A6B9C/resend' \ -H "Authorization: Bearer $CODERHELM_API_KEY"{ "attempts": [ { "at": "2026-10-26T14:31:47.901Z", "code": 401, "duration_ms": 112, "error": "Answered 401: bad signature" } ], "created_at": "2026-10-26T14:31:47.780Z", "event": "run.completed", "event_id": "evt_01JBEVNT8M1N4P7Q0R3S6T9V2W", "headers": { "webhook-id": "evt_01JBEVNT8M1N4P7Q0R3S6T9V2W", "webhook-signature": "[redacted]", "webhook-timestamp": "1792420307" }, "id": "01JBDLVR5T8V1W4X7Y0Z3A6B9C", "next_retry_at": null, "outcome": "Refused (401)", "payload_preview": "{\n \"id\": \"evt_01JBEVNT8M1N4P7Q0R3S6T9V2W\" …", "reason": "webhook_refused", "reason_fix": "Check that the endpoint verifies signatures with the right secret and accepts JSON, then press Resend.", "reason_message": "Your webhook endpoint refused the event (a 4xx answer), so it isn't retried.", "status": "failed"}List an endpoint's deliveries GET
The endpoint's deliveries, newest first, each with every attempt. Kept 14 days.
Replay events POST
Sends the kept events made in a time range to this endpoint again, each as a new delivery with retries, oldest first. Only event types the endpoint subscribes to now are sent. Events carry their original `id`, so a receiver that already handled one can skip it. At most 500 per call; events are kept 14 days.