---
title: "Send a past delivery again"
method: POST
path: "/v1/webhooks/deliveries/{id}/redeliver"
tags: ["Webhooks - Deliveries"]
---

# Send a past delivery again

`POST /v1/webhooks/deliveries/{id}/redeliver`

## Request

- Base URL: `https://api.0xarchive.io`
- URL: `https://api.0xarchive.io/v1/webhooks/deliveries/{id}/redeliver`
- Auth: API key in header `X-API-Key`

Queue a delivery that has already been attempted for another attempt. The delivery and event identifiers are unchanged, so a receiver that already processed the event can deduplicate on the event identifier. The record is reset in place: the retry window and the attempt counter start again from now, and the previous attempt's status, error and timing are cleared, so the log entry then describes the repeat rather than the original failure. If the delivery's endpoint is switched off the request is refused rather than queued, because nothing would be sent. A repeat delivery is a real signed delivery, so it counts against today's delivery budget, and it is refused on a plan without webhook delivery or once that budget is spent. Authenticate with an API key or a signed-in dashboard session. Costs no credits.

## Path parameters

- `id` string, uuid, required

## Response `200`

The delivery was queued for another attempt

- ApiResponseWebhookRedelivery: API response containing a delivery queued for another attempt.
  - `success` boolean
  - `data` WebhookRedelivery: A past delivery queued for another attempt. The identifiers are unchanged, because the delivery is re-queued in place.
    - `delivery_id` string, uuid, required: Delivery identifier, the same one that was asked for.
    - `event_id` string, uuid, required: Event identifier, unchanged, so a receiver that already processed this event can deduplicate on it.
    - `event_type` string, required: Event type being delivered again.
    - `state` 'pending', required: Always `pending` immediately after a repeat delivery is queued.
    - `attempts` integer, required: Attempt counter, restarted from zero.
    - `next_attempt_at` string, date-time, required: When the attempt is due, which is immediately.
  - `note` string: What the repeat delivery rewrites on the delivery record, and what it does not.

## Other responses

- `400`: Invalid request: a parameter, symbol, interval, cursor or time range failed validation. See `error_code`.
- `401`: Authentication required: the API key is missing or invalid.
- `404`: Not found. `not_found`: the resource id is unknown. `unsupported_for_venue`: the venue does not offer this datatype (`available_on` names where it is served). `route_not_found`: no route matches the path.
- `409`: Nothing was queued, either because the delivery's endpoint is switched off or because today's delivery budget is already spent.
- `429`: Rate limit, concurrency limit or monthly credits exceeded. See `error_code`.
- `default`: Any other error. The body is an `ErrorResponse`; branch on `error_code`. A 503 (`upstream_unavailable`) carries `Retry-After`.

---

[API](https://skmtc.dev/0xarchive/apis/0xarchive-api-2.md) · [All operations](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/0xarchive/apis/0xarchive-api-2/revisions/27076f55595f?raw)
