Sends every replayable delivery in a time window to your endpoints again.
POST
/api/notifications/events/replay
deprecated
Requires: Notifications.Events.Replay, merchant scope.
The bulk form of the single replay, for a receiver that was down: give it the window your receiver was unavailable for and the platform replays what did not land, one delivery at a time, on its own delivery path. <b>The window says what to look at; it does not say how much this call will do.</b> One call takes on at most a hundred deliveries and spends at most sixty seconds starting them, plus however long the last one it started takes to reach a verdict. Everything it selected but never reached is reported as `notAttempted` rather than dropped. <b>Run the same request again while `reachedCap` is true or `notAttempted` is above zero</b>, until both are clear. <b>Running it again is safe and needs no idempotency key.</b> A delivery that succeeded on the previous run is no longer replayable, so a repeat run only touches what is still outstanding. <b>The same per-endpoint replay budget applies</b>, shared with the single replay, so a run against a receiver that has only just come back cannot stampede it. Deliveries the budget refused are counted under `rateLimited` and are untouched, so a later run picks them up.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a ReplayWebhookEventsInput. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
fromUtc
required |
string (date-time) | The start of the window, in UTC. |
toUtc
required |
string (date-time) | The end of the window, in UTC. |
status
required |
all of DeliveryStatus | Narrows to one status. Only `Failed`, `DeadLettered` and `Skipped` can be replayed; leave it unset to take on all three. nullable |
eventType
required |
string | Narrows to one event type. Leave it unset to take on every event type. nullablemax length 512 |
This request body has no documented fields.
Responses
200 The tally of what the run did.
Body: WebhookEventRedriveResultDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
considered
required |
integer (int32) | Deliveries selected in the window. |
delivered
required |
integer (int32) | Accepted by your endpoint. |
attempted
required |
integer (int32) | Contacted and not accepted. |
notSent
required |
integer (int32) | Held back by the platform; nothing was contacted. |
notRetryable
required |
integer (int32) | No longer in a replayable state by the time the run reached them. |
suppressed
required |
integer (int32) | Refused because the destination endpoint is actively suppressed. |
rateLimited
required |
integer (int32) | Refused because the endpoint's replay budget for this window is spent. |
failed
required |
integer (int32) | Reset, then the attempt ended in a state the platform cannot summarise. |
notAttempted
required |
integer (int32) | Selected but never started, because the run reached its time budget. |
reachedCap
required |
boolean | True when the selection filled the platform's batch cap, so there is likely more in the window. Run the same request again. |
This response has no documented body fields.
400 The window is malformed, wider than the platform allows, or narrowed to a status that cannot be replayed.
Body:
Each item has these fields.
| Field | Type | Description |
|---|
This response has no body.
403 The credential resolves no single merchant.
Body:
Each item has these fields.
| Field | Type | Description |
|---|
This response has no body.
409 The platform cannot attempt a delivery in its current state. Nothing was changed.
Body:
Each item has these fields.
| Field | Type | Description |
|---|
This response has no body.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.