# POST /v2/webhooks/{id}/deliveries/{delivery_id}/redeliver

**Resend a delivery**

Resend a past delivery, with the exact body it carried, to the webhook's current target.

## Body parameters

| Name | In | Type | Required | Description |
|------|----|----|----------|-------------|
| `id` | path | string | yes | Webhook id. Example: `wh_smRsF3-z36o`. |
| `delivery_id` | path | string | yes | The delivery to resend, from `GET /v2/webhooks/{id}/deliveries`. Example: `dlv_abc123def456ghi7`. |

## Returns

- `as_of` (string) — Server time this response was assembled (ISO 8601).
- `id` (string) — The new delivery's id — `dlv_…`, listed on the deliveries route with its outcome.
- `webhook_id` (string) — The webhook it belongs to.
- `redelivery_of` (string) — The original delivery's id. Resending a resend still names the first one. It is the `X-Tickerbot-Delivery-Id` your endpoint receives.
- `status` (string) — `pending` — queued, sent on the next delivery pass with the full retry ladder.
- `created_at` (number) — When the resend was queued, in epoch seconds.

## Status codes

- **202** — Queued. The new delivery appears on the deliveries route and runs the full retry ladder like any other.
- **400** — Malformed id, a test fire (call `/test` again instead), or an in-app webhook (nothing goes over the wire).
- **404** — Webhook or delivery not found. Deliveries are kept for 90 days.
- **409** — `webhook_disabled` — turn the webhook back on with `POST /v2/webhooks/{id}/enable` first; or `delivery_pending` — the delivery is still being retried.

## Sample response

```json
{
  "as_of": "2026-10-26T18:41:01.000Z",
  "id": "dlv_Q1w2E3r4T5y6U7i8",
  "webhook_id": "wh_smRsF3-z36o",
  "redelivery_of": "dlv_abc123def456ghi7",
  "status": "pending",
  "created_at": 1793040061
}
```

## Notes

- The body is byte-identical to the original delivery. It goes to the webhook's current `target_url` (or Discord URL) and is signed with its current secret, so a resend after you moved your endpoint lands at the new one.
- `X-Tickerbot-Delivery-Id` carries the ORIGINAL delivery id, the same value every retry of it carried. If your receiver dedupes on that header, a resend of something it already processed is recognized as a duplicate.
- Delivered and failed deliveries can both be resent; test fires cannot. Send an `Idempotency-Key` header to make a retried call safe: the same key returns the first response instead of queueing a second resend.

---

Interactive sandbox + parameter editor: https://tickerbot.io/docs/endpoints/webhooks/redeliver
