Skip to main content
POST
/
api
/
webhooks
/
deliveries
/
{id}
/
replay
Replay delivery
curl --request POST \
  --url https://api.example.com/api/webhooks/deliveries/{id}/replay \
  --header 'Authorization: <authorization>'
{
  "id": "deabb47c-b3c4-4777-867c-cc32c434957c",
  "subscriptionId": "1c84203c-b4e3-40de-83a9-51bc0d9c991f",
  "eventType": "payout.status.updated",
  "status": "pending",
  "attemptCount": 0,
  "nextAttemptAt": "2026-05-27T09:34:50Z",
  "createdAt": "2026-05-27T09:34:50Z"
}
Enqueues a fresh delivery with the same payload + subscription. Worker picks it up within ~2 s; new delivery gets its own Teel-Delivery-Id. Use this for:
  • Debugging your verifier — drop a row, fix the bug, replay, watch it land.
  • Recovering from a long outage on your side — walk the permanently_failed deliveries and replay them once your endpoint is healthy.
Scope webhooks:write · rate-limited

Headers

Authorization
string
required
API key.

Path parameters

id
string
required
Source delivery UUID.

Response

id
string
UUID of the new delivery row.
subscriptionId
string
Inherited from the source delivery.
eventType
string
Inherited from the source delivery.
status
string
Always pending on a freshly enqueued replay.
attemptCount
integer
Always 0 — this is a brand-new delivery row, not a retry of the source.
nextAttemptAt
string
ISO 8601 timestamp of the first attempt (≈ now).
createdAt
string
ISO 8601 timestamp.
{
  "id": "deabb47c-b3c4-4777-867c-cc32c434957c",
  "subscriptionId": "1c84203c-b4e3-40de-83a9-51bc0d9c991f",
  "eventType": "payout.status.updated",
  "status": "pending",
  "attemptCount": 0,
  "nextAttemptAt": "2026-05-27T09:34:50Z",
  "createdAt": "2026-05-27T09:34:50Z"
}

Rate limit

To prevent self-inflicted DoS, replays are capped per account: 5 per minute, burst 5. Over the limit returns 429 Too Many Requests with a Retry-After header (seconds).