Redeliver a dead webhook delivery
const url = 'https://api.sulpayments.ch/v1/webhook/deliveries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/redeliver';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.sulpayments.ch/v1/webhook/deliveries/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/redeliver \ --header 'Authorization: Bearer <token>'Requeues one of the merchant's own dead deliveries after the endpoint is
fixed: the delivery goes back to pending with a fresh attempt counter and
the sender retries it with the exact original payload. Only dead
deliveries can be redelivered — anything else (or another merchant's id)
is a 404.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Delivery id
Responses
Section titled “Responses”The delivery, requeued
One outbound notification delivery, as the owning merchant sees it. The endpoint, payload event and failure detail all describe the MERCHANT'S own webhook — nothing internal — so the whole row is safe to show. The frozen payload itself is not repeated here: it is exactly the settlement webhook body the merchant already receives.
object
pending (queued or mid-retry), delivered, or dead (retries
exhausted; eligible for redelivery).
The endpoint the delivery targets, frozen at enqueue time — a later config change does not rewrite history.
Examplegenerated
{ "attempts": 1, "created_at": "2026-04-15T12:00:00Z", "delivered_at": "2026-04-15T12:00:00Z", "delivery_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "event_type": "example", "last_error": "example", "next_attempt_at": "2026-04-15T12:00:00Z", "response_status": 1, "settlement_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example", "url": "example"}Missing or invalid API key
The error envelope every 4xx/5xx response uses. The error.code is
machine-stable across locales; error.message is localized via the
request's Accept-Language (en by default). error.fields is present only
for per-field validation failures.
object
The body of an [ErrorEnvelope].
object
Machine-stable error code (stable across locales).
Per-field validation errors, present only for validation_failed.
One field-level validation failure inside [ApiError::fields].
object
The machine-stable reason code for this field.
The request field the error applies to (e.g. webhook_url).
Human-readable message, localized by Accept-Language.
Example
{ "error": { "code": "invalid_credentials", "fields": [ { "code": "invalid_credentials" } ], "message": "One or more fields are invalid." }}Unknown delivery, or not dead
The error envelope every 4xx/5xx response uses. The error.code is
machine-stable across locales; error.message is localized via the
request's Accept-Language (en by default). error.fields is present only
for per-field validation failures.
object
The body of an [ErrorEnvelope].
object
Machine-stable error code (stable across locales).
Per-field validation errors, present only for validation_failed.
One field-level validation failure inside [ApiError::fields].
object
The machine-stable reason code for this field.
The request field the error applies to (e.g. webhook_url).
Human-readable message, localized by Accept-Language.
Example
{ "error": { "code": "invalid_credentials", "fields": [ { "code": "invalid_credentials" } ], "message": "One or more fields are invalid." }}