Webhooks

Redeliver

Sends the event of a delivery again.

POST
/v1/webhooks/deliveries/{id}/redeliver

Creates a new delivery of the same event to the same endpoint, which goes out within a second. The response is 202, with the new delivery. The original delivery does not change.

Use it after fixing your endpoint, to recover events that failed. The event id repeats, so your code deduplicates with no extra work. The dashboard has the same Redeliver button in the delivery log.

Authorization

api_key
headerAuthorizationBearer <token>

API key (mk_...)

Path Parameters

id*string

Identifier of the resource, as returned by the API.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Header Parameters

Idempotency-Key?string

Optional. A unique value (for example a UUID), 1 to 255 characters, that makes the request safe to retry: repeating it with the same body within 24h returns the original response with Idempotency-Replayed: true instead of running the operation again. Scoped to your account. Reusing it with a different body returns 409.

Length1 <= length <= 255

Response Body

A new delivery of the same event to the same endpoint was created; it goes out within a second. The body is the new delivery. The event id repeats, so your endpoint can deduplicate.

application/json
  1. response

One delivery of one event to one endpoint, with the outcome of the last attempt.

id*string

Opaque unique identifier of the delivery. It is the X-Marketapi-Delivery-Id header we sent.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
endpointId*string

The endpoint the event was sent to.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
eventId*string

The event delivered: the id of the body. A redelivery repeats it.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
eventType*string

Type of the event delivered.

Value in"connection.created""connection.updated""connection.revoked""link_session.completed""seller.created""seller.updated""seller.deleted""product.created""product.updated""product.archived""variant.created""variant.updated""variant.archived""inventory.movement_created""inventory.published""warehouse.created""warehouse.updated""warehouse.archived""marketplace_product.created""marketplace_product.updated""listing.created""listing.updated""listing.deleted""listing.status_changed""listing.external_changed""listing.conflict_created""listing.conflict_resolved""asset.ready""asset.failed""order.created""order.updated""order.cancelled""job.completed""job.partially_completed""job.failed"
status*string

State of the delivery. pending: not delivered yet, waiting for an attempt or a retry. delivered: your endpoint answered 2xx. failed: every attempt failed, or the endpoint was paused.

Value in"pending""delivered""failed"
attempt*integer

Attempts already made. 0 while the first one has not happened.

Range0 <= value <= 9007199254740991
responseCode*|

HTTP status your endpoint answered on the last attempt. null when there was no answer (timeout, network).

Range-9007199254740991 <= value <= 9007199254740991
responseMs*|

How long the last attempt took, in milliseconds. null before the first attempt.

Range-9007199254740991 <= value <= 9007199254740991
error*|

Why the last attempt failed (for example HTTP 500 or a timeout). null when it did not fail.

nextRetryAt*|

When the next attempt happens, in ISO-8601 (UTC). null when there is none (delivered or failed).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
deliveredAt*|

When your endpoint answered 2xx, in ISO-8601 (UTC). null before that.

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
createdAt*string

When the delivery was created, in ISO-8601 (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
updatedAt*string

When the delivery last changed, in ISO-8601 (UTC).

Match^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
Formatdate-time
curl -X POST "https://example.com/v1/webhooks/deliveries/3d1c8a52-7f0e-4b0a-8a65-9c1b2f6d7e01/redeliver"
{  "id": "d1e2f3a4-b5c6-4d7e-8f90-a1b2c3d4e5f6",  "endpointId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",  "eventId": "e1d2c3b4-a5f6-4e7d-8c9b-0a1b2c3d4e5f",  "eventType": "connection.created",  "status": "delivered",  "attempt": 1,  "responseCode": 200,  "responseMs": 84,  "error": null,  "nextRetryAt": null,  "deliveredAt": "2026-10-06T14:32:02.000Z",  "createdAt": "2026-10-06T14:32:01.000Z",  "updatedAt": "2026-10-06T14:32:02.000Z"}