Skip to content
TCGPlaytestdocsDashboard
Documentation API reference
API reference

Retrieve a cart

Read validation progress, quality warnings and checkout availability.

GET /v1/carts/{id}

GET/v1/carts/{id}

Use the exact id returned by POST. Successful reads return HTTP 200 and Retry-After: 3, including when the cart has failed validation. POST and GET use the same cart response shape.

Field / limitDescription
idOpaque cart ID. Keep it to poll and associate the cart with your customer/order.
statusvalidating, open, failed, converted, expired, blocked or cancelled; handling is listed below.
external_refYour reference string, or null.
card_count / card_stockInteger sum of item quantities; stock is "standard".
affiliate_codeSaved affiliate-code string copied at creation for hosted checkout, or null. Prepaid carts use null and do not earn an affiliate commission. Read-only; existing carts keep their original setting.
progress.done / progress.totalIntegers: completed unique-URL checks (including failures) / all unique URLs in this cart.
warningsAdvisory array of {item_index, side, code, message, width, height, recommended_width, recommended_height}. image_low_resolution does not fail a cart. Show the warning before ordering; hosted checkout also asks the customer to acknowledge it.
errorsArray of {item_index, side, code, message}. item_index is zero-based; side is front or back. Empty when no errors have been recorded.
partner_terms_versionPartner terms version saved by the server, or null for older carts without that record.
modetest or live.
settlementPresent as "prepaid" or "connect" for those carts. Omitted for hosted checkout.
retail_amount_centsWhole-cart card-sale subtotal in USD cents. Required only for Connect requests and returned for Connect carts. Shipping and tax are added separately.
checkout_urlPresent only for an open hosted-checkout cart. Always omitted for prepaid carts and other statuses, not null. Use a returned URL verbatim.
order_idManufacturing order ID after payment is recorded; otherwise null. Use this for GET /v1/orders/{id}.
created_at / expires_atRFC 3339 timestamp strings with timezone, for example 2026-10-06T12:00:00.000Z. UTC may also be represented by +00:00; fractional seconds can vary.
  • validating: continue polling. Errors can appear as checks finish; wait for the terminal result to get every bad item/side.
  • open: checks passed. For hosted checkout, open the cart with TCGPlaytest.checkout(cart) on your page; test mode opens the simulated checkout flow. For settlement: prepaid, continue with quote → reserve → submit on your server.
  • failed: stop polling, inspect all errors, fix the inputs and create a new cart with a new Idempotency-Key. Keep your existing API key.
  • converted: hosted payment, or both printing credit and customer shipping/tax payment, funded the order. An order ID is available; use order status/webhooks. For prepaid orders this does not verify the shopper's separate card purchase in your store.
  • expired, blocked, cancelled: checkout is unavailable. Stop polling; do not retry blocked content. An expired cart needs a new cart and idempotency key.

Example open response (test mode):

Open cart response
{
  "id": "cart_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "open",
  "external_ref": "store-order-1042",
  "card_count": 3,
  "card_stock": "standard",
  "affiliate_code": null,
  "progress": {
    "done": 2,
    "total": 2
  },
  "errors": [],
  "warnings": [],
  "partner_terms_version": "2026-10-04-partner-v2",
  "mode": "test",
  "order_id": null,
  "expires_at": "2026-10-13T12:00:00.000Z",
  "created_at": "2026-10-06T12:00:00.000Z",
  "checkout_url": "https://partner.tcgplaytest.com/partner-checkout/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
}

Example failed response with two errors for the same item:

Failed cart response
{
  "id": "cart_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "failed",
  "external_ref": "store-order-1042",
  "card_count": 3,
  "card_stock": "standard",
  "affiliate_code": null,
  "progress": {
    "done": 2,
    "total": 2
  },
  "errors": [
    {
      "item_index": 0,
      "side": "front",
      "code": "image_invalid",
      "message": "Image is not a readable PNG or JPEG."
    },
    {
      "item_index": 0,
      "side": "back",
      "code": "image_unreachable",
      "message": "Image could not be downloaded."
    }
  ],
  "warnings": [],
  "partner_terms_version": "2026-10-04-partner-v2",
  "mode": "test",
  "order_id": null,
  "expires_at": "2026-10-13T12:00:00.000Z",
  "created_at": "2026-10-06T12:00:00.000Z"
}

24 topics

Get startedOverview

Everything you need to turn artwork into printed cards.

Get startedFirst order in 10 minutes

A runnable sandbox example from test key to verified webhook delivery.

Get startedOrder with AI · MCP

Connect ChatGPT, Claude, Gemini or your developer tools, preview your cards and check out without a TCGPlaytest account or customer API key.

Get startedTest checkout & events

Simulate checkout, verify the order, return to your store and trigger signed test events.

Get startedQuickstart & authentication

Set up your account, protect your API key and make your first integration.

Get startedHow checkout works

Create a cart, wait for artwork validation and open checkout on your website.

Get startedCode examples

Working server examples in your preferred language.

Build your integrationCheckout widget

Connect finished images to a ready-made review and checkout experience.

Build your integrationEmbedded checkout

Keep delivery details and artwork confirmation inside your own website.

Build your integrationCheckout branding

Make checkout feel like your store with saved branding and style presets.

Build your integrationCustom success page

Return customers to your registered website after verified payment.

Build your integrationStripe Connect payouts

Set your card selling price and receive earnings, with a 5% reserve for 15 days.

Build your integrationPrinting credits

Use your balance for printing, with customer shipping and tax paid through Stripe.

API referenceUpload artwork

Request a temporary upload URL. Send file bytes directly to private storage.

API referenceCreate a cart

Submit finished artwork, quantities and your success URL for validation.

API referenceRetrieve a cart

Read validation progress, quality warnings and checkout availability.

API referenceRetrieve an order

Track a funded manufacturing order from payment to shipment.

API referenceWebhooks

Receive signed order updates on your server.

ResourcesArtwork & API limits

File specifications, card limits and request allowances for this deployment.

ResourcesErrors & retries

Understand failures and retry safely without creating duplicate carts.

ResourcesGoing live

Partner launch checklist: verified orders, allowed origins and live checkout.

ResourcesAffiliate codes

Apply your approved affiliate preference to new carts.

ResourcesExpiry & retention

Understand cart lifetimes, artwork storage and cleanup.

ResourcesTerms & image rights

Know your responsibilities and the customer acceptance requirements.