Quickstart

From nothing to a placed-and-cancelled order in five calls. Everything here is safe: only step 4 spends money, and step 5 gives it straight back.

You will need a personal access token with catalog:read, products:read, products:write, orders:read and orders:write.

export ALLTHE_TOKEN="pat_live_..."
export ALLTHE_API="https://developer.allthe.com/api/v1"

1. Find a base product

Base products are the blanks we print on. Each has variants (a colour and size, with its own SKU) and print areas.

curl -s "$ALLTHE_API/catalog/products?limit=3" \
  -H "Authorization: Bearer $ALLTHE_TOKEN"

Pick an id, then look at what it can carry:

curl -s "$ALLTHE_API/catalog/products/BASE_PRODUCT_ID/variants" \
  -H "Authorization: Bearer $ALLTHE_TOKEN"
curl -s "$ALLTHE_API/catalog/products/BASE_PRODUCT_ID/print-areas" \
  -H "Authorization: Bearer $ALLTHE_TOKEN"

Keep one blank_variant_sku and one print area name — you need both below. Full reference: Catalog.

2. Create your product

A customer product is your SKU: a base product with your artwork on it. Create it once, order it many times.

curl -s -X POST "$ALLTHE_API/products" \
  -H "Authorization: Bearer $ALLTHE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_product_id": "BASE_PRODUCT_ID",
    "name": "Quickstart Tee",
    "variant_skus": ["YOUR_VARIANT_SKU"],
    "decoration": {
      "areas": [
        { "print_area": "Front", "method": "DTF", "artwork_url": "https://example.com/art.png" }
      ]
    }
  }'

variant_skus is required — it decides which colour/size combinations your product is sold in, drawn from the variants you listed in step 1. The response carries an id: that is your product_id from here on. Artwork is fetched and validated server-side; you never upload file bytes to us. Full reference: Products and Artwork & decoration.

3. Price it before you commit

curl -s -X POST "$ALLTHE_API/orders/estimate" \
  -H "Authorization: Bearer $ALLTHE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "sample",
    "items": [{ "product_id": "YOUR_PRODUCT_ID", "variant_sku": "YOUR_VARIANT_SKU", "quantity": 1,
                "print_jobs": [{ "area": "Front", "method": "DTF" }] }],
    "shipping_address": { "contact_name": "Your Name", "line1": "12 Example Street",
                          "city": "London", "postcode": "SW1A 1AA", "country_code": "GB" }
  }'

This charges nothing and reserves nothing, but runs the same pricing path as the real thing — the total it returns is what you will be charged.

4. Place the order

Same body, different path.

curl -s -X POST "$ALLTHE_API/orders" \
  -H "Authorization: Bearer $ALLTHE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ...the body from step 3... }'

This is real. It charges your account, routes the work to a print partner, and ships a real garment to the address you gave. Send it to your own address while you are exploring.

Keep the reference from the response.

5. Cancel it

curl -s -X POST "$ALLTHE_API/orders/YOUR_REFERENCE/cancel" \
  -H "Authorization: Bearer $ALLTHE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reason": "quickstart"}'

Full refund, provided you are within one hour of placing. After that the work has gone to a print partner and cancelling becomes a support conversation. See Cancel an order.


Then stop polling

Steps 1–5 are the whole order lifecycle, but production and dispatch happen over hours or days. Rather than polling GET /orders, subscribe once:

curl -s -X POST "$ALLTHE_API/webhooks" \
  -H "Authorization: Bearer $ALLTHE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://yourapp.com/hooks/allthe"}'

Omitting events subscribes to everything, including events added later. The secret in that response is shown once — store it, you need it to verify deliveries. See Webhooks.

Where to go next