Report how an order's job stands
const url = 'https://api.pixonaut.app/v1/orders/example/job';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"status":"shipped","tracking":{"carrier":"PostNord","number":"00370725001234567890","url":"https://tracking.postnord.com/en/?id=00370725001234567890"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.pixonaut.app/v1/orders/example/job \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "status": "shipped", "tracking": { "carrier": "PostNord", "number": "00370725001234567890", "url": "https://tracking.postnord.com/en/?id=00370725001234567890" } }'Operation ID: orders.job.update
The order marked printed, shipped (optionally with tracking) or failed (optionally with a reason), by the same rules as PATCH /v1/orders/{id}, and answered as its job. A printshop link gives a reason with failed only; a secret key may give one with any status, and must to settle an order whose outcome is unknown. A printshop link sending shipped with tracking for an order already shipped corrects its tracking: the order stays shipped, and order.tracking_changed (order.tracking_added for an order shipped without any) tells the store.
A member holding orders:update reports for a printshop a person works, one that takes its orders as delivery steps, as its link does: printed, shipped or failed, a reason with failed only, never out of an unknown outcome. The move is audited as theirs. An order to a printshop whose API reports on it is refused 409 order_status_not_allowed; in a sandbox a member moves an order as PATCH /v1/orders/{id} lets them. An MCP key is answered the job without its tickets, which carry who the order is for and where it ships.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Why: with failed, the order’s failure note.
The order’s new status.
How a shipped order can be followed, with shipped only.
object
Who carries it, such as DHL.
The shipment’s tracking number.
Where the shipment is followed: an https address.
Examples
Example
{ "status": "shipped", "tracking": { "carrier": "PostNord", "number": "00370725001234567890", "url": "https://tracking.postnord.com/en/?id=00370725001234567890" }}Responses
Section titled “Responses”The order’s job, as it now stands
object
The carriers the order’s printshop has shipped with, from this page or a secret key’s move here.
object
The carrier its latest shipment named, typed or listed; null before its first.
Carriers the printshop typed itself rather than picked from the page’s list, the most recently used first.
How many carriers the printshop typed itself in all.
object
object
Where on the item the print goes, by the name the order’s printshop knows it by (its Printed as), recorded when the order was placed; null for a print on no blank, or an order placed before it was recorded.
This print’s ticket for its own machine: machineProfile applies to the order’s ticket alone.
object
object
object
object
object
object
object
object
How the print aligns to the reference: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center or bottom-right. Anything else is read as center.
How far the print is moved from the reference, in millimetres. y grows downward.
object
Horizontal offset in millimetres; positive moves right.
Vertical offset in millimetres; positive moves down.
The physical reference the print is positioned against on the product.
object
The linked group the design is one placement of: one design drives every placement it names. Absent for a design on one placement alone.
object
Whether this placement’s print is mirrored left to right.
The group’s placements, by id.
The width of the group’s widest print area, in mm: what a repeat across the group is sized against, so it prints at one physical scale on every placement.
The repeat the print was drawn as: the design’s mode, size and seed, and the printed size of the tile laid across the print. Absent for a print that does not repeat.
object
How the tiles are laid: grid lines them up, brick moves every other row along by half a tile, halfDrop moves every other column down by half a tile, and scatter strews them at random places, turns and sizes, arranged by seed.
Which arrangement a scatter draws: another seed is another arrangement of the same tile. Read by scatter only.
The tile’s width in percent of the print area’s width, above 0 and at most 100; the tile keeps the template’s shape. A tile that would print under 10 mm on a side is drawn at 10 mm.
The tile’s printed height in millimetres.
The tile’s printed width in millimetres.
object
True when the print shop cuts the product to this shape: the outline and the cut-outs go into the print file as its cut line. Omitted, the product already has the shape.
The shape as SVG path data in fractions of the print area, 0 to 1 across and down (curves, no arcs): its first subpath the outline, every further one a cut-out, filled even-odd, each subpath closed.
object
object
The recipient’s email address, for the carrier’s notices.
The recipient’s name as a parcel label carries it, a person’s or a company’s. Up to 200 characters.
The recipient’s phone number as the customer gave it, with the country code when it has one.
object
The city or town.
The company of a business address, which the parcel goes to; the recipient is who receives it.
The country as a two-letter ISO 3166-1 code in capitals, such as SE or US.
The first line of the street address: street and number.
The second line of the address: an apartment, floor or c/o.
The postal code as the country writes it, such as 111 22 or SW1A 1AA. Left out where the country has none; a printshop that needs one refuses the order postal_code_required.
The state, province or county, where the country uses one.
object
object
object
object
object
object
object
object
How the print aligns to the reference: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center or bottom-right. Anything else is read as center.
How far the print is moved from the reference, in millimetres. y grows downward.
object
Horizontal offset in millimetres; positive moves right.
Vertical offset in millimetres; positive moves down.
The physical reference the print is positioned against on the product.
object
The linked group the design is one placement of: one design drives every placement it names. Absent for a design on one placement alone.
object
Whether this placement’s print is mirrored left to right.
The group’s placements, by id.
The width of the group’s widest print area, in mm: what a repeat across the group is sized against, so it prints at one physical scale on every placement.
The repeat the print was drawn as: the design’s mode, size and seed, and the printed size of the tile laid across the print. Absent for a print that does not repeat.
object
How the tiles are laid: grid lines them up, brick moves every other row along by half a tile, halfDrop moves every other column down by half a tile, and scatter strews them at random places, turns and sizes, arranged by seed.
Which arrangement a scatter draws: another seed is another arrangement of the same tile. Read by scatter only.
The tile’s width in percent of the print area’s width, above 0 and at most 100; the tile keeps the template’s shape. A tile that would print under 10 mm on a side is drawn at 10 mm.
The tile’s printed height in millimetres.
The tile’s printed width in millimetres.
object
True when the print shop cuts the product to this shape: the outline and the cut-outs go into the print file as its cut line. Omitted, the product already has the shape.
The shape as SVG path data in fractions of the print area, 0 to 1 across and down (curves, no arcs): its first subpath the outline, every further one a cut-out, filled even-odd, each subpath closed.
object
object
The recipient’s email address, for the carrier’s notices.
The recipient’s name as a parcel label carries it, a person’s or a company’s. Up to 200 characters.
The recipient’s phone number as the customer gave it, with the country code when it has one.
object
The city or town.
The company of a business address, which the parcel goes to; the recipient is who receives it.
The country as a two-letter ISO 3166-1 code in capitals, such as SE or US.
The first line of the street address: street and number.
The second line of the address: an apartment, floor or c/o.
The postal code as the country writes it, such as 111 22 or SW1A 1AA. Left out where the country has none; a printshop that needs one refuses the order postal_code_required.
The state, province or county, where the country uses one.
object
Who carries it, such as DHL.
The shipment’s tracking number.
Where the shipment is followed: an https address.
Examples
Example
{ "carriers": { "last": "PostNord", "saved": [ "Stadsbud Norr" ], "savedCount": 1 }, "id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b", "machineProfileAskedId": null, "machineProfileId": "5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f", "machineProfiles": [ { "id": "5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f", "name": "Epson F2270 DTG" } ], "prints": [ { "placementId": "front", "printId": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f", "printedAs": "Front", "ticket": { "artifact": { "colorSpace": "DeviceCMYK", "cut": { "bleedMm": 3, "cropMarks": false, "cutLine": false, "cutName": null, "markOffsetMm": 0, "mirrored": false, "part": "print", "profile": "Epson F2270 DTG", "registrationMarks": "none", "underbase": null, "varnish": null }, "effectiveDpi": 300, "file": "PR-2026-481920_c4d5e6f7.pdf", "format": "pdf", "iccProfile": "ISOcoated_v2_eci.icc", "includesBleed": true, "spotColors": [], "spotOutput": "process", "trimMarks": false }, "artwork": { "name": "Class of 2026", "templateId": "tshirt-basic@2" }, "externalRef": "WEB-10482-1", "fulfilmentPayload": { "variantSku": "TEE-BLACK-M" }, "manifest": { "docHash": "sha256:9f2c4e7a1b8d3f6052c7e9a4b1d8f3066a5e2c9b7d4f1830e6a2b5c8d9f10a37", "fontSetHash": "sha256:3c8e1a5f7b2d9046e1f8a3c6b9d25704a8e3f1c6b0d97245e8a1c3f6b9d2e508", "iccProfile": "ISOcoated_v2_eci.icc", "renderedAt": "2026-10-13T10:14:05Z", "rendererVersion": "0.14.2", "templateVersion": "tshirt-basic@2" }, "printArea": { "anchor": { "align": "center", "offsetMm": { "x": 0, "y": 80 }, "reference": "collar_seam" }, "bleedMm": 3, "cutShape": { "d": "M0 0 H250 V300 H0 Z", "type": "path" }, "heightMm": 300, "printMethod": "dtg", "widthMm": 250 }, "product": { "sku": "6f1c8a2b-3d4e-4f5a-8b6c-7d8e9f0a1b2c", "tenantId": "acme" }, "quantity": 25, "recipient": { "name": "Alexandra Lind", "phone": "+44 7700 900123" }, "shippingAddress": { "city": "London", "country": "GB", "line1": "12 High Street", "line2": "Floor 2", "postalCode": "SW1A 1AA" } } } ], "status": "shipped", "submittedAt": 1791886447000, "ticket": { "artifact": { "colorSpace": "DeviceCMYK", "cut": { "bleedMm": 3, "cropMarks": false, "cutLine": false, "cutName": null, "markOffsetMm": 0, "mirrored": false, "part": "print", "profile": "Epson F2270 DTG", "registrationMarks": "none", "underbase": null, "varnish": null }, "effectiveDpi": 300, "file": "PR-2026-481920_c4d5e6f7.pdf", "format": "pdf", "iccProfile": "ISOcoated_v2_eci.icc", "includesBleed": true, "spotColors": [], "spotOutput": "process", "trimMarks": false }, "artwork": { "name": "Class of 2026", "templateId": "tshirt-basic@2" }, "externalRef": "WEB-10482-1", "fulfilmentPayload": { "variantSku": "TEE-BLACK-M" }, "manifest": { "docHash": "sha256:9f2c4e7a1b8d3f6052c7e9a4b1d8f3066a5e2c9b7d4f1830e6a2b5c8d9f10a37", "fontSetHash": "sha256:3c8e1a5f7b2d9046e1f8a3c6b9d25704a8e3f1c6b0d97245e8a1c3f6b9d2e508", "iccProfile": "ISOcoated_v2_eci.icc", "renderedAt": "2026-10-13T10:14:05Z", "rendererVersion": "0.14.2", "templateVersion": "tshirt-basic@2" }, "printArea": { "anchor": { "align": "center", "offsetMm": { "x": 0, "y": 80 }, "reference": "collar_seam" }, "bleedMm": 3, "cutShape": { "d": "M0 0 H250 V300 H0 Z", "type": "path" }, "heightMm": 300, "printMethod": "dtg", "widthMm": 250 }, "product": { "sku": "6f1c8a2b-3d4e-4f5a-8b6c-7d8e9f0a1b2c", "tenantId": "acme" }, "quantity": 25, "recipient": { "name": "Alexandra Lind", "phone": "+44 7700 900123" }, "shippingAddress": { "city": "London", "country": "GB", "line1": "12 High Street", "line2": "Floor 2", "postalCode": "SW1A 1AA" } }, "tracking": { "carrier": "PostNord", "number": "00370725001234567890", "url": "https://tracking.postnord.com/en/?id=00370725001234567890" }}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: bad_request
object
Examples
bad_request
{ "error": "bad_request"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: unauthorized
object
Examples
unauthorized
{ "error": "unauthorized"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: origin_forbidden, forbidden, feature_disabled, workspace_suspended
object
The feature the tenant does not have. Always sent with feature_disabled.
Examples
feature_disabled
{ "error": "feature_disabled", "feature": "api"}forbidden
{ "error": "forbidden"}origin_forbidden
{ "error": "origin_forbidden"}workspace_suspended
{ "error": "workspace_suspended"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: order_not_found, not_found
object
Examples
not_found
{ "error": "not_found"}order_not_found
{ "error": "order_not_found"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: order_status_not_allowed, order_reference_taken
object
Always sent with order_status_not_allowed.
Always sent with order_status_not_allowed.
Examples
order_reference_taken
{ "error": "order_reference_taken"}order_status_not_allowed
{ "error": "order_status_not_allowed", "from": "held", "to": "held"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: order_status_reason_required, payload_too_large
object
Sent with payload_too_large.
Always sent with order_status_reason_required.
Always sent with payload_too_large.
Examples
order_status_reason_required
{ "error": "order_status_reason_required", "from": "held"}payload_too_large
{ "error": "payload_too_large", "maxBytes": 0}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: rate_limited
object
Examples
rate_limited
{ "error": "rate_limited"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Refused: db_error. A request that failed unexpectedly answers as text instead.
object
Examples
db_error
{ "error": "db_error"}Headers
Section titled “Headers”Every response names the request it answers in X-Request-Id: the id the request was sent with in that header, when it is well formed, else one the API gave it. Quote it when reporting a refusal or a failure: the API’s log lines for that request carry it.
Questions? Write to [email protected].