Redeliver
Sends the event of a delivery again.
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.
api_keyAuthorizationBearer <token>API key (mk_...)
id*stringIdentifier of the resource, as returned by the API.
^([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)$uuidIdempotency-Key?stringOptional. 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.
1 <= length <= 255A 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- response
One delivery of one event to one endpoint, with the outcome of the last attempt.
id*stringOpaque unique identifier of the delivery. It is the X-Marketapi-Delivery-Id header we sent.
^([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)$uuidendpointId*stringThe endpoint the event was sent to.
^([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)$uuideventId*stringThe event delivered: the id of the body. A redelivery repeats it.
^([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)$uuideventType*stringType of the event delivered.
"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*stringState 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.
"pending""delivered""failed"attempt*integerAttempts already made. 0 while the first one has not happened.
0 <= value <= 9007199254740991responseCode*|HTTP status your endpoint answered on the last attempt. null when there was no answer (timeout, network).
-9007199254740991 <= value <= 9007199254740991responseMs*|How long the last attempt took, in milliseconds. null before the first attempt.
-9007199254740991 <= value <= 9007199254740991error*|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).
^(?:(?:\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))$date-timedeliveredAt*|When your endpoint answered 2xx, in ISO-8601 (UTC). null before that.
^(?:(?:\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))$date-timecreatedAt*stringWhen the delivery was created, in ISO-8601 (UTC).
^(?:(?:\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))$date-timeupdatedAt*stringWhen the delivery last changed, in ISO-8601 (UTC).
^(?:(?:\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))$date-timecurl -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"}