heruAPI
Webhooks

Replay a delivery

BuildingIn development for the v1 API. The contract is set; the route is not served yet.

POST
/deliveries/{id}/replay

Queues a new delivery of the same event, byte for byte, to the same subscription. It goes out on the next pass with its own Heru-Delivery-Id and Heru-Attempt: 1; discard it by Heru-Event-Id if you already processed the event. Allowed for delivered, failed and expired deliveries whose event is still retained (30 days); a delivery in progress or of a deleted subscription answers 409. Retrying with the same Idempotency-Key returns the same new delivery.

Needs the webhooks:write scope.

Authorization

oauth2 webhooks:write
headerAuthorizationBearer <token>

OAuth 2.0 client credentials. Exchange your client_id and client_secret at /oauth/token of the environment for a bearer token valid for one hour. The playground of every operation asks for your own client and keeps it in your browser tab only.

Scope: webhooks:write

Path parameters

id*string

The delivery id.

Match^dlv_[0-7][0-9a-hjkmnp-tv-z]{25}$

Header parameters

Idempotency-Key*string

Unique per operation. Retrying with the same key returns the original result for 24 hours.

Lengthlength <= 255

Response body

The new delivery, pending if the subscription is active or held if it is paused or disabled. replay_of points at the original.

application/json
  1. response
id*string
Match^dlv_[0-7][0-9a-hjkmnp-tv-z]{25}$
event_id*string
Match^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$
event_type*string
subscription_id*string
Match^whk_[0-7][0-9a-hjkmnp-tv-z]{25}$
status*string

pending waits for the next pass; delivering is in flight; retrying failed and waits for next_retry_at; failed exhausted its retries; held waits for the subscription to be active again; expired will not be sent.

Value in"pending""delivering""delivered""retrying""failed""held""expired"
attempt_count*integer
attempts*array<>

Oldest first. Attempts are kept for 30 days; the delivery and its counters stay.

next_retry_at*|null
last_status_code*integer|null
last_error*string|null
delivered_at*|null
replay_of*|null
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
curl -X POST 'https://api.dev.b2b.heru.app/v1/deliveries/dlv_01m53g5zw414zt6vg08fqbacgm/replay' \  -H 'Idempotency-Key: try-it-0001'
{  "id": "dlv_01m53h2c7fe8pq4x0n6yt9r1kv",  "event_id": "evt_01m53g5zw414zt6vg08fqbacgm",  "event_type": "invoice.stamped",  "subscription_id": "whk_01m53g5zw414zt6vg08fqbacgm",  "status": "pending",  "attempt_count": 0,  "attempts": [],  "next_retry_at": "2026-10-26T15:04:41.000Z",  "last_status_code": null,  "last_error": null,  "delivered_at": null,  "replay_of": "dlv_01m53g5zw414zt6vg08fqbacgm",  "created_at": "2026-10-26T15:04:41.000Z",  "updated_at": "2026-10-26T15:04:41.000Z"}
© 2026 Kuarto Inc. (heru)heru.appQuestions about your integration? Contact your heru account team.