Skip to content

API referenceWebhooks

Replay a delivery

POST/v1/webhooks/{id}/deliveries/{deliveryId}/replay

Queues 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

NameInTypeRequiredDefaultDescription
idpathstringRequired—Webhook endpoint id.
deliveryIdpathstringRequired—Delivery id to replay.

Responses

202 Accepted

{ delivery } — queued.

object

  • deliveryobjectrequired
    • idstringrequired
    • event_idstringrequiredStable across replays, so a receiver can de-duplicate.
    • event_typestringrequiredone of run.completed, tracker.changed, webhook.test
    • statusstringrequiredone of pending, delivered, failed
    • attemptsintegerrequired
    • response_statusintegerrequirednullable
    • errorstringrequirednullable
    • run_idstringrequirednullable
    • tracker_idstringrequirednullable
    • change_report_idstringrequirednullable
    • replay_ofstringrequirednullable
    • created_atstringrequired
    • last_attempt_atstringrequirednullable
    • delivered_atstringrequirednullable
    • failed_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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"

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.

  • Runs: How a call becomes a Run, waiting inline, polling and free re-reads.
  • Webhooks: The events we send, how to verify a signature, what happens when your endpoint is down, and how to rotate a secret.