GET /orders/{orderId}/addition-requests

Not 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.

Generated cURL request - Sandbox
curl --request GET \
  --url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/orders/ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW/addition-requests' \
  --header "Authorization: Bearer $MARKETPLACE_API_KEY"
Response 200: One pending request
{
  "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

EnvironmentURL
Sandboxhttps://api-sandbox.snapcaster.ca/api/v1/marketplace/orders/{orderId}/addition-requests
Productionhttps://api.snapcaster.ca/api/v1/marketplace/orders/{orderId}/addition-requests
Authentication
  • marketplaceApiKey - http bearer. Send the seller's marketplace API key as Authorization: Bearer mp_{sellerCode}_{hex}. The mp_{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

orderId string required

The opaque public order id (the webhook/poll order_id).

Constraints: minimum length: 1 Example ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

Headers

X-Snapcaster-Api-Version string

Override the platform pin for this request only. Webhook versions and the platform pin do not change.

Constraints: allowed values: 2026-10 Example 2026-10

Response

200

The order's eligibility and its add-on requests.

Response body: OrderAdditionRequestListResponse

success boolean required

Whether the operation completed as requested.

Constraints: allowed values: true Example true

data object required

The operation or event payload.

Show child fieldsHide child fields
data.eligibility OrderAdditionEligibility required
Show child fieldsHide child fields
data.eligibility.eligible boolean required

Example true

data.eligibility.reasons array of string required

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 when eligible is true.

Field example[]
data.requests OrderAdditionRequest[] required

The order’s whole ask history, newest first.

Show child fieldsHide child fields
data.requests[].request_ref string required

The opaque public request id (oar_…) - the {requestRef} of the withdraw and decline paths.

Example oar_5c1e9a7f3b2d48e6a0f4c8d1b7e3a925

data.requests[].status string required

pending is the one open state. withdrawn is the buyer taking their own ask back; declined is the seller’s answer; offered means the seller ANSWERED it with a payable offer, whose own lifecycle carries on under addition-offers and which names this request. All three endings are one-way and change nothing else about the order.

Constraints: allowed values: pending, withdrawn, declined, offered Example pending

data.requests[].lines OrderAdditionRequestLine[] required

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.requests[].lines[].sku_id integer required

The exact printing asked for. This is the identity; everything beside it is frozen from it.

Example 14602

data.requests[].lines[].product_id integer required

See Canonical catalog in Core concepts.

Example 86

data.requests[].lines[].quantity integer required

The number of units.

Example 2

data.requests[].lines[].name string or null required

Example Abyssal Nightstalker

data.requests[].lines[].set_name string or null required

Example Portal Second Age

data.requests[].lines[].condition string or null required

The normalized condition assigned to the card.

Example Near Mint

data.requests[].lines[].category_name string or null required

Example Magic: The Gathering

data.requests[].lines[].language string or null required

The language of the card printing.

Example English

data.requests[].lines[].finish string or null required

The catalog’s printing, under the name the order line snapshot uses.

Example Normal

data.requests[].lines[].collector_number string or null required

Example null

data.requests[].lines[].rarity string or null required

The rarity assigned to the card printing.

Example Uncommon

data.requests[].note string or null required

The buyer’s own words beside the ask; null when none was given.

Example Two more for my sideboard, please

data.requests[].support_case_id integer or null required

The support conversation the ask came out of, when there was one; null otherwise.

Example null

data.requests[].created_at string required

Example 2026-09-04T19:01:12.000Z

data.requests[].resolved_by_party string or null required

Who ended the ask - buyer on a withdrawal, seller on a decline. Null while pending.

Constraints: allowed values: buyer, seller, operator, system, null Example null

data.requests[].resolved_at string or null required

Example null

data.requests[].resolution_note string or null required

The seller’s short reason on a decline, shown to the buyer beside the ending.

Example null

Errors

Errors return a MarketplaceError body, except HTTP 500 (ApiError). Error codes explains both error bodies and lists every code.

  • 400 INVALID_REQUEST UNSUPPORTED_API_VERSION

    The 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 UNAUTHORIZED

    Missing 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_ORDERS

    The platform's subscription is inventory, which does not include orders (SUBSCRIPTION_EXCLUDES_ORDERS). Only orders and both subscriptions read and act on orders.

    Do this: Do not retry. Ask Snapcaster to change the platform subscription to orders or both if the platform should handle orders.

  • 404 ORDER_NOT_FOUND

    No 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_ERROR

    An 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.