API reference · Orders
List an order's add-on requests (not yet available)
/orders/{orderId}/addition-requestsNot yet available. Order additions are switched off in production and in the sandbox, so no buyer can ask for added cards and no offer can be sent: the lists answer eligibility.eligible: false with the reason feature_disabled, and sendOrderAdditionOffer answers 422 ORDER_ADDITION_NOT_ELIGIBLE. Do not build against this operation yet; the changelog announces when additions open. The example request shows the shape only and cannot succeed in the sandbox: sending an offer answers 422 ORDER_ADDITION_NOT_ELIGIBLE, and declining a request or withdrawing an offer answers 404 because none can exist. Read every request a buyer has made to add cards to the order, pending and answered, newest first, with eligibility saying whether the order can still take an add-on. A request reserves no stock and quotes no price. Answer a pending request with POST /orders/{orderId}/addition-offers naming it in requestRef, or decline it with POST /orders/{orderId}/addition-requests/{requestRef}/decline. Use this list to recover a missed order.addition_request.* event: each event carries one of these requests.
Example
These examples send requests to the sandbox.
Replace the example orderId in the URL with your own.
curl --request GET \
--url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/orders/ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW/addition-requests' \
--header "Authorization: Bearer $MARKETPLACE_API_KEY"{
"success": true,
"data": {
"eligibility": {
"eligible": true,
"reasons": []
},
"requests": [
{
"request_ref": "oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925",
"status": "pending",
"lines": [
{
"sku_id": 14602,
"product_id": 86,
"quantity": 2,
"name": "Abyssal Nightstalker",
"set_name": "Portal Second Age",
"condition": "Near Mint",
"category_name": "Magic: The Gathering",
"language": "English",
"finish": "Normal",
"collector_number": null,
"rarity": "Uncommon"
}
],
"note": "Two more for my sideboard, please",
"support_case_id": null,
"created_at": "2026-09-04T19:01:12.000Z",
"resolved_by_party": null,
"resolved_at": null,
"resolution_note": null
}
]
}
}Endpoint
| Environment | URL |
|---|---|
| Sandbox | https://api-sandbox.snapcaster.ca/api/v1/marketplace |
| Production | https://api.snapcaster.ca/api/v1/marketplace |
marketplaceApiKey-http bearer. Send the seller's marketplace API key asAuthorization: Bearer mp_{sellerCode}_{hex}. Themp_{sellerCode}_prefix identifies the seller; the trailing hex is the secret. The seller generates the key and supplies it to your platform.
Request
Path parameters
orderIdstring requiredThe opaque public order id (the webhook/poll
order_id).Constraints: minimum length: 1 Example
ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW
Headers
X-Snapcaster-Api-VersionstringOverride the platform pin for this request only. Webhook versions and the platform pin do not change.
Constraints: allowed values:
2026-10Example2026-10
Response
200
The order's eligibility and its add-on requests.
Response body: Order
successboolean requiredWhether the operation completed as requested.
Constraints: allowed values:
trueExampletruedataobject requiredThe operation or event payload.
Show child fieldsHide child fields
data.eligibility OrderrequiredAddition Eligibility Show child fieldsHide child fields
data.boolean requiredeligibility. eligible Example
truedata.array of string requiredeligibility. reasons EVERY reason this order cannot carry an addition, not just the first, so a client can say all of it at once.
feature_disabled: additions are not open in this environment yet.guest_order: the order has no signed-in buyer, so nobody can approve a later payment.handoff_checkout: the checkout happened on the seller’s own store, so Snapcaster never captured the original payment.platform_incompatible: the seller fulfils through a connected platform whose contract has not yet been shown to consume additions correctly.order_not_active: the order has shipped, been delivered, been fully cancelled or been refunded - additional cards need a new order (a PARTIALLY cancelled order is still active and still eligible).terms_missing: the payment that captured the order cannot state its frozen fee terms, so an addition has nothing to be priced from. Empty wheneligibleis true.Field example
[]
data.requests OrderrequiredAddition Request[] The order’s whole ask history, newest first.
Show child fieldsHide child fields
data.string requiredrequests[]. request_ref The opaque public request id (
oar_…) - the{requestRef}of the withdraw and decline paths.Example
oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925data.string requiredrequests[]. status pendingis the one open state.withdrawnis the buyer taking their own ask back;declinedis the seller’s answer;offeredmeans the seller ANSWERED it with a payable offer, whose own lifecycle carries on underaddition-offersand which names this request. All three endings are one-way and change nothing else about the order.Constraints: allowed values:
pending,withdrawn,declined,offeredExamplependingdata.requests[]. lines OrderrequiredAddition Request Line[] The cards asked for, with enough canonical catalog identity frozen at the ask to say which PRINTING was meant - condition, finish, language, collector number - so a later catalog correction cannot change what was understood.
Show child fieldsHide child fields
data.integer requiredrequests[]. lines[]. sku_id The exact printing asked for. This is the identity; everything beside it is frozen from it.
Example
14602data.integer requiredrequests[]. lines[]. product_id See Canonical catalog in Core concepts.
Example
86data.integer requiredrequests[]. lines[]. quantity The number of units.
Example
2data.string or null requiredrequests[]. lines[]. name Example
Abyssal Nightstalkerdata.string or null requiredrequests[]. lines[]. set_name Example
Portal Second Agedata.string or null requiredrequests[]. lines[]. condition The normalized condition assigned to the card.
Example
Near Mintdata.string or null requiredrequests[]. lines[]. category_name Example
Magic: The Gatheringdata.string or null requiredrequests[]. lines[]. language The language of the card printing.
Example
Englishdata.string or null requiredrequests[]. lines[]. finish The catalog’s printing, under the name the order line snapshot uses.
Example
Normaldata.string or null requiredrequests[]. lines[]. collector_number Example
nulldata.string or null requiredrequests[]. lines[]. rarity The rarity assigned to the card printing.
Example
Uncommon
data.string or null requiredrequests[]. note The buyer’s own words beside the ask; null when none was given.
Example
Two more for my sideboard, pleasedata.integer or null requiredrequests[]. support_case_id The support conversation the ask came out of, when there was one; null otherwise.
Example
nulldata.string requiredrequests[]. created_at Example
2026-09-04T19:01:12.000Zdata.string or null requiredrequests[]. resolved_by_party Who ended the ask -
buyeron a withdrawal,selleron a decline. Null while pending.Constraints: allowed values:
buyer,seller,operator,system,nullExamplenulldata.string or null requiredrequests[]. resolved_at Example
nulldata.string or null requiredrequests[]. resolution_note The seller’s short reason on a decline, shown to the buyer beside the ending.
Example
null
Errors
Errors return a Marketplace body, except HTTP 500 (Api). Error codes explains both error bodies and lists every code.
400
INVALID_REQUESTUNSUPPORTED_API_VERSIONThe request failed validation (
INVALID_REQUEST). Unknown or retired API-version override (UNSUPPORTED_API_VERSION).Do this: Correct the fields named in the error details, then retry the request. For UNSUPPORTED_API_VERSION, choose a supported version from the API versioning guide.
401
UNAUTHORIZEDMissing or invalid marketplace API key (
UNAUTHORIZED).Do this: Send the marketplace API key for this seller as a Bearer token, then retry.
403
SUBSCRIPTION_EXCLUDES_ORDERSThe platform's subscription is
inventory, which does not include orders (SUBSCRIPTION_EXCLUDES_ORDERS). Onlyordersandbothsubscriptions read and act on orders.Do this: Do not retry. Ask Snapcaster to change the platform subscription to
ordersorbothif the platform should handle orders.404
ORDER_NOT_FOUNDNo order matches this id for the authenticated seller (
ORDER_NOT_FOUND). Another seller's order also returns 404, so the response does not reveal whether it exists.Do this: Check the order_id against GET /orders for the authenticated seller, then retry with that id.
500
INTERNAL_ERRORAn unexpected failure (
INTERNAL_ERROR).Do this: Retry with bounded retries and jitter. If the failure persists, contact Snapcaster with the X-Correlation-ID response header.