Skip to content

Read one design

GET
/v1/designs/{id}
curl --request GET \
--url https://api.pixonaut.app/v1/designs/example \
--header 'Authorization: Bearer <token>'

Operation ID: designs.get

id
required
string

The design, with its resolved document

Media typeapplication/json
object
apiKeyId
required
string | null
approvalConsent
required

How the customer agreed to the design’s approval, made or scheduled, as its approver said; null when none was said. Correcting the design, asking for changes and rejecting it clear it with the approval.

object
at
required

When the customer agreed, epoch milliseconds.

integer
kind
required

How the customer agreed: by adding the design to their cart, by ticking a box, on a proof page, by approving it again on your store after correcting it (edit), or by letting your store’s own approval deadline pass (deadline). More kinds may be added.

string
ref
required
string | null
approveAfter
required
number | null
approvedAt
required
number | null
approvedVia
required
string | null
blankId
required
string | null
canDecide
required

Whether the caller may approve or reject designs: a secret key, or a member holding designs:update.

boolean
canEdit
required

Whether the caller may correct this design now: editable, and they may decide designs.

boolean
changeRequest
required

The open request for changes a customer made on the design’s proof page, or null. Open while the design awaits approval at the version it was about; correcting or deciding the design closes it.

object
message
required
string
requestedAt
required
number
choices
required

What the design holds now for each field of correctionForm, in its order and with its labels: each text as it reads, each picture (an asset id) and each colour. What choices of its current revision says. Null when the form cannot be read.

Array | null
One of:
object
label
required

The form’s label for the field.

string
layerId
required

The layer the choice is of, as the form names it.

string
prop
required

The prop the form offered, such as content, src or fill.

string
type
required
string
Allowed values: text
value
required

What the customer wrote.

string
committedAt
required
number
correctionForm
required

The form a correction fills in: the design’s template version’s generated form, as the designer showed it to the customer. Served whether or not canEdit, since it also labels the texts of the design’s revisions. Null when that version cannot be read.

object
layout
string
steps
required
Array<object>
object
deletableLayerIds
required
Array<string>
fields
required
Array<object>
object
constraints
required
object
key
additional properties
default
description
string
label
required
string
layerId
required
string
prop
required
string
type
required
string
groupId
required
string
index
required
number | null
label
required
string
layerIds
required
Array<string>
transforms
required
Array<object>
object
layerId
required
string
transform
required
object
key
additional properties
deletable
required

Whether DELETE /v1/designs/{id} would take the design now: it is not approved, and no print of it exists, of any revision and in any status.

boolean
doc
required
duplicatedFrom
required
string | null
editable
required

Whether the design takes a correction now, whoever asks: it is not rejected and it has no order.

boolean
externalRef
required

Your own reference for the design, as sent on the commit or PUT /v1/designs/{id}/external-ref, or null.

string | null
fulfilmentPayload
required
garmentTone
required

The tone the design was drawn for: dark on a variant whose colour is dark, where each layer’s on-dark value is used; light otherwise. A correction judges its values against the template as that tone draws it.

string
hasOrder
required

Whether any print of this design has been ordered. An ordered design takes no correction; duplicate it instead.

boolean
hasPrint
required

Whether the design’s current text has been printed. A correction leaves that print showing the old text; it is never ordered, and the corrected design is printed again only when someone prints it once it is approved.

boolean
id
required
string
language
required

The language the design was made in, one of en, sv, de, fr, es, nl, da, nb, fi: its template was read in it, with that language’s overrides, and its document and print file are that language’s.

string
origin
required

Where the design came from: the door it was committed through. A duplicate’s is whoever duplicated it.

object
id
required

The designer link’s id, the key’s id, or the connected store’s site address. Null for studio, and for a key set in the deployment’s configuration rather than made in the workspace.

string | null
kind
required

link: a designer link’s page made it. studio: a member made it, in the studio or through an MCP key. secret_key and publishable_key: committed with one of your keys. store: committed by a connected store, with any key its site was given.

string
personalDataErasedAt
required

When the design’s own personal data was erased (POST /v1/designs/{id}/erase-personal-data), or null. An erased design’s document holds none of the text or pictures its customer put in, and nothing more is printed, ordered or corrected from it.

number | null
pictureUrl
required

A link to a drawing of the design’s current revision, as GET /v1/designs/{id}/revisions/{revision}/image draws it, that opens with no key for an hour or two. It opens that revision alone, and stops opening once the design’s personal data is erased. Null once it was.

string | null
placementId
required

The placement on the blank this design was fitted to when it was made; null whenever blankId is. Kept while the blank is, so it may name a placement since removed from the blank: the print box frozen into the document is what prints.

string | null
printSize
required

The size the design prints at, without bleed: the widthMm and heightMm its proof or commit named, or the size fitted for one that named none. A store checks it, with templateVersion, blankId and placementId, against what the product variation sells before accepting the add to cart, since the proof is made in the customer’s browser. Null only for a stored document that holds no usable print size.

object
heightMm
required

The print’s trim height, in millimetres.

number
widthMm
required

The print’s trim width, in millimetres.

number
proofId
required
string | null
proofRevision
required
integer | null
proofVariant
required

The variant of the blank the customer previewed the design’s proof on, by ref, as POST /v1/proofs was sent it; null when it named none. For display only: an order names its own variant.

string | null
proofViewId
required

The view of the blank’s placement the customer previewed the design’s proof in, by id, as POST /v1/proofs was sent it; null when it named none.

string | null
rejectionReason
required

Why the design was rejected, as its rejection said (reason on POST /v1/designs/{id}/reject); null when it is not rejected, or was rejected without one. Its customer is shown it on the proof page.

string | null
revision
required
integer
shareLinkId
required

The share link whose page made the design: committed there, or from a proof it made. Null when no link made it.

string | null
standing
required

Whether this is a standing design: the workspace’s own design for a fixed product, made by POST /v1/designs/standing from a template version as its author left it. A standing design is ordered any number of times, each order reusing the print of its current revision. False for a customer’s design.

boolean
status
required
string
templateBaseId
required
string
templateDeleted
required

Whether the design’s template was deleted. The design keeps its template’s name and version; the template itself can no longer be opened.

boolean
templateId
required
string
templateName
required
string | null
templateVersion
required

The version of the template the design was made from: templateId after its @. A design committed from a proof token was made from the proof’s version, whatever the template’s latest is now.

integer | null
tenantId
required
string
variantRow
required

The size the design was made for, on a blank whose print areas change with its size: the blank’s option values it was sized at, such as {"Size": "XL"}. An order of a variant of another size is refused with variant_not_of_design_row. Null on a blank whose print areas change with nothing, or on no blank.

object | null

Examples

Exampleexample

Example

{
"apiKeyId": "3b2d9c1e-5a4f-4e7d-8c6b-1a0f9e8d7c6b",
"approvalConsent": {
"at": 1791770340000,
"kind": "checkbox",
"ref": "order-1042"
},
"approveAfter": null,
"approvedAt": 1791770400000,
"approvedVia": "explicit",
"blankId": "blank_tshirt",
"canDecide": true,
"canEdit": true,
"changeRequest": null,
"choices": [
{
"label": "Name",
"layerId": "name",
"prop": "content",
"type": "text",
"value": "Alexandra"
}
],
"committedAt": 1791763200000,
"correctionForm": {
"layout": "page",
"steps": [
{
"deletableLayerIds": [],
"fields": [
{
"constraints": {
"maxLength": 24,
"maxLines": 1
},
"default": "Alexandra",
"description": "Printed on the chest.",
"label": "Name",
"layerId": "name",
"prop": "content",
"type": "text"
}
],
"groupId": "personalise",
"index": 1,
"label": "Personalise",
"layerIds": [
"name"
],
"transforms": []
}
]
},
"deletable": false,
"doc": {
"background": {
"color": {
"editable": false,
"value": {
"cmyk": [
0,
0,
0,
0
]
}
},
"kind": "color"
},
"dpi": 300,
"fit": "contain",
"id": "tshirt-basic",
"layers": [
{
"anchor": "top-left",
"hFrac": 0.12,
"id": "name",
"name": "Name",
"offsetFrac": {
"x": 0.1,
"y": 0.35
},
"props": {
"align": {
"editable": false,
"value": "center"
},
"content": {
"constraints": {
"maxLength": 24,
"maxLines": 1
},
"description": "Printed on the chest.",
"editable": true,
"label": "Name",
"value": "Alexandra Lind"
},
"fill": {
"editable": false,
"value": {
"cmyk": [
89,
74,
44,
76
]
}
},
"fontFamily": {
"editable": false,
"value": "Poppins"
},
"fontSizeFrac": {
"editable": false,
"value": 0.08
}
},
"textBox": {
"mode": "adapt",
"shrinkTo": 0.04,
"then": "clamp"
},
"transform": {
"rotate": {
"editable": false
},
"scale": {
"editable": false
},
"translate": {
"bounds": "safeArea",
"editable": false
},
"value": {
"rotationDeg": 0,
"scale": 1
}
},
"type": "text",
"wFrac": 0.8,
"z": 10
}
],
"name": "Basic T-shirt",
"ratio": {
"h": 4,
"w": 3
},
"ratioTolerance": 0.02,
"tenantId": "acme",
"version": 2
},
"duplicatedFrom": null,
"editable": true,
"externalRef": "order-1042-line-1",
"fulfilmentPayload": {
"material": "cotton",
"shippingMethod": "standard"
},
"garmentTone": "light",
"hasOrder": false,
"hasPrint": false,
"id": "6f1c8a2b-3d4e-4f5a-8b6c-7d8e9f0a1b2c",
"language": "en",
"origin": {
"id": "3b2d9c1e-5a4f-4e7d-8c6b-1a0f9e8d7c6b",
"kind": "secret_key"
},
"personalDataErasedAt": null,
"pictureUrl": "https://api.pixonaut.example/i/eyJhdWQiOiJjYXRhbG9ndWUtaW1hZ2UifQ.c2lnbmF0dXJl",
"placementId": "front",
"printSize": {
"heightMm": 400,
"widthMm": 300
},
"proofId": "prf_9c1e2d3f4a5b6c7d8e9f0a1b",
"proofRevision": 2,
"proofVariant": "v_9f3a1c2e",
"proofViewId": "flat",
"rejectionReason": null,
"revision": 2,
"shareLinkId": null,
"standing": false,
"status": "approved",
"templateBaseId": "tshirt-basic",
"templateDeleted": false,
"templateId": "tshirt-basic@2",
"templateName": "Basic T-shirt",
"templateVersion": 2,
"tenantId": "acme",
"variantRow": null
}
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: not_found

Media typeapplication/json
object
error
required
string

Examples

Examplenot_found

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: 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