Skip to main content
POST
/
events
/
{event_id}
/
replay
Replay a past event
curl --request POST \
  --url https://api.zopay.cash/connect/v1/events/{event_id}/replay \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "object": "<string>",
  "event_id": "<string>",
  "status": "<string>",
  "attempt_count": 123
}
Encola una nueva entrega webhook contra tu URL actual con el secreto actual. El X-ZoPay-Event-Id será el mismo evt_… que la entrega original — tu handler debe deduplicar por ese id.
  • Idempotencia obligatoria. Misma (org, Idempotency-Key, body) dentro de 24h devuelve la entrega original sin encolar otra.
  • Replayable siempre. Incluso eventos que ya entregaron 2xx pueden replicarse.
  • Auditoría acumulativa. Cada replay crea una fila nueva en webhook_deliveries — el historial crece, no muta.
TriggerHTTPCode
Evento no existe (o cross-tenant)404event_not_found
Ningún webhook endpoint habilitado400webhook_endpoint_not_configured
Mismo Idempotency-Key con otro body409idempotency_conflict
Concepto en Events.

Authorizations

Authorization
string
header
required

Paste your Connect API key (sk_live_… for production, sk_test_… for sandbox) without the Bearer prefix. Mint and rotate keys from the admin panel.

Headers

Idempotency-Key
string | null
authorization
string | null

Path Parameters

event_id
string
required

Event id to replay, beginning with evt_. Same 404-on-anything-that-doesn't-match semantics as the single-event GET endpoint.

Response

Successful Response

Body of POST /connect/v1/events/:id/replay.

Returns the newly-enqueued webhook_deliveries row's id and initial state. Partners poll their dashboard / GET /webhook-deliveries to watch the replay's lifecycle; the delivery's terminal state (delivered / failed / exhausted) is set asynchronously by the cron worker.

id
string
required

The new webhook_deliveries row id (UUID, rendered as string). Distinct from the original delivery's id if this event was delivered before; each replay produces a fresh row for audit clarity.

object
string
required

Always webhook_delivery. Stripe-style discriminator so polymorphic partner-side handlers can dispatch.

event_id
string
required

The connect_events id the delivery row points at. Identical to the path-param event_id -- echoed for convenience.

status
string
required

Always pending on the response. The worker claims the row on its next tick and transitions it through processing to a terminal state (delivered / failed / exhausted).

attempt_count
integer
required

Always 0 on the response. The worker increments this on each attempt; a replay starts with a fresh budget.