Skip to content

Report how an order's job stands

PATCH
/v1/orders/{id}/job
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.

id
required
string
Media typeapplication/json
object
reason

Why: with failed, the order’s failure note.

string
>= 1 characters <= 500 characters
status
required

The order’s new status.

string
Allowed values: held awaiting_prints submitted queued printed shipped failed outcome_unknown cancelled
tracking

How a shipped order can be followed, with shipped only.

object
carrier

Who carries it, such as DHL.

string
>= 1 characters <= 100 characters
number
required

The shipment’s tracking number.

string
>= 1 characters <= 100 characters
url

Where the shipment is followed: an https address.

string format: uri
<= 2048 characters

Examples

Exampleexample

Example

{
"status": "shipped",
"tracking": {
"carrier": "PostNord",
"number": "00370725001234567890",
"url": "https://tracking.postnord.com/en/?id=00370725001234567890"
}
}

The order’s job, as it now stands

Media typeapplication/json
object
carriers
required

The carriers the order’s printshop has shipped with, from this page or a secret key’s move here.

object
last
required

The carrier its latest shipment named, typed or listed; null before its first.

string | null
saved
required

Carriers the printshop typed itself rather than picked from the page’s list, the most recently used first.

Array<string>
savedCount
required

How many carriers the printshop typed itself in all.

integer
id
required
string
machineProfileAskedId
required
string | null
machineProfileId
required
string | null
machineProfiles
required
Array<object>
object
id
required
string
name
required
string
prints
required
Array<object>
object
placementId
required
string | null
printId
required
string
printedAs
required

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.

string | null
ticket
required

This print’s ticket for its own machine: machineProfile applies to the order’s ticket alone.

object
artifact
required
object
colorSpace
required
string
cut
object
bleedMm
required
number
cropMarks
required
boolean
cutLine
required
boolean
cutName
required
string | null
markOffsetMm
required
number
mirrored
required
boolean
part
required
string
profile
required
string
registrationMarks
required
string
underbase
required
object
chokeMm
required
number
coverage
required
string
spotName
required
string
varnish
required
object
coverage
required
string
spotName
required
string
effectiveDpi
required
number
file
required
string
format
required
string
iccProfile
required
string
includesBleed
required
boolean
spotColors
required
Array<string>
spotOutput
required
string
trimMarks
required
boolean
artwork
required
Any of:
object
name
string
templateId
required
string
externalRef
required
string | null
>= 1 characters <= 256 characters
fulfilmentPayload
manifest
required
object
docHash
required
string
fontSetHash
required
string
iccProfile
required
string
renderedAt
required
string
rendererVersion
required
string
templateVersion
string
printArea
required
object
anchor
object
align
required

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.

string
offsetMm
required

How far the print is moved from the reference, in millimetres. y grows downward.

object
x
required

Horizontal offset in millimetres; positive moves right.

number
y
required

Vertical offset in millimetres; positive moves down.

number
reference
required

The physical reference the print is positioned against on the product.

string
bleedMm
number
cutShape
required
object
d
required
string
>= 1 characters
type
required
string
heightMm
required
number
linked

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
mirrored
required

Whether this placement’s print is mirrored left to right.

boolean
placements
required

The group’s placements, by id.

Array<string>
referenceWidthMm
required

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.

number
> 0
printMethod
string
printedAs
string
repeat

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
mode
required

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.

string
seed
required

Which arrangement a scatter draws: another seed is another arrangement of the same tile. Read by scatter only.

integer
<= 9007199254740991
size
required

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.

number
> 0 <= 100
unitHeightMm
required

The tile’s printed height in millimetres.

number
> 0
unitWidthMm
required

The tile’s printed width in millimetres.

number
> 0
safeAreaMm
number
shape
object
cutByPrintShop

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.

boolean
dFrac
required

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.

string
<= 65536 characters
widthMm
required
number
product
required
object
sku
required
string
tenantId
required
string
quantity
required
integer
> 0 <= 2147483647
recipient
object
email

The recipient’s email address, for the carrier’s notices.

string format: email
<= 254 characters
name
required

The recipient’s name as a parcel label carries it, a person’s or a company’s. Up to 200 characters.

string
>= 1 characters <= 200 characters
phone

The recipient’s phone number as the customer gave it, with the country code when it has one.

string
>= 1 characters <= 50 characters
shippingAddress
object
city
required

The city or town.

string
>= 1 characters <= 100 characters
company

The company of a business address, which the parcel goes to; the recipient is who receives it.

string
>= 1 characters <= 200 characters
country
required

The country as a two-letter ISO 3166-1 code in capitals, such as SE or US.

string
/^[A-Z]{2}$/
line1
required

The first line of the street address: street and number.

string
>= 1 characters <= 200 characters
line2

The second line of the address: an apartment, floor or c/o.

string
>= 1 characters <= 200 characters
postalCode

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.

string
>= 1 characters <= 20 characters
region

The state, province or county, where the country uses one.

string
>= 1 characters <= 100 characters
status
required
string
submittedAt
required
number
ticket
required
object
artifact
required
object
colorSpace
required
string
cut
object
bleedMm
required
number
cropMarks
required
boolean
cutLine
required
boolean
cutName
required
string | null
markOffsetMm
required
number
mirrored
required
boolean
part
required
string
profile
required
string
registrationMarks
required
string
underbase
required
object
chokeMm
required
number
coverage
required
string
spotName
required
string
varnish
required
object
coverage
required
string
spotName
required
string
effectiveDpi
required
number
file
required
string
format
required
string
iccProfile
required
string
includesBleed
required
boolean
spotColors
required
Array<string>
spotOutput
required
string
trimMarks
required
boolean
artwork
required
Any of:
object
name
string
templateId
required
string
externalRef
required
string | null
>= 1 characters <= 256 characters
fulfilmentPayload
manifest
required
object
docHash
required
string
fontSetHash
required
string
iccProfile
required
string
renderedAt
required
string
rendererVersion
required
string
templateVersion
string
printArea
required
object
anchor
object
align
required

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.

string
offsetMm
required

How far the print is moved from the reference, in millimetres. y grows downward.

object
x
required

Horizontal offset in millimetres; positive moves right.

number
y
required

Vertical offset in millimetres; positive moves down.

number
reference
required

The physical reference the print is positioned against on the product.

string
bleedMm
number
cutShape
required
object
d
required
string
>= 1 characters
type
required
string
heightMm
required
number
linked

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
mirrored
required

Whether this placement’s print is mirrored left to right.

boolean
placements
required

The group’s placements, by id.

Array<string>
referenceWidthMm
required

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.

number
> 0
printMethod
string
printedAs
string
repeat

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
mode
required

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.

string
seed
required

Which arrangement a scatter draws: another seed is another arrangement of the same tile. Read by scatter only.

integer
<= 9007199254740991
size
required

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.

number
> 0 <= 100
unitHeightMm
required

The tile’s printed height in millimetres.

number
> 0
unitWidthMm
required

The tile’s printed width in millimetres.

number
> 0
safeAreaMm
number
shape
object
cutByPrintShop

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.

boolean
dFrac
required

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.

string
<= 65536 characters
widthMm
required
number
product
required
object
sku
required
string
tenantId
required
string
quantity
required
integer
> 0 <= 2147483647
recipient
object
email

The recipient’s email address, for the carrier’s notices.

string format: email
<= 254 characters
name
required

The recipient’s name as a parcel label carries it, a person’s or a company’s. Up to 200 characters.

string
>= 1 characters <= 200 characters
phone

The recipient’s phone number as the customer gave it, with the country code when it has one.

string
>= 1 characters <= 50 characters
shippingAddress
object
city
required

The city or town.

string
>= 1 characters <= 100 characters
company

The company of a business address, which the parcel goes to; the recipient is who receives it.

string
>= 1 characters <= 200 characters
country
required

The country as a two-letter ISO 3166-1 code in capitals, such as SE or US.

string
/^[A-Z]{2}$/
line1
required

The first line of the street address: street and number.

string
>= 1 characters <= 200 characters
line2

The second line of the address: an apartment, floor or c/o.

string
>= 1 characters <= 200 characters
postalCode

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.

string
>= 1 characters <= 20 characters
region

The state, province or county, where the country uses one.

string
>= 1 characters <= 100 characters
tracking
required
object
carrier

Who carries it, such as DHL.

string
>= 1 characters <= 100 characters
number
required

The shipment’s tracking number.

string
>= 1 characters <= 100 characters
url

Where the shipment is followed: an https address.

string format: uri
<= 2048 characters

Examples

Exampleexample

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": {
"email": "[email protected]",
"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": {
"email": "[email protected]",
"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"
}
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string

Examples

Examplebad_request

bad_request

{
"error": "bad_request"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string

Examples

Exampleunauthorized

unauthorized

{
"error": "unauthorized"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string
feature

The feature the tenant does not have. Always sent with feature_disabled.

string

Examples

feature_disabled

{
"error": "feature_disabled",
"feature": "api"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string

Examples

not_found

{
"error": "not_found"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string
from

Always sent with order_status_not_allowed.

string
to

Always sent with order_status_not_allowed.

string

Examples

order_reference_taken

{
"error": "order_reference_taken"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
bytes

Sent with payload_too_large.

number
error
required
string
from

Always sent with order_status_reason_required.

string
maxBytes

Always sent with payload_too_large.

number

Examples

order_status_reason_required

{
"error": "order_status_reason_required",
"from": "held"
}
X-Request-Id
required
string

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

Media typeapplication/json
object
error
required
string

Examples

Examplerate_limited

rate_limited

{
"error": "rate_limited"
}
X-Request-Id
required
string

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
error
required
string

Examples

Exampledb_error

db_error

{
"error": "db_error"
}
X-Request-Id
required
string

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].

Status · Terms of service · Privacy policy · Subprocessors