Skip to content

Render a proof of a design on a panel layout

POST
/v1/proofs/layout
curl --request POST \
--url 'https://api.pixonaut.app/v1/proofs/layout?lang=en' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "blankId": "blk_3f9a2c1d8e7b6a5f4c3d2e1f", "layout": "All-over", "templateId": "pug-fur@2", "values": {}, "variantRow": { "Size": "L" } }'

Operation ID: proofs.createThroughLayout

Validates a customer’s payload on a blank’s panel layout, renders the proof image they approve, and answers with a signed link to it. The template is resolved once on the layout’s canvas at the size the request names (variant or variantRow, as on POST /v1/proofs), and the image is that canvas. Its token commits one design per placement the layout has a window for, at POST /v1/designs/layout; a proof answered at the blank’s reference row, naming no size, is refused variant_required there on a blank whose print areas change with its size. A layout the blank does not have is refused unknown_layout; one whose windows no longer fit the blank’s print areas at that size, layout_out_of_date.

tz

The IANA timezone the template’s dynamic values are resolved in, such as Europe/Stockholm: today’s date there. Absent, the workspace’s timezone.

string

The IANA timezone the template’s dynamic values are resolved in, such as Europe/Stockholm: today’s date there. Absent, the workspace’s timezone.

lang

The language the template’s dynamic values are written in when their name names none, one of en, sv, de, fr, es, nl, da, nb, fi. Absent, the workspace’s default language. A value whose name carries a language, {date.long:sv}, keeps it.

string
Allowed values: en sv de fr es nl da nb fi

The language the template’s dynamic values are written in when their name names none, one of en, sv, de, fr, es, nl, da, nb, fi. Absent, the workspace’s default language. A value whose name carries a language, {date.long:sv}, keeps it.

x-pixonaut-session

The designer’s browser session, which the SDK sends so one visitor’s uploads and proofs are told apart from another’s on the same key: 6 to 64 letters, digits, _ or -. Any other value is ignored.

string

The designer’s browser session, which the SDK sends so one visitor’s uploads and proofs are told apart from another’s on the same key: 6 to 64 letters, digits, _ or -. Any other value is ignored.

Media typeapplication/json
object
blankId
required
string
>= 1 characters
garmentVariant

The variant whose colour the design is drawn in, by ref (v_…), when it is not the one variant names: on a dark colour each layer takes its on-dark value. It sizes nothing. A proof keeps it as proofVariant, so its commit is drawn in the same colour. Absent, variant’s colour; a ref the blank has no variant of draws as on a light product.

string
>= 3 characters <= 100 characters
layout
required

The name of the blank’s panel layout the design is drawn on.

string
>= 1 characters
repeat

Lays the design as a repeat of its template across the print area. Null, or absent, places it once. Through a designer link, a repeat the link offers, or null where its shopper may turn the repeat off; absent there, the link’s own start.

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
Allowed values: grid brick halfDrop scatter
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
templateId
required

The published template version, <baseId>@<version>.

string
>= 1 characters
values

The customer’s values, as on POST /v1/designs.

object
key
additional properties
variant

A variant of the blank, by ref (v_…). On a blank whose print areas change with its size, the design is sized at, and keeps, that variant’s size; a ref the blank has no variant of is refused with variant_not_of_blank. On any other blank it is not checked. A proof also keeps it as proofVariant, for display.

string
>= 3 characters <= 100 characters
variantRow

The size the design is for, as the blank’s option values, such as {"Size": "XL"}, in place of variant: a value of each option the blank’s print areas change with, and nothing else, or it is refused with variant_row_invalid. Ignored on a blank whose print areas change with nothing.

object
key
additional properties
string
>= 1 characters <= 80 characters
viewId

The view of the blank the customer previewed the proof in, by id. Kept with the proof for display only.

string
>= 1 characters <= 100 characters

Examples

Exampleexample

Example

{
"blankId": "blk_3f9a2c1d8e7b6a5f4c3d2e1f",
"layout": "All-over",
"templateId": "pug-fur@2",
"values": {},
"variantRow": {
"Size": "L"
}
}

The proof, its image link and its token

Media typeapplication/json
object
canvasHeightMm
required

The layout’s canvas height at the size proofed, in mm.

number
canvasWidthMm
required

The layout’s canvas width at the size proofed, in mm.

number
docHash
required
string
expiresAt
required

When the proof and its token expire, in milliseconds since the Unix epoch.

integer
lowResolution
required

The pictures that print below printFloorDpi at the design’s print size. A warning: nothing is refused for it.

Array<object>
object
actualPx
required

The picture’s pixels along the edge that decides.

number
assetId
required
string
effectiveDpi
required

Pixels per inch along that edge, as printed.

number
layerId
required

The layer the picture fills, or the artwork’s own key for its image background.

string
minPx
required

The pixels that edge needs at the floor.

number
printFloorDpi
required

The minimum print resolution the design’s pictures were judged against: the template’s own, else the tenant’s.

number
proofToken
required
string
proofUrl
required
string

Examples

Exampleexample

Example

{
"canvasHeightMm": 880,
"canvasWidthMm": 1540,
"docHash": "sha256:3b8e1f6a2c9d4e7051a8c3f6b9d2e4071c5a8f3b6d9e2c4710a5f8b3d6e9c2a14",
"expiresAt": 1792491247000,
"lowResolution": [],
"printFloorDpi": 150,
"proofToken": "eyJhdWQiOiJwcm9vZiIsImlkIjoicHJmXzRhN2MxZTJkOWYwYjNjNmQ4ZTVmMWEyYiIsInQiOiJhY21lIiwiZXhwIjoxNzkyNDkxMjQ3MDAwfQ.EXAMPLE_signature_not_a_real_one_0000000000",
"proofUrl": "https://api.pixonaut.example/p/eyJhdWQiOiJwcm9vZiIsImlkIjoicHJmXzRhN2MxZTJkOWYwYjNjNmQ4ZTVmMWEyYiIsInQiOiJhY21lIiwiZXhwIjoxNzkyNDkxMjQ3MDAwfQ.EXAMPLE_signature_not_a_real_one_0000000000"
}
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, invalid_query

Media typeapplication/json
object
error
required
string
reason

Always sent with invalid_query.

string

Examples

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, feature_disabled, forbidden, 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: layout_out_of_date

Media typeapplication/json
object
error
required
string
reason

Always sent with layout_out_of_date.

string

Examples

Examplelayout_out_of_date

layout_out_of_date

{
"error": "layout_out_of_date",
"reason": "string"
}
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: empty_layout, constraint_violation, unknown_placement, variant_not_of_blank, variant_row_invalid, asset_map_too_large, unknown_layout, payload_too_large

Media typeapplication/json
object
bytes

Always sent with asset_map_too_large, and may be sent with payload_too_large.

number
error
required
string
maxBytes

Always sent with asset_map_too_large, payload_too_large.

number
reason

Always sent with variant_not_of_blank, variant_row_invalid.

string
variant

Always sent with variant_not_of_blank.

string
violations

Always sent with constraint_violation.

Array<object>
object
characters

On a text_draws_fallback_glyphs or text_draws_missing_glyphs warning: the characters the text’s font cannot draw, each once, in the order the text first holds them. Absent on every other violation.

Array<string>
given
required
language

The language whose overrides break the rule, when only the template as it reads in that language does. Absent, the original.

string
layerId
required
string
prop
required
string
rule
required
string
severity
required

error refuses a publish; warning is worth the author’s attention and never does.

string

Examples

asset_map_too_large

{
"bytes": 0,
"error": "asset_map_too_large",
"maxBytes": 0
}
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, link_design_limit

Media typeapplication/json
object
error
required
string
reopensAt

When the link makes designs again: when the oldest design counted leaves the window. Null for a total limit. Always sent with link_design_limit.

number | null

Examples

link_design_limit

{
"error": "link_design_limit",
"reopensAt": 0
}
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.

The caller left before the render started

Media typeapplication/json
object
error
required
string

Examples

Exampleclient_closed_request

client_closed_request

{
"error": "client_closed_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: 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.

Refused: assets_unavailable

Media typeapplication/json
object
error
required
string

Examples

Exampleassets_unavailable

assets_unavailable

{
"error": "assets_unavailable"
}
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