# Replay a webhook delivery Replay a webhook delivery in the authenticated project environment. ## Requirements A secret API key with `webhooks:write`. Resources are restricted to the key's project and environment. ## Path parameters | Name | Type | Required / default | Description | | --- | --- | --- | --- | | endpointId | string | Required | ID returned when creating the webhook. | | deliveryId | string | Required | ID of a delivery for this endpoint. | ## Query parameters | Name | Type | Required / default | Description | | --- | --- | --- | --- | | projectId | string | Key project | Must match the key's project. | | environmentId | string | Key environment | Must match the key's environment. | ## Request body | Name | Type | Required / default | Description | | --- | --- | --- | --- | | expectedReplayCount | integer | Required | The current replayCount, from 0 to 99. | ## Example Set `RELAYRTC_API_URL` to your API base including `/v1`, such as `http://localhost:8082/v1`. ```bash curl -X POST "$RELAYRTC_API_URL/webhooks/webhook_example/deliveries/delivery_example/replay" \ -H "Authorization: Bearer $RELAYRTC_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{"expectedReplayCount":0}' ``` ## Response `202` with the queued delivery, including its incremented `replayCount`. ```json { "id": "delivery_example", "endpointId": "webhook_example", "eventId": "event_example", "projectId": "project_example", "environmentId": "environment_example", "url": "https://your-app.example/webhooks/relayrtc", "status": "pending", "attemptCount": 0, "runAttemptCount": 0, "replayCount": 1, "lastError": null, "nextAttemptAt": "2026-01-01T12:00:00.000Z", "deliveredAt": null, "runStartedAt": "2026-01-01T12:00:00.000Z", "createdAt": "2026-01-01T12:00:00.000Z", "updatedAt": "2026-01-01T12:00:00.000Z" } ``` ## Notes The endpoint must be enabled. The delivery must be succeeded, failed or cancelled and have the expected replay count. Conflicts return `409`. Replay preserves event and delivery IDs and starts a new retry budget. > **Replay can repeat side effects** > Your receiver must deduplicate by event ID. There are at most 100 explicit replays per delivery. ## Errors Invalid fields return `400`. Invalid credentials return `401`; a missing scope returns `403`. A missing resource returns `404`. See [error responses](/reference/api/v1/errors).