---
title: "Replay failed deliveries since a time"
method: POST
path: "/api/v1/webhooks/{id}/replay-failed"
tags: ["webhooks"]
---

# Replay failed deliveries since a time

`POST /api/v1/webhooks/{id}/replay-failed`

## Request

- Base URL: `https://app.blueticked.com`
- URL: `https://app.blueticked.com/api/v1/webhooks/{id}/replay-failed`
- Auth: HTTP bearer

After your endpoint was down, queue a fresh attempt for every delivery of this subscription that failed for good since a time.

since is an ISO 8601 time, at most 7 days ago. Deliveries that failed for good (status=failed) created at or after it are replayed, oldest first.

At most 100 replays per call; remaining counts the rest, so call again until it is 0. more: true means more failed deliveries exist than one call reads: move since forward past the last one replayed and call again, since the same since re-reads the same oldest deliveries.

A delivery that already has a replay is skipped, so calling again never sends one event twice; so is one whose payload was removed (90-day retention or a contact's erasure). Concurrent bulk replays of this webhook are refused with 409 conflict and Retry-After: 60 while its replay lock is held. Retry after the first finishes; it skips the deliveries already replayed. If the lock service is unavailable, the call answers 503 service_unavailable. Local development without Redis skips the lock and logs a warning.

Each replay is sent to the subscription's current URL and signed with its current secret, with replay=true and replay_of=<original delivery id> in the payload.

The subscription must exist and be active. Limited to 10 calls an hour per workspace, shared with the dashboard. Send Idempotency-Key so a network retry replays the first answer.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `since` string

## Response `202`

Success

- object
  - `replayed` number, required
  - `queued` number, required
  - `remaining` number, required
  - `more` boolean, required
  - `skipped` object, required
    - `already_replayed` number, required
    - `payload_removed` number, required
  - `delivery_ids` string[], required
  - `request_id` string, required

## Other responses

- `400`: Validation failed
- `401`: Unauthorized: missing or invalid API key
- `402`: Insufficient wallet balance
- `403`: Forbidden: scope, plan limit, or suspension
- `404`: Not found
- `409`: Conflict (idempotency-key reuse or resource in use)
- `413`: Request body above the endpoint's size limit
- `422`: Understood but refused: the request is well-formed, the action is not permitted for this resource
- `429`: Rate limited
- `500`: Internal error
- `502`: An upstream provider refused or failed the request
- `503`: Channel or send queue unavailable

---

[API](https://skmtc.dev/blueticked/apis/blueticked-api.md) · [All operations](https://skmtc.dev/blueticked/apis/blueticked-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blueticked/apis/blueticked-api/revisions/07132284f4ff?raw)
