Read one print
const url = 'https://api.pixonaut.app/v1/prints/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.pixonaut.app/v1/prints/example \ --header 'Authorization: Bearer <token>'Operation ID: prints.get
A studio member without designs:read reads the job ticket without its fulfilmentPayload: that is the design’s consumer bag, which reading the design would need the grant for. A completed print read by a secret key, or by a member holding orders:read or orders:create, carries orderPrintshop: where an order placed for it goes, unless that could not be worked out.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”The print, with its job ticket once it has completed
object
Every try at the print’s render, oldest first. A failed print rendered again keeps its failed attempts beside the later ones. Empty for a print rendered before attempts were kept.
object
The attempt’s place among the print’s, from 1.
When the attempt ended, in epoch milliseconds; null while it runs.
Why a failed attempt failed: whose fault it is (design or ours) and its sentence. Null for one that did not fail.
object
The sentence the print’s creation was answered with: what to change, for the design’s fault.
Whose the fault is: design when the design must change before it can be printed, ours when the renderer failed and trying again will probably fail the same way.
How the attempt ended: completed or failed; null while it runs.
When the attempt started, in epoch milliseconds.
The bleed around the trim in millimetres. Null until the print completes, and for a template that names no blank.
The design’s revision now. A print whose designRevision is lower is of an older revision, and cannot be ordered.
The design’s revision this print rendered. Only a print of the design’s current revision can be ordered; one made before a correction is refused print_superseded.
Why a failed print failed. Null for a print that did not fail, and for one that failed before the reason was kept.
object
The sentence the print’s creation was answered with: what to change, for the design’s fault.
Whose the fault is: design when the design must change before it can be printed, ours when the renderer failed and trying again will probably fail the same way.
The form the print’s files are in: flat, one drawing with every glyph a path; layered, each printed layer its own optional content group, every glyph still a path; or layered_live_text, its plain text live as well. A print made before these forms is flat. Another form is fetched with form on the print’s file.
A link to the print’s file that opens with no key, for an hour or two: to hand to a printshop or open in a browser. Null while it renders, when it failed, and once its files are deleted.
How many bytes the print’s stored files take in the workspace’s storage; null while it renders, once its files are deleted, and for a print made before sizes were kept.
How many files the print keeps, null whenever filesBytes is.
When the print’s files were deleted, after its design’s personal data was erased or by a member to free storage; null while they are kept. The print stays as a record.
The print’s trimmed height in millimetres. Null until the print completes.
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
Why the print has no layered file: it was asked for one, or that form was fetched, and the file could not be made or differed from the flat one. Null otherwise.
Why the print has no layered_live_text file: it was asked for one, or that form was fetched, and the file could not be made or its live text differed from the flat one past the tolerance. Null otherwise.
The print number its files are named after, such as PR-2026-381042. Null for a print made before numbers were kept that never completed.
Where an order placed for this print goes when it names no printshop: its blank’s printshop, else the printshop its design was committed with, else the tenant’s default. An order of a print on no blank whose design was committed with none may name one (printshopId), which goes before the default; a print on a blank always goes to the blank’s. null when none of them names one, so an order naming none is refused. Absent when the print is not completed, the caller may not read orders, or it could not be worked out.
object
The merchant’s own label for the connection.
usable, or why an order there is refused: disconnected, unavailable when its integration is no longer registered, or paused when the merchant paused it (an order there is refused 409 printshop_paused).
The name of the template the print was made from. Null until the print completes.
The version of that template the print was rendered from. Null until the print completes.
textDeviationPx in millimetres at the print’s resolution. Null with no such file.
How far from its outline the live text of the print’s layered_live_text file measured when it was checked, in device pixels at the print’s resolution: 0 when it drew exactly as the flat one. Null with no such file.
The print’s trimmed width in millimetres. Null until the print completes.
Examples
Example
{ "apiKeyId": "3b2d9c1e-5a4f-4e7d-8c6b-1a0f9e8d7c6b", "artifacts": [ "PR-2026-481920_c4d5e6f7.pdf" ], "attempts": [ { "attempt": 1, "endedAt": 1791886446000, "failure": null, "outcome": "completed", "startedAt": 1791886443100 } ], "bleedMm": 3, "completedAt": 1791886446000, "createdAt": 1791886443000, "currentRevision": 3, "designId": "6f1c8a2b-3d4e-4f5a-8b6c-7d8e9f0a1b2c", "designRevision": 3, "failure": null, "fileForm": "flat", "fileUrl": "https://api.pixonaut.example/a/eyJhdWQiOiJwcmludC1hcnRpZmFjdCJ9.c2lnbmF0dXJl", "filesBytes": 4823117, "filesCount": 1, "filesErasedAt": null, "heightMm": 300, "id": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f", "jobTicket": { "artifact": { "colorSpace": "DeviceCMYK", "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" }, "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": { "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" } }, "jobTicketStale": false, "layeredFallback": null, "liveTextFallback": null, "number": "PR-2026-481920", "orderPrintshop": { "id": "0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e", "name": "Nordic Print Works", "status": "usable" }, "status": "completed", "templateName": "Class of 2026", "templateVersion": 2, "tenantId": "acme", "textDeviationMm": null, "textDeviationPx": null, "textTolerance": { "unit": "px", "value": 1 }, "widthMm": 250}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: not_found
object
Examples
not_found
{ "error": "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: 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].