Endpoints · Orders
GET/v1/orders
One order with its store, shopper, totals and lines.
What it does
One order, as the order.created webhook sends it: by PrintWisp's id (order) or by your order number (ref). A test key reads test orders and a live key real ones. A connected shop's key sees only its own shop's orders; any other key sees every order of the organisation. Money is a string with two decimals; null where the order did not carry it (an order you post keeps its own totals, so totals is null and each line's line_amount is what you sent).
Send the key: Authorization: Bearer sk_test_… or sk_live_…. Any method but GET or POST answers 405 method_not_allowed: “GET or POST.”
curl "https://printwisp.com/v1/orders?ref=WEB-10021" \
-H "Authorization: Bearer $PRINTWISP_KEY"
# 200
{
"order": "ord_7d1e4b9a2c6f0583",
"order_ref": "WEB-10021",
"livemode": true,
"store": null,
"source": "api",
"status": null,
"placed_at": "2026-10-05T04:31:00+00:00",
"customer": { "name": "Jane Citizen", "email": "jane@example.com" },
"shipping": { "name": null, "address": null, "method": null, "tracking": null },
"totals": { "subtotal": null, "shipping": null, "tax": null, "total": null, "currency": null },
"lines": [
{
"line": "oln_41aa8c3e9d2b7f16",
"line_ref": "1",
"design": "dsn_5c2a9e01b7d4f638",
"sku": null,
"qty": 1,
"unit_price": null,
"line_amount": "89.00",
"currency": "AUD",
"print_status": "ready",
"components": [
{
"slot": "paper",
"name": "Paper",
"value": "Lustre 170 gsm",
"code": "lustre_170",
"ref": null,
"chosen_by": "shop",
"price": null
}
],
"fields": []
}
]
}<?php
$ch = curl_init('https://printwisp.com/v1/orders?ref=WEB-10021');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('PRINTWISP_KEY'), 'Content-Type: application/json'],
]);
$answer = json_decode(curl_exec($ch), true);// Node (your server). The key never reaches a browser.
const r = await fetch('https://printwisp.com/v1/orders?ref=WEB-10021', {
headers: { Authorization: 'Bearer ' + process.env.PRINTWISP_KEY },
});
const answer = await r.json();import os, requests
r = requests.get(
"https://printwisp.com/v1/orders?ref=WEB-10021",
headers={"Authorization": f"Bearer {os.environ['PRINTWISP_KEY']}"},
)
answer = r.json()Parameters
| Parameter | Type | Description |
|---|---|---|
order | string | PrintWisp's order id (ord_…). Give order or ref. |
ref | string | Your order number, the order_ref you posted. |
test | string | 1 reads a test order with a live key (one posted with "test": true). A test key always reads test orders. |
Response
200 application/json. The order.
{
"order": "ord_7d1e4b9a2c6f0583",
"order_ref": "WEB-10021",
"livemode": true,
"store": null,
"source": "api",
"status": null,
"placed_at": "2026-10-05T04:31:00+00:00",
"customer": { "name": "Jane Citizen", "email": "jane@example.com" },
"shipping": { "name": null, "address": null, "method": null, "tracking": null },
"totals": { "subtotal": null, "shipping": null, "tax": null, "total": null, "currency": null },
"lines": [
{
"line": "oln_41aa8c3e9d2b7f16",
"line_ref": "1",
"design": "dsn_5c2a9e01b7d4f638",
"sku": null,
"qty": 1,
"unit_price": null,
"line_amount": "89.00",
"currency": "AUD",
"print_status": "ready",
"components": [
{
"slot": "paper",
"name": "Paper",
"value": "Lustre 170 gsm",
"code": "lustre_170",
"ref": null,
"chosen_by": "shop",
"price": null
}
],
"fields": []
}
]
}Errors
| HTTP | error | message |
|---|---|---|
| 400 | missing_order | Send ?order=ord_… or ?ref=<order number>. |
| 401 | unauthorized | Send Authorization: Bearer <secret key>. Keys are made in PrintWisp, on your store's Overview → API keys. |
| 404 | order_not_found | No order WEB-10021 for this key. |
| 404 | order_not_found | No order ord_t3a9c1e7b5d2f804 for this key (a live key reads real orders). |
| 405 | method_not_allowed | GET or POST. |