Skip to content
API PlatformDevelopers
POST/v1/webhooks/events/{event_id}/replaybeta

Replay an event

Needs
Manage webhook endpoints (webhooks:write)
Plan
Any plan with API access
Limits
60 a minute per key
Dry run
Yes — every check runs with ?dry_run=true, nothing changes
Confirm
Header Api-Confirm: replay
Undo
Cannot be undone: receivers get the event again.

Delivers a past event again, with its original payload, to one endpoint — or to every endpoint subscribed now if you leave endpoint_id out. Receivers get a duplicate and may act on it again. Only events from the last 30 days.

Try it

Path

The event id.

Body

Only this endpoint. Leave out for every subscribed endpoint.

Protects against doing it twice if you retry: a retry with the same key gets the first answer back instead of running again.

Test mode (dry run): nothing will change
Turns test mode off for this page only. It switches back when you leave the page.

Code and response

curl -X POST 'https://mcp.wa-api.cloud/v1/webhooks/events/evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC/replay?dry_run=true' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "endpoint_id": "ep_01J8Z6Q4M9W2X7K3B5N1R0T8YA"
}'

The code reads your key from $API_KEY.

Parameters

Parameters
FieldTypeWhat it is
event_idrequiredstring · pathThe event id.pattern ^evt_[0-9A-HJKMNP-TV-Z]{26}$

Body

Body fields
FieldTypeWhat it is
endpoint_idstringOnly this endpoint. Leave out for every subscribed endpoint.pattern ^ep_[0-9A-HJKMNP-TV-Z]{26}$Signed in? Pick one from your data with “My data”.

Headers

Headers
FieldTypeWhat it is
AuthorizationrequiredheaderBearer $API_KEY — your API key.
Api-VersionheaderThe API version to use, e.g. 2026-10-01. Default: the version your key is pinned to.one of: 2026-10-01 · pattern ^\d{4}-\d{2}-\d{2}$
Idempotency-KeyrequiredheaderRequired here. Any unique string (8–128 characters), e.g. your order id plus the step. Kept 24 hours. Not needed with dry_run=true.pattern ^[A-Za-z0-9._:-]+$ · 8–128 characters
Api-ConfirmrequiredheaderType the operation's verb (e.g. delete, submit) to confirm a change that cannot be undone or that WhatsApp or your customers see. Not needed with dry_run=true.

Response 202

Queued.

Response fields
FieldTypeWhat it is
event_idrequiredstring
queued_deliveriesrequirednumber
dry_runbooleantrue when this was a dry run: every check ran and nothing changed.

Errors

Errors are application/problem+json. Branch on code.

StatusCodeWhen
400invalid_input

A field is missing or has the wrong format. errors[] points at each field. Also returned when the Idempotency-Key header is missing, or was used before with a different body.

401unauthenticated

The Authorization header is missing, the key is unknown, expired or revoked.

403entitlement_required

The workspace's plan does not include API access (api_access).

403insufficient_scope

The key does not have the permission this operation needs.

404not_found

No event with this id, or it is older than 30 days.

409conflict

Also returned while a request with the same Idempotency-Key is still running.

428confirm_required

Send the header Api-Confirm: replay to confirm. Not needed with dry_run=true.

429rate_limited

The key or workspace went over its rate limit. Wait for Retry-After seconds.

503upstream_unavailable

A service behind the API is briefly unavailable. Safe to retry with backoff.

504timeout

The change did not finish in time. Retry with the same Idempotency-Key: it never runs twice.

Examples

Replay to one endpoint

Request body

{
  "endpoint_id": "ep_01J8Z6Q4M9W2X7K3B5N1R0T8YA"
}

Response 202

{
  "event_id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
  "queued_deliveries": 1
}

Operation path

The same operation is also at POST /v1/ops/webhooks_replay_event, with every field in the JSON body.