# POST /v1/webhooks/{id}/deliveries/{deliveryId}/replay

Replay a delivery

Queues the event for delivery again, whatever its state, with the same payload and a fresh attempt count.

Takes a server key (`sk_…`, or `sk_test_…` on a test server) as a bearer token. TypeScript: `sendora.webhooks.replay(webhookId, deliveryId)`. Python: `sendora.webhooks.replay(webhook_id, delivery_id)`.

## Parameters

- `id` (path, required, string (uuid)): The webhook id.
- `deliveryId` (path, required, string (uuid)): The delivery id.

## Responses

### 202 One event on its way to the webhook, retried with backoff until delivered or dead.

- `deliveryId` (string (uuid), required)
- `event` ("delivered" | "bounced" | "deferred" | "spam_complaint" | "unsubscribed" | "cap_warning" | "cap_reached" | "inbound", required)
- `messageId` (string (uuid) or null, required): Null for an event about usage rather than a message.
- `inboundMessageId` (string (uuid) or null, required): The received message an inbound event is about; null for every other event.
- `status` ("pending" | "delivered" | "dead", required): pending is waiting for its next attempt; dead gave up and can be replayed.
- `attempts` (integer, required)
- `nextAttemptAt` (string (date-time) or null, required): When the next attempt is due, while pending.
- `lastStatusCode` (integer or null, required): The HTTP status the endpoint last answered.
- `lastError` (string or null, required): Why the last attempt failed, when it did.
- `deliveredAt` (string (date-time) or null, required)
- `createdAt` (string (date-time), required)

Example:

```json
{
  "deliveryId": "9e8d7c6b-5a4f-4e3d-9c2b-1a0f9e8d7c60",
  "event": "delivered",
  "messageId": "5f432ffd-c005-499b-aa3a-5b8a088ea20e",
  "inboundMessageId": null,
  "status": "pending",
  "attempts": 0,
  "nextAttemptAt": "2026-09-15T12:05:00.000Z",
  "lastStatusCode": 200,
  "lastError": null,
  "deliveredAt": null,
  "createdAt": "2026-09-15T12:00:02.000Z"
}
```

## Errors

Every error answers `error`, the code, and `message`, a sentence for a person. A code that adds fields is shown in full below the table.

| Code | Status | Meaning |
| --- | --- | --- |
| `unauthorized` | 401 | The key is missing, malformed or revoked. |
| `wrong_token_kind` | 403 | The key is of the other kind: a server key (sk_) where an account key (ak_) is needed, or the reverse. The message names the kind the operation takes. |
| `not_found` | 404 | No such webhook or delivery of this server. |
