Catalog and prices
List shirts, colors and sizes with blank photos, read live prices and shipping, and estimate an order before you place it.
Developers
Connect your own site in a few lines. Your checkout sends the order, we print it in Utah and ship it, and a webhook tells you when it's on the way.
# Sandbox key: nothing is charged or printed
API=https://toolboxpod.com/api/v1
AUTH="Authorization: Bearer $TOOLBOX_KEY" # pod_test_...
# 1. Create the order for one recipient
curl $API/orders -H "$AUTH" \
-H "Content-Type: application/json" -d '{
"storeId": "sto_...",
"externalReference": "web-1001",
"recipient": {
"name": "Ada Lovelace", "street1": "1 Analytical Way",
"city": "Springfield", "state": "OR",
"postal": "97477", "country": "US"
},
"lines": [{ "designId": "rev_...",
"title": "Trust the Universe tee",
"size": "L", "color": "BLK", "quantity": 1 }]
}'
# 2. Get the exact offer to accept
curl -X POST $API/orders/$ORDER_ID/quote -H "$AUTH"
# 3. Pay it. Same key on a retry = no double charge
curl -X POST $API/orders/$ORDER_ID/purchase -H "$AUTH" \
-H "Idempotency-Key: pay-web-1001" \
-H "Content-Type: application/json" \
-d '{ "accepted": { "quoteId": "quo_...",
"quoteVersion": 1, "totalCents": 1454,
"rateCardVersion": "2026-09-18.1",
"revisionHashes": { "rev_...": "<sha256>" } } }'
// Server side only: keep your key out of the browser.
const API = "https://toolboxpod.com/api/v1";
async function pod(path, body, headers = {}) {
const res = await fetch(API + path, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TOOLBOX_KEY}`,
"Content-Type": "application/json",
...headers,
},
body: body && JSON.stringify(body),
});
if (!res.ok) throw new Error(`Toolbox ${res.status}`);
return res.json();
}
export async function sendToPrint(checkout) {
// 1. Create the order for one recipient
const order = await pod("/orders", {
storeId: process.env.TOOLBOX_STORE,
externalReference: checkout.id,
recipient: checkout.shipTo,
// each line: designId, size, color, quantity, title
lines: checkout.lines,
});
// 2. Get the exact offer to accept
const { totals, ...accepted } =
await pod(`/orders/${order.id}/quote`);
// 3. Pay it. Same key on a retry = no double charge
return pod(`/orders/${order.id}/purchase`, { accepted },
{ "Idempotency-Key": `pay-${checkout.id}` });
}
# Paste into your AI, in the project for your site
Connect my checkout to Toolbox POD so paid orders
get printed and shipped. Docs and OpenAPI:
https://toolboxpod.com/developers
https://toolboxpod.com/api/v1/openapi.json
Use my Sandbox key from the TOOLBOX_KEY env var.
After payment, create the order, quote it, then
purchase it with an Idempotency-Key. Keep the key
on the server. Show me the test order when done.
What the API does
Plain REST for every step, from blank shirt to tracking number. Every call is in the API reference.
List shirts, colors and sizes with blank photos, read live prices and shipping, and estimate an order before you place it.
Upload a PNG for the same print checks as our website, or generate a design from a short brief on a Plus or Pro plan.
Photo mockups of each design in every color, on model, lay-flat and folded looks, with templates you can save.
Create an order, lock its exact price with a quote, then pay it. A retry with the same Idempotency-Key never charges twice.
Signed webhooks tell your site when an order is paid, held or shipped, with tracking for every package.
A sandbox key runs the same API with simulated payment and shipping. Nothing is charged, printed or emailed.
For sites built with AI
Claude, ChatGPT, Cursor, Codex or any coding assistant. Give it this prompt and a sandbox key: it connects your checkout and places a test order that never prints.
GET /api/v1/meChecks the account, store and modePOST /api/v1/ordersCreates the order and prices itPOST /api/v1/orders/{orderId}/quoteGets the exact offer to acceptPOST /api/v1/orders/{orderId}/purchasePays it, inside your spending limitConnect my website to Toolbox POD, a print on demand
API, so paid orders get printed and shipped.
Docs: https://toolboxpod.com/developers
OpenAPI: https://toolboxpod.com/api/v1/openapi.json
Read both before you write any code.
- Keep TOOLBOX_KEY and TOOLBOX_STORE in server env.
Never send the key to the browser.
- Use my sandbox key (pod_test_...) until I say to
switch to production.
- Call GET /api/v1/me first and tell me what it says.
- Ask me for the designId (rev_...) of each product.
- On each paid checkout: create the order, quote it,
then purchase it with an Idempotency-Key.
- Add a webhook endpoint, verify Pod-Signature, and
save the tracking when an order ships.
When you're done, place one test order and show me
its order id and total.
The prompt holds no keys. Put your API key in your site's secrets, never in chat.
No. There is no per-call fee and no monthly fee for orders. Orders cost the same as on our website: $8.59 for a Gildan 64000 tee (S to XL, one side) plus $5.95 shipping per order. AI designs and AI mockups through the API need a Plus ($20 a month) or Pro ($50 a month) plan.
Yes. A Sandbox key runs the same API with simulated payment. Nothing is charged, printed or emailed, and it can't change a live Shopify store.
No. The account Owner turns on purchasing for a store on our website, under a spending limit. Keys can never manage cards, staff or spending limits.
POST a PNG to /api/v1/artwork, as the raw body or a multipart file field. It gets the same checks as the website, then POST /api/v1/designs places it on the shirt.
Per key: 600 reads, 120 writes and 20 purchases a minute. They exist to stop abuse, never to limit how many shirts you order.
Make a Sandbox key, paste the prompt, and see your first test order in minutes.