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
- Building for other people's allthe accounts? Use OAuth, not a personal token.
- Shipping to real customers? Read Testing safely and Errors & rate limits.
- Conventions shared by every endpoint — pagination, money, dates — are in API conventions.