Replay a delivery
/v1/webhooks/{id}/deliveries/{deliveryId}/replayQueues a new delivery row carrying the same event id and the same body. The stable event id lets a receiver that did eventually process the original recognise the replay as a duplicate; the new row keeps "we failed on Tuesday, you replayed on Thursday" visible in the log. Owner or admin only: a MEMBER's key or connection gets 403 forbidden.
Price
Free.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
id | path | string | Required | — | Webhook endpoint id. |
deliveryId | path | string | Required | — | Delivery id to replay. |
Responses
202 Accepted
{ delivery } — queued.
object
deliveryobjectrequiredidstringrequiredevent_idstringrequiredStable across replays, so a receiver can de-duplicate.event_typestringrequiredone ofrun.completed,tracker.changed,webhook.teststatusstringrequiredone ofpending,delivered,failedattemptsintegerrequiredresponse_statusintegerrequirednullableerrorstringrequirednullablerun_idstringrequirednullabletracker_idstringrequirednullablechange_report_idstringrequirednullablereplay_ofstringrequirednullablecreated_atstringrequiredlast_attempt_atstringrequirednullabledelivered_atstringrequirednullablefailed_atstringrequirednullable
202 · `{ delivery }` — queued.
{
"delivery": {
"id": "whd_51c8b0f9c0",
"event_id": "evt_pR4Vm8s2XqNb7cTfKdYw1E",
"event_type": "run.completed",
"status": "pending",
"attempts": 0,
"response_status": null,
"error": null,
"run_id": "run_8f2c1ad04b",
"tracker_id": null,
"change_report_id": null,
"replay_of": "whd_51c8b0f81a",
"created_at": "2026-09-08T10:02:00.000Z",
"last_attempt_at": null,
"delivered_at": null,
"failed_at": null
}
}400 Bad Request
invalid_request if the original is still being attempted, or the endpoint is not active.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
400 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "That delivery is still being attempted. Wait for it to settle before replaying it."
}401 Unauthorized
missing_authorization, invalid_key, key_revoked or invalid_token.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
401 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/invalid_key",
"title": "Invalid key",
"status": 401,
"code": "invalid_key",
"detail": "That API key does not exist. Keys look like `sk_live_...` and are created in the console."
}403 Forbidden
forbidden — the key's or connection's user is a MEMBER; only an owner or admin manages webhooks.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
403 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/forbidden",
"title": "Forbidden",
"status": 403,
"code": "forbidden",
"detail": "Only an owner or admin can manage webhooks."
}404 Not Found
not_found.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
404 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "No such delivery on that endpoint."
}Request samples
curl -X POST "https://www.shortsintel.com/v1/webhooks/whe_6d2f10ab44/deliveries/whd_51c8b0f7e3/replay" \
-H "Authorization: Bearer sk_live_YOUR_KEY"const response = await fetch(
"https://www.shortsintel.com/v1/webhooks/whe_6d2f10ab44/deliveries/whd_51c8b0f7e3/replay",
{
method: "POST",
headers: {
"Authorization": "Bearer sk_live_YOUR_KEY",
},
},
);
if (!response.ok) {
throw new Error(`ShortsIntel ${response.status}`);
}
const data = await response.json();import requests
response = requests.post(
"https://www.shortsintel.com/v1/webhooks/whe_6d2f10ab44/deliveries/whd_51c8b0f7e3/replay",
headers={
"Authorization": "Bearer sk_live_YOUR_KEY",
},
)
response.raise_for_status()
data = response.json()Related guides
This call creates a Run. It can answer 202 with the running Run. Poll GET /v1/runs/{id} until it settles; re-reading a Run is free.