API reference · Webhooks
Cancellation request withdrawn
order.cancellation_request.withdrawnSnapcaster sends this event when the buyer withdraws a pending cancellation request. Nothing on the order changes: ship it as sold. status is withdrawn and resolved_at is when the buyer withdrew it.
data is the request as GET /orders/{orderId}/cancellation-requests returns it, plus seller_id. If you miss an event, read that list: every change to a request also brings the order back into the GET /orders poll.
The envelope, signing and retries match order.created; see https://developers.snapcaster.ca/guide/webhook-signing and https://developers.snapcaster.ca/guide/path-b#delivery-semantics. Subscriptions orders and both receive it; an inventory subscription never does. Deduplicate by event_id. Events can arrive out of order, so compare created_at.
Example
{
"event_id": "evt_sandbox_01K4A9H8P2V5S3M7G9K1D6X0QZ",
"type": "order.cancellation_request.withdrawn",
"created_at": "2026-09-04T19:12:30.000Z",
"data": {
"id": "cnr_8d3f2a61b0c94e7f9a15c2d48e6b7031",
"order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
"status": "withdrawn",
"reason": "Ordered the wrong printing",
"resolution_note": null,
"created_at": "2026-09-04T19:01:12.000Z",
"resolved_at": "2026-09-04T19:12:30.000Z",
"lines": [
{
"line_ref": "oln_1f0c8a4d7e2b45c9a1d6f3b8e07c9241",
"sku_id": 14602,
"quantity": 1
}
],
"seller_id": 42
},
"api_version": "2026-10"
}Signature headers
Snapcaster sends a POST to your webhook endpoint with these headers. Webhook signing shows how to verify them.
X-Snapcaster-Timestampstring requiredUnix seconds when the request was signed; reject if outside a ±5 minute window.
X-Snapcaster-Signaturestring requiredsha256=+ lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).
Delivery payload
The signed order.cancellation_request.withdrawn event.
Payload type: Cancellation
Envelope fields
event_idstring requiredA globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).
Example
evt_sandbox_01K4A9H8P2V5S3M7G9K1D6X0QZtypestring requiredThe event type (STABLE).
Constraints: allowed values:
order.cancellation_request.withdrawnExampleorder.cancellation_request.withdrawncreated_atstring requiredISO-8601 UTC instant of the change the event reports; unchanged across retries (STABLE).
Example
2026-09-04T19:12:30.000ZdataCancellationrequiredRequest Event Data The operation or event payload.
api_versionstring requiredThe dated API version used for this payload, frozen when Snapcaster queued the delivery. Changing the platform pin does not change queued events or retries; they keep the same version. See https://developers.snapcaster.ca/guide/api-versioning (STABLE).
Constraints: allowed values:
2026-10Example2026-10
Payload fields
data.string requiredid The cancellation request id (
cnr_…), stable for the life of the request (STABLE).Example
cnr_8d3f2a61b0c94e7f9a15c2d48e6b7031data.string requiredorder_id The order the buyer asked to cancel (STABLE).
Example
ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VWdata.string requiredstatus pendinguntil it is answered.honored: a cancellation covered it.declined: the seller refused it, withresolution_note.withdrawn: the buyer took it back (STABLE).Constraints: allowed values:
pending,honored,declined,withdrawnExamplewithdrawndata.string or null requiredreason The buyer's own words, or null when they gave none (STABLE).
Example
Ordered the wrong printingdata.string or null requiredresolution_note The decline reason the buyer is shown. Null unless
statusisdeclined(STABLE).Example
nulldata.string requiredcreated_at When the buyer opened the request (STABLE).
Constraints: format: date-time Example
2026-09-04T19:01:12.000Zdata.string or null requiredresolved_at When the request was honored, declined or withdrawn. Null while it is pending (STABLE).
Constraints: format: date-time Example
2026-09-04T19:12:30.000Zdata.array of object or null requiredlines The lines the buyer asked to cancel, or null when they asked to cancel the whole order (STABLE).
Show child fieldsHide child fields
data.string or null requiredlines[]. line_ref The purchase line the buyer asked to cancel, the same
line_refthe order carries. Null only on a request recorded before line refs existed.Example
oln_1f0c8a4d7e2b45c9a1d6f3b8e07c9241data.integer requiredlines[]. sku_id The SKU now on that line (STABLE).
Example
14602data.integerlines[]. quantity How many units the buyer asked to cancel. Omitted means the whole line (STABLE).
Constraints: exclusive minimum: 0 Example
1
data.integer requiredseller_id The seller that owns the order. Use this id to route the event to the right store (STABLE).
Example
42
Receiver response
200 - Return any 2xx after verifying the event and durably accepting it. This event moves no stock, so its 2xx acknowledges no sale and leaves every stock hold as it was.