Skip to content
Merch to Order

Order custom shirts from your own software

Everything you can do on this site, your code or your AI assistant can do through a small JSON API: price an order, upload a logo, place the order, and read status and tracking. Same prices, same proof by email within 24 hours.

T-shirt printing API: key facts

  • →Base URL: https://merchtoorder.com/api/v1. Requests and responses are JSON.
  • →Authorization: Bearer <key>. Keys are created at /account/api and shown once.
  • →GET /products and POST /quote need no key. Orders need one.
  • →Product ids: classic-tee, premium-tee, hoodie, crewneck.
  • →POST /orders returns an order number. A proof is emailed within 24 hours and printing starts after you approve it by replying.
  • →API orders are paid by the invoice and payment link we email with the proof. Card payment through the API is coming later.
  • →There is no sandbox. POST /quote never creates an order, so use it to test pricing.
  • →Same published prices as the website, no API fee.

Four calls, start to finish

BASE=https://merchtoorder.com/api/v1

# 1. Price it (no key needed)
curl -s $BASE/quote \
  -H "Content-Type: application/json" \
  -d '{"items":[{"product":"classic-tee","color":"black","sizes":{"m":10,"l":10,"xl":5},"front":{"text":"ACME"}}]}'

# 2. Upload the logo
curl -s $BASE/artwork \
  -H "Authorization: Bearer mb_live_..." \
  -F "[email protected]"
# -> {"id":"3f2a...","width":1200,"height":400}

# 3. Place the order
curl -s $BASE/orders \
  -H "Authorization: Bearer mb_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "items":[{"product":"classic-tee","color":"black","sizes":{"m":10,"l":10,"xl":5},
              "front":{"artwork":"3f2a...","placement":"chest"},
              "back":{"artwork":"3f2a...","placement":"full"}}],
    "shipping":"standard",
    "shipTo":{"name":"Sam Rivera","company":"Acme","line1":"1 Main St","city":"Wilmington","state":"DE","postal":"19801"}
  }'
# -> {"order":{"number":"MB-10042","status":"received","total":...},"next":"We email a digital proof..."}

# 4. Check status and tracking any time
curl -s $BASE/orders/ORDER_ID -H "Authorization: Bearer mb_live_..."

Endpoints

Method and pathKeyWhat it does
GET /api/v1/productsNoGarments, colors, sizes, price tiers, shipping and turnaround.
POST /api/v1/quoteNoPrice items without creating anything. Returns per-line prices, next price break, shipping and total.
POST /api/v1/artworkYesUpload a logo or design (multipart file, or JSON with base64). Returns an artwork id.
POST /api/v1/ordersYesPlace the order. Returns the order number and what happens next.
GET /api/v1/ordersYesList your orders.
GET /api/v1/orders/{id}YesStatus, payment, tracking number and link, timeline.

Item fields

  • product: one of classic-teepremium-teehoodiecrewneck
  • color: a color id or name from the catalog, for example navy.
  • sizes: size id to quantity, for example {"s":5,"m":10,"l":10}. Mixed sizes count toward one price break.
  • front and back: optional. Each takes artwork (an id), placement (full, chest or center) and text. Leave a side out for a one-sided print.
  • Advanced: send a full design object exactly as the studio saves it, for pixel-level placement.

Errors come back as { "error": { "message": "..." } } with a 4xx status and a plain-English message you can show to a person.

API questions

Can an AI assistant order shirts for me?

+

Yes. Any assistant that can call an HTTP API can upload your logo, ask for a quote and place the order with your API key. You still approve the proof by email before anything prints, so nothing is printed by mistake.

How do I get an API key?

+

Sign in, open Account, then API keys, and create one. It is shown once. Keys are tied to your account, so orders placed with them appear in your account like any other order.

How is an API order paid?

+

The same way as an invoice order: we email a proof and an invoice with a payment link. Card payment through the API is coming later.

Is there a sandbox?

+

Not yet. Use POST /quote freely without a key to test pricing; it never creates an order. Orders are only created by POST /orders with a key.

What does it cost?

+

Nothing extra. API orders use the same published prices as the website.

The same prices as the custom t-shirt pricing page, and the same files as the artwork guidelines.

Prefer to click?

The studio does the same thing with a mouse.

Open the studio