Create a design from JSON
Alpha
The contract may change without notice, and imports created with it are not guaranteed to remain compatible. Not covered by the deprecation policy.
Sample request
# 1. Validate first — free of the write budget, creates nothing.
curl -X POST \
-H "x-api-key: $ABYSSALE_API_KEY" \
-H "Content-Type: application/json" \
-d @design.json \
"https://api.abyssale.com/designs/import/json?validate_only=true"
# 204 = the payload is good. Then submit it for real:
curl -X POST \
-H "x-api-key: $ABYSSALE_API_KEY" \
-H "Content-Type: application/json" \
-d @design.json \
"https://api.abyssale.com/designs/import/json"Example 200 response
{
"id": "64238d01-d402-474b-8c2d-fbc957e9d290",
"status": "WAITING_FOR_VALIDATION",
"links": {
"validate": "https://api.abyssale.com/designs/import/json/64238d01-d402-474b-8c2d-fbc957e9d290",
"status": "https://api.abyssale.com/designs/import/json/64238d01-d402-474b-8c2d-fbc957e9d290",
"dashboard": "https://app.abyssale.com/designs/9c2f31a0-8810-4c4b-bbf5-44a02e1f1d2f"
},
"uploads": [
{
"target": "layer",
"name": "hero",
"page": "page_1",
"url": "https://s3.amazonaws.com/abyssale-template-import",
"fields": {
"<key>": "string"
},
"max_bytes": 20000000,
"expires_at_ts": 1749831334
}
],
"version": "v2026-08-21"
}Example 400 error response
{
"id": "out_of_range",
"message": "formats[0].width: Must be greater than or equal to 1 and less than or equal to 5000.",
"errors": [
{
"path": "formats[0].width",
"code": "out_of_range",
"message": "Must be greater than or equal to 1 and less than or equal to 5000.",
"expected": {
"min": 1,
"max": 5000
},
"received": 99999999
}
]
}Submit a template structure as JSON. Returns an import ID, a links block, and a flat uploads[] array of presigned S3 POSTs — one for every asset given as a bare filename: image/logo src, video/audio src on animated designs, and a qrcode layer's icon_src. When every asset is a public URL or a data URI, the import is returned already in QUEUED with an empty uploads[] — no PUT call is needed.
Behaviour, limits and caveats
The payload carries no preview image: design thumbnails are generated by the backend after import (every format is rendered and the first visual becomes the thumbnail; the import reports PROCESSING while previews render).
Dry run: pass ?validate_only=true to validate the payload without creating an import. Runs the full schema and all payload-only structural validators (conflicting filename sources, data-URI validity and decoded-size caps, TIFF type constraints, video/audio extensions, animated keyframes, qrcode icons). Excluded: unknown_font, project_not_found and unreachable_src. Returns 204 No Content on success.
Plan entitlement. A design type your plan does not include is refused here rather than at generation time, so a workspace never ends up owning a design it cannot render:
type | Requires | Available from |
|---|---|---|
static | — | any plan |
animated | MP4 | Pro |
printer, printer_multipage | Printable PDF | Suite |
These are the same entitlements that gate generating the corresponding assets, so a plan that can render an animated design can also import one. See abyssale.com/pricing.
A workspace without the feature gets 429 feature_not_in_plan. The check also applies to ?validate_only=true, so a dry run never returns 204 for a design the real call refuses.
Query parameters
validate_only boolean
When true, runs schema and cross-field validation and returns 204 No Content without creating an import row or generating presigned URLs. Defaults to false.
strict boolean
When true, a text layer that cannot fit its box even at min_font_size fails the import instead of importing with a text_fit_failed warning. Defaults to false.
More about strict
When true, a text layer that cannot fit its box even at min_font_size fails the import instead of importing with a text_fit_failed warning.
It never changes this response. Text fitting is measured while the design is built, long after this call has answered, so strict cannot produce a 400. The import is accepted exactly as it would be otherwise, and the difference shows up when you poll: status: "FAILED" with error.code: "text_fit_failed" — delivered as HTTP 200, like every other terminal import state. Without strict the same condition appears as a warnings[] entry and the import succeeds.
Request body
name string required
Length 1–100 characters.
type string required
Design type. One of "static", "printer", "animated", "printer_multipage".
More about type
Design type. static = single image; printer = single-page print PDF; animated = animated/video design; printer_multipage = multi-page print PDF. Printer payloads are authored in physical units — the design declares unit (mm | in) once at the top level, geometry is floats in that unit, font sizes are pt, and colors are stored as cmyk (a solid hex is converted with a color_converted warning; gradients are rejected). Animated payloads are px-authored like static and require a top-level animation object; they may use video/audio layers and per-layer animation timing/tweens.
Muting is spelled differently on each of the three surfaces, and the type changes too. Importing takes muted (a boolean, on the video/audio layer properties); reading a design returns it as the attributes video_muted / audio_muted (booleans); overriding it at generation time takes audio_muted as a number 0–1, where true/false answer 400. Convert deliberately when moving a value between them. Multipage payloads (printer_multipage) drop formats/layers, declare the print setup once at the top level (unit/width/height required, bleed_size/safe_size/dpi optional), and carry a top-level ordered pages array (1–30 pages); each page is a self-contained print page (own background_color + layers, inheriting the document-wide print setup) that inherits every per-layer printer rule. No shared layers exist — a repeated element is included per page.
target object
Where the import lands.
More about target
Where the import lands. An import creates a design — the thing you can generate from — so this defaults to { "kind": "design" } and project_uuid is required: a design lives in a project, and one without a project is not returned by GET /designs. Omitting target entirely therefore fails with missing_required at target.project_uuid.
Pass kind: workspace_template for the other variant: a reusable blueprint in the workspace library, which has no project and must be duplicated into one before you can generate from it. Only designs are addressable via GET /designs/{uuid}/as-import.
Show child attributes
kind string required
Required WHENEVER target is present. The design default applies only to an entirely absent target; sending {"project_uuid": "..."} with no kind is missing_required at target.kind. One of "design", "workspace_template".
project_uuid string (uuid)
Required for kind=design; forbidden for kind=workspace_template.
formats array of DesignImportFormat
List of formats (1-20). 1–20 items.
More about formats
List of formats (1-20). Required on static/printer/animated; omit on printer_multipage (use pages instead). A count outside 1-20 is rejected with out_of_range at formats. background_color is required on each format. There is no preview-image field — thumbnails are rendered for you (a preview_image key is rejected as unknown_field).
Show child attributes
name string required
Format name, 1–100 characters, matching ^[a-z0-9][a-z0-9_-]*$ — lowercase letters, digits, - and _, starting with a letter or digit. Anything else (spaces, capitals) is invalid_payload. Must be unique within formats (duplicate_format_name) and must not be a platform-reserved name (reserved_format_name). Length 1–100 characters.
width number required
The upper bound depends on the design type, so the schema declares none. Minimum 0. Greater than true.
More about width
The upper bound depends on the design type, so the schema declares none. static: width in pixels, integer 1–5000. printer: a float in the design's unit (mm | in), no fixed upper bound of its own — its pixel equivalent at 300 DPI must stay within 1–20000, else out_of_range. On animated: integer pixels, and the format must additionally fit within a 1920×1200 bounding box in either orientation (max(width, height) ≤ 1920 and min(width, height) ≤ 1200 — out_of_range otherwise).
height number required
The upper bound depends on the design type, so the schema declares none. Minimum 0. Greater than true.
More about height
The upper bound depends on the design type, so the schema declares none. static: height in pixels, integer 1–5000. printer: a float in the design's unit (mm | in), no fixed upper bound of its own — its pixel equivalent at 300 DPI must stay within 1–20000, else out_of_range. On animated: integer pixels, and the format must additionally fit within a 1920×1200 bounding box in either orientation (max(width, height) ≤ 1920 and min(width, height) ≤ 1200 — out_of_range otherwise).
background_color string required
On static/animated: hex (#RRGGBB / #RRGGBBAA) or a gradient; a cmyk token is converted to hex with a color_converted warning.
More about background_color
On static/animated: hex (#RRGGBB / #RRGGBBAA) or a gradient; a cmyk token is converted to hex with a color_converted warning. On type: "printer": a cmyk(c,m,y,k) / cmyka(c,m,y,k[,a]) token (integers 0–100) is what gets stored — a solid hex value is accepted and converted to cmyk with the same warning, while a gradient is rejected with unsupported_for_type.
bleed_size number
Printer only. Bleed size as a float in the design's unit; presence enables bleed on the created design. Forbidden on static (unsupported_for_type). Minimum 0.
safe_size number
Printer only. Safe-zone size as a float in the design's unit; presence enables the safe zone on the created design. Forbidden on static (unsupported_for_type). Minimum 0.
dpi integer
Printer only, optional. Range 10–300.
More about dpi
Printer only, optional. Render DPI for this format. Beyond the 10–300 field range, the value is capped by an area-based ceiling computed from the format size, so a large format rejects a high DPI with out_of_range; omitted, the backend computes the ceiling itself. Forbidden on static/animated (unsupported_for_type). On printer_multipage dpi is a single document-level value instead — a page carries no print settings of its own.
layers array of DesignImportLayer
Required on static/printer/animated; omit on printer_multipage (each page carries its own flat layers). 1-80 layers - an empty array is rejected with out_of_range at layers (expected: {min: 1, max: 80}), since required enforces key presence and not non-emptiness. 1–80 items.
More about layers
Required on static/printer/animated; omit on printer_multipage (each page carries its own flat layers). 1-80 layers - an empty array is rejected with out_of_range at layers (expected: {min: 1, max: 80}), since required enforces key presence and not non-emptiness. Layers defined once at the top level. Each layer contains layout and properties keyed by format name. A "default" key may be used in either dict — it is merged under each per-format entry before validation, so overrides only need to specify the fields that differ.
Show child attributes
name string required
Layer name, unique within the design (duplicate_layer_name). On printer_multipage uniqueness is scoped to the page, so two pages may reuse a name. Length 1–40 characters.
type string required
video and audio are accepted on type: "animated" designs only — on static/printer the enum simply doesn't include them (unknown_enum_value). The order above is the contractual order surfaced in an unknown_enum_value problem's expected list. One of "image", "logo", "text", "shape", "group", "button", "rating", "qrcode", "illustration", "video", "audio".
hidden boolean | object
Hide the layer. Defaults to false.
More about hidden
Hide the layer. Either a single boolean applying to every format, or an object keyed by format name when the layer is hidden in some formats and visible in others — the editor allows that, and collapsing it to one boolean would remove the layer from a format where it is meant to show.
A multi-format design MAY still send the flat form: "hidden everywhere" is a complete answer, unlike a flat layout. A missing format key means false; a default key covers the formats not named.
Show child attributes
object
<key> boolean
One entry per key.
locked boolean | object
Lock the layer against editing. Same flat-or-format-keyed shape as hidden. Defaults to false.
Show child attributes
object
<key> boolean
One entry per key.
layer_ids array of string
group layers only — required there, rejected anywhere else. Omitting it on a group is missing_required; sending it on any other layer type is unsupported_for_type.
More about layer_ids
group layers only — required there, rejected anywhere else. Omitting it on a group is missing_required; sending it on any other layer type is unsupported_for_type. Names of the layers this group contains. Declared here beside layout/properties rather than inside the group's property object, because a group's membership is one list for the whole design — the same children in every format, so per-format membership is unrepresentable by design. Each entry must name a layer declared in the same format, otherwise conditional_dependency_missing.
layout DesignImportLayoutBox | object required
Keyed by format name.
More about layout
Keyed by format name. Each value is { x, y, width, height }. A "default" key is allowed and will be merged under each per-format entry. Single-format designs may instead pass the { x, y, width, height } object directly (flat form, no format key). The same applies to properties.
On static designs all four values are integer pixels (bounds below). On printer designs they are floats in the design's unit (mm | in); each value's pixel equivalent at the fixed 300 DPI must stay within the same bounds (out_of_range otherwise).
Show child attributes
DesignImportLayoutBox
One layer box. Integer pixels on static/animated; floats in the design's unit on print.
x number required
Range -19999–19999.
y number required
Range -19999–19999.
width number required
Integer >= 1 (px) on static; float > 0 (unit) on printer. Range 0–19999. Greater than true.
height number required
Integer >= 1 (px) on static; float > 0 (unit) on printer. Range 0–19999. Greater than true.
object
<format-name> DesignImportLayoutBox
One entry per format name.
Show child attributes
x number required
Range -19999–19999.
y number required
Range -19999–19999.
width number required
Integer >= 1 (px) on static; float > 0 (unit) on printer. Range 0–19999. Greater than true.
height number required
Integer >= 1 (px) on static; float > 0 (unit) on printer. Range 0–19999. Greater than true.
properties DesignImportStaticLayerProperties | DesignImportPrinterLayerProperties | DesignImportAnimatedLayerProperties | object required
The layer's property set.
More about properties
The layer's property set. Either flat ({ "payload": "Hi", ... }) or keyed by format name ({ "youtube-thumbnail": { ... } }, plus an optional "default" key merged under every per-format entry). A single-format design may use either shape; a multi-format design must key, and must cover every format. The two are told apart by key name: a top-level key that is a declared property of the layer's type means the flat form. layout follows exactly the same rule.
Which property object is valid depends on the layer's type and on the design type. The three anyOf branches below are the generated, per-design-type unions — DesignImportStaticLayerProperties, DesignImportPrinterLayerProperties and DesignImportAnimatedLayerProperties — each fanning out to one schema per layer type. They are generated from the schemas that validate the request, so their fields, bounds, enums and defaults are exact. The fourth branch is the format-keyed envelope, whose values are those same objects.
A generic JSON-Schema validator cannot enforce the pairing, so do not trust a green result here. The branch is selected by the layer's own type, and OpenAPI 3.0 has no way to tie an anyOf to a sibling field. A property set that is legal for some layer type therefore validates for every layer type — alignment on a text layer passes offline validation and then answers 400 unknown_field, because alignment belongs to button/image/logo/illustration/group and a text layer takes text_align + vertical_align. Check a payload against the layer type you are actually sending, or against the API with ?validate_only=true.
Printer designs (type: "printer" / printer_multipage): every *_color field, stroke.color included, is a cmyk(c,m,y,k) / cmyka(c,m,y,k[,a]) token (integers 0–100, no %). A solid hex is accepted and converted, reported as color_converted; inline markup inside a text payload is exempt and stays hex. Conversion is approximate — no ICC profile — so author cmyk(...) directly when the exact print colour matters. Gradients are rejected (unsupported_for_type). Geometric values (stroke.width, radius, padding, gap, star_dimension, star_margin) are floats in the design's unit with no upper bound; only the format size and the layer layout are checked against the pixel bounds at 300 DPI (out_of_range). font_size/min_font_size are floats in pt, 0.48–240.
shadow, text_shadow, pattern_name, pattern_color and overlay are accepted and dropped — validated in full, then removed, one property_dropped_for_type warning per occurrence naming the layer path and the property. overlay is one nested object, so it drops as a unit and reports a single warning. Because they are still validated, a gradient in pattern_color is invalid_payload. filter_name stays allowed.
Animated designs (type: "animated"): px/hex like static (a cmyk token is converted to hex with a color_converted warning). Group auto_layout, direction, alignment and gap are rejected (unsupported_for_type). A video src is a filename or URL ending .mp4/.webm or a data:video/mp4|data:video/webm URI; an audio src is .mp3/.wav or data:audio/mpeg|data:audio/wav. On both, an extension is checked only when present: an extensionless https:// URL is accepted and the worker probes the content type. A media extension in an image/logo src is rejected (unsupported_for_type).
Asset fields: src (and qrcode icon_src) accepts a filename — which returns a presigned S3 POST in uploads[] — an https:// URL, or a data URI decoded and uploaded server-side at POST time (≤ 2 MB decoded on every design type). A qrcode's centre icon is icon_src and accepts the same three forms as src, with a data URI capped at 1 MB decoded rather than 2 MB. There is no icon property. The QR error-correction level is chosen for you (Q with an icon, M without) and is not a payload field.
Conditional dependencies the flat schemas cannot express: mask_name: "rounded_corners" requires mask_properties.radius; filter_name: "duotone" requires filter_properties.name; each entry of a group's layer-level layer_ids must name a layer declared in the same format. Violations are reported as conditional_dependency_missing.
filter_properties.name must additionally be one of the named duotone presets — blue_green, blue_orange, deep_green_light_green, BrightRed_light_yellow, brown_pale_green, brown_beige, deep_blue_green, deep_blue_red, deep_purple_orange, deep_purple_beige, deep_purple_pale_green, deep_blue_pale_green. An unlisted name is rejected with unknown_enum_value.
Groups carry their per-format geometry like every other layer type, but their MEMBERSHIP is not per-format: layer_ids sits on the layer itself and names the same children in every format. A group may also carry the common layer-level hidden/locked attributes: the platform keeps a group consistent with its members automatically — setting them on import propagates the flag down to the members (per format), and on reads (GET /designs/{designId}/formats/{formatSpecifier}, as-import) a group's hidden/locked are computed from its members (all members locked ⇒ group locked; all hidden ⇒ group hidden).
Show child attributes
DesignImportStaticLayerProperties
Property set of one layer of a type: "static" design, selected by the layer's type.
DesignImportTextLayerProperties
Properties of a text layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 10000 characters.
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius integer
Range 0–1000.
background_offset_x integer
Range -1000–1000.
background_offset_y integer
Range -1000–1000.
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportSideBorderProperties
A rule along one edge of a text box.
DesignImportImageLayerProperties
Properties of a image layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportLayerMaskProperties
The mask_name companion blob. radius is its ONLY field.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportLogoLayerProperties
Properties of a logo layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportShapeLayerProperties
Properties of a shape layer on type: "static" designs, and the shared layer types of type: "animated".
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportButtonLayerProperties
Properties of a button layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#ffffff". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius integer | null
Range 0–1000.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportRatingLayerProperties
Properties of a rating layer on type: "static" designs, and the shared layer types of type: "animated".
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Range 4–400.
star_margin number
Range 0–100.
star_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportQrCodeLayerProperties
Properties of a qrcode layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportGroupLayerProperties
Properties of a group layer on type: "static" designs, and the shared layer types of type: "animated".
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap integer
Defaults to 10. Range 0–1000.
mask DesignImportMaskProperties
The mask a group clips its members with. Its presence is what makes the group masked.
DesignImportIllustrationLayerProperties
Properties of a illustration layer on type: "static" designs, and the shared layer types of type: "animated".
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportPrinterLayerProperties
Property set of one layer of a type: "printer" / type: "printer_multipage" design, selected by the layer's type.
DesignImportPrinterTextLayerProperties
Properties of a text layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
payload string
Defaults to "". At most 10000 characters.
color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size number required
Range 0.48–240.
min_font_size number
Range 0.48–240.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding number | DesignImportPrinterPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius number
Minimum 0.
background_offset_x number
background_offset_y number
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportPrinterSideBorderProperties
Unit-domain floats, so the px caps come off — only the sign constraints survive.
DesignImportPrinterImageLayerProperties
Properties of a image layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: overlay, shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportPrinterLayerMaskProperties
Unit-domain floats, so the px corner caps come off — as everywhere else on printer.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterLogoLayerProperties
Properties of a logo layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterShapeLayerProperties
Properties of a shape layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: pattern_color, pattern_name, shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterButtonLayerProperties
Properties of a button layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow, text_shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
payload string
Defaults to "". At most 2048 characters.
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,0)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size number required
Range 0.48–240.
min_font_size number
Range 0.48–240.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding number | DesignImportPrinterPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius number | null
Minimum 0.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterRatingLayerProperties
Properties of a rating layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Minimum 0. Greater than true.
star_margin number
Minimum 0.
star_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about star_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterQrCodeLayerProperties
Properties of a qrcode layer on type: "printer" and type: "printer_multipage" designs.
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportPrinterGroupLayerProperties
Properties of a group layer on type: "printer" and type: "printer_multipage" designs.
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap number
Defaults to 0. Minimum 0.
mask DesignImportPrinterMaskProperties
Unit-domain floats, so the px caps come off — only the sign constraints survive.
DesignImportPrinterIllustrationLayerProperties
Properties of a illustration layer on type: "printer" and type: "printer_multipage" designs.
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportAnimatedLayerProperties
Property set of one layer of a type: "animated" design, selected by the layer's type.
DesignImportTextLayerProperties
Properties of a text layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 10000 characters.
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius integer
Range 0–1000.
background_offset_x integer
Range -1000–1000.
background_offset_y integer
Range -1000–1000.
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportSideBorderProperties
A rule along one edge of a text box.
DesignImportImageLayerProperties
Properties of a image layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportLayerMaskProperties
The mask_name companion blob. radius is its ONLY field.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportLogoLayerProperties
Properties of a logo layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportShapeLayerProperties
Properties of a shape layer on type: "static" designs, and the shared layer types of type: "animated".
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportButtonLayerProperties
Properties of a button layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#ffffff". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius integer | null
Range 0–1000.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportRatingLayerProperties
Properties of a rating layer on type: "static" designs, and the shared layer types of type: "animated".
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Range 4–400.
star_margin number
Range 0–100.
star_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportQrCodeLayerProperties
Properties of a qrcode layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportGroupLayerProperties
Properties of a group layer on type: "static" designs, and the shared layer types of type: "animated".
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap integer
Defaults to 10. Range 0–1000.
mask DesignImportMaskProperties
The mask a group clips its members with. Its presence is what makes the group masked.
DesignImportIllustrationLayerProperties
Properties of a illustration layer on type: "static" designs, and the shared layer types of type: "animated".
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportVideoLayerProperties
Properties of a video layer on type: "animated" designs only.
src string required
Length 1–3000000 characters.
muted boolean
Defaults to false.
opacity integer
Defaults to 100. Range 0–100.
DesignImportAudioLayerProperties
Properties of a audio layer on type: "animated" designs only.
src string required
Length 1–3000000 characters.
muted boolean
Defaults to false.
max_volume number
Range 0–1.
object
Multi-format form: keys are format names (plus the optional "default"), values are the per-design-type property objects of the three branches above.
<key> DesignImportStaticLayerProperties | DesignImportPrinterLayerProperties | DesignImportAnimatedLayerProperties
One entry per key.
Show child attributes
DesignImportStaticLayerProperties
Property set of one layer of a type: "static" design, selected by the layer's type.
DesignImportTextLayerProperties
Properties of a text layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 10000 characters.
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius integer
Range 0–1000.
background_offset_x integer
Range -1000–1000.
background_offset_y integer
Range -1000–1000.
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportSideBorderProperties
A rule along one edge of a text box.
DesignImportImageLayerProperties
Properties of a image layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportLayerMaskProperties
The mask_name companion blob. radius is its ONLY field.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportLogoLayerProperties
Properties of a logo layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportShapeLayerProperties
Properties of a shape layer on type: "static" designs, and the shared layer types of type: "animated".
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportButtonLayerProperties
Properties of a button layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#ffffff". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius integer | null
Range 0–1000.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportRatingLayerProperties
Properties of a rating layer on type: "static" designs, and the shared layer types of type: "animated".
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Range 4–400.
star_margin number
Range 0–100.
star_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportQrCodeLayerProperties
Properties of a qrcode layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportGroupLayerProperties
Properties of a group layer on type: "static" designs, and the shared layer types of type: "animated".
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap integer
Defaults to 10. Range 0–1000.
mask DesignImportMaskProperties
The mask a group clips its members with. Its presence is what makes the group masked.
DesignImportIllustrationLayerProperties
Properties of a illustration layer on type: "static" designs, and the shared layer types of type: "animated".
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportPrinterLayerProperties
Property set of one layer of a type: "printer" / type: "printer_multipage" design, selected by the layer's type.
DesignImportPrinterTextLayerProperties
Properties of a text layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
payload string
Defaults to "". At most 10000 characters.
color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size number required
Range 0.48–240.
min_font_size number
Range 0.48–240.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding number | DesignImportPrinterPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius number
Minimum 0.
background_offset_x number
background_offset_y number
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportPrinterSideBorderProperties
Unit-domain floats, so the px caps come off — only the sign constraints survive.
DesignImportPrinterImageLayerProperties
Properties of a image layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: overlay, shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportPrinterLayerMaskProperties
Unit-domain floats, so the px corner caps come off — as everywhere else on printer.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterLogoLayerProperties
Properties of a logo layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterShapeLayerProperties
Properties of a shape layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: pattern_color, pattern_name, shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
radius number | null | DesignImportPrinterRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterButtonLayerProperties
Properties of a button layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow, text_shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
payload string
Defaults to "". At most 2048 characters.
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Defaults to "cmyk(0,0,0,0)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size number required
Range 0.48–240.
min_font_size number
Range 0.48–240.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding number | DesignImportPrinterPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius number | null
Minimum 0.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportPrinterStrokeProperties | null
Reusable nested printer stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterRatingLayerProperties
Properties of a rating layer on type: "printer" and type: "printer_multipage" designs. Accepted but DROPPED: shadow — accepted, then removed from the imported design with a property_dropped_for_type warning. The import succeeds.
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Minimum 0. Greater than true.
star_margin number
Minimum 0.
star_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about star_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
background_color string
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
More about background_color
A linear-gradient(...) value is rejected with unsupported_for_type on this design type: the print pipeline collapses a gradient to its first stop, so it would ship different artwork. Author cmyk(...) directly, or a solid hex (converted, with a color_converted warning). Matched case-insensitively (JSON Schema pattern cannot express that flag).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportPrinterQrCodeLayerProperties
Properties of a qrcode layer on type: "printer" and type: "printer_multipage" designs.
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "cmyk(0,0,0,100)". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportPrinterGroupLayerProperties
Properties of a group layer on type: "printer" and type: "printer_multipage" designs.
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap number
Defaults to 0. Minimum 0.
mask DesignImportPrinterMaskProperties
Unit-domain floats, so the px caps come off — only the sign constraints survive.
DesignImportPrinterIllustrationLayerProperties
Properties of a illustration layer on type: "printer" and type: "printer_multipage" designs.
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportAnimatedLayerProperties
Property set of one layer of a type: "animated" design, selected by the layer's type.
DesignImportTextLayerProperties
Properties of a text layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 10000 characters.
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_align string
One of "left", "center", "right". Defaults to "left".
vertical_align string
One of "top", "middle", "bottom". Defaults to "top".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
skew_y number
Range -20–20.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
background_fill string
One of "normal", "width".
background_mode string
One of "highlight", "paragraph".
background_radius integer
Range 0–1000.
background_offset_x integer
Range -1000–1000.
background_offset_y integer
Range -1000–1000.
rotation number
Range 0–360.
opacity integer
Defaults to 100. Range 0–100.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
side_border DesignImportSideBorderProperties
A rule along one edge of a text box.
DesignImportImageLayerProperties
Properties of a image layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
fitting_type string
One of "cover", "fill". Defaults to "fill".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
mask_name string
One of "circle", "rounded_corners", "blob", "squircle", "pentagon", "hexagon", "parallelogram", "window".
mask_properties DesignImportLayerMaskProperties
The mask_name companion blob. radius is its ONLY field.
filter_name string
One of "grayscale", "duotone".
filter_properties DesignImportFilterProperties
The filter_name companion blob. name selects a duotone preset.
overlay DesignImportOverlayProperties
A two-colour gradient overlay on an image.
remove_bg boolean
remove_bg_properties object
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportLogoLayerProperties
Properties of a logo layer on type: "static" designs, and the shared layer types of type: "animated".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "custom", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
position_offset_x number
Range -0.5–0.5.
position_offset_y number
Range -0.5–0.5.
zoom number
Defaults to 1. Range 1–20.
src string
Length 1–3000000 characters.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportShapeLayerProperties
Properties of a shape layer on type: "static" designs, and the shared layer types of type: "animated".
shape string
One of "rectangle", "triangle", "right_triangle", "circle", "half_circle", "star_1", "star_2", "pentagon", "hexagon", "hexagram", "rhombus", "parallelogram", "trapeze", "squircle", "curved_diamond", "window", "frame", "arrow", "cross", "gear", "rounded_gear", "blob", "cloud", "heart". Defaults to "rectangle".
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
pattern_name string
Length 1–100 characters.
pattern_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
radius integer | null | DesignImportRadiusProperties
One number applying to every side, or an object with tl, tr, bl, br. The export emits the number whenever the sides agree.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportButtonLayerProperties
Properties of a button layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#ffffff". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
font string
Defaults to "6156629c-33c5-11ea-9877-92672c1b8195". Length 36–36 characters.
font_size integer required
Range 2–1000.
min_font_size number
Range 2–1000.
font_weight integer
One of 100, 200, 300, 400, 500, 600, 700, 800, 900. Defaults to 400.
font_style string
One of "normal", "italic". Defaults to "normal".
text_decoration string | null
One of "underline", "strikethrough", "diagonal-strikethrough".
text_decoration_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
text_transform string | null
One of "uppercase", "lowercase", "titlecase".
text_align string
One of "left", "center", "right". Defaults to "center".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right". Defaults to "middle center".
line_height integer
Defaults to 130. Range 1–500.
char_spacing integer
Defaults to 0. Range -100–1000.
padding integer | DesignImportPaddingProperties
One number applying to every side, or an object with vertical, horizontal. The export emits the number whenever the sides agree.
radius integer | null
Range 0–1000.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
stroke DesignImportStrokeProperties | null
Reusable nested stroke object of a template-import layer property set.
text_shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportRatingLayerProperties
Properties of a rating layer on type: "static" designs, and the shared layer types of type: "animated".
rating_score integer
Defaults to 100. Range 0–100.
star_dimension number
Range 4–400.
star_margin number
Range 0–100.
star_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^linear-gradient\(([0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}% [0-9]{1,3}%,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?,[0-9]{1,3}% #[0-9A-F]{6} \d+(\.\d+)?)\)$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
shadow DesignImportShadowProperties | null
Reusable nested shadow object of a template-import layer property set.
DesignImportQrCodeLayerProperties
Properties of a qrcode layer on type: "static" designs, and the shared layer types of type: "animated".
payload string
Defaults to "". At most 2048 characters.
foreground_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Defaults to "#000000". Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
background_color string
Matched case-insensitively (JSON Schema pattern cannot express that flag). Pattern (?:^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$)|(?:^cmyk\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*\)$|^cmyka\(\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*,\s*(?:100|\d{1,2})\s*(?:,\s*(?:100|\d{1,2})\s*)?\)$).
icon_src string
Length 1–3000000 characters.
margin integer
Range 0–100.
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportGroupLayerProperties
Properties of a group layer on type: "static" designs, and the shared layer types of type: "animated".
auto_layout boolean
Defaults to false.
direction string
One of "horizontal", "vertical". Defaults to "horizontal".
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right".
gap integer
Defaults to 10. Range 0–1000.
mask DesignImportMaskProperties
The mask a group clips its members with. Its presence is what makes the group masked.
DesignImportIllustrationLayerProperties
Properties of a illustration layer on type: "static" designs, and the shared layer types of type: "animated".
illustration_type string required
One of "undraw", "feather", "twemoji", "material_icons".
illustration_file string required
Length 1–255 characters.
illustration_properties DesignImportIllustrationProperties
Recolouring for a library illustration.
alignment string
One of "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", "top", "middle", "bottom", "left", "center", "right". Defaults to "middle center".
opacity integer
Defaults to 100. Range 0–100.
rotation number
Range 0–360.
DesignImportVideoLayerProperties
Properties of a video layer on type: "animated" designs only.
src string required
Length 1–3000000 characters.
muted boolean
Defaults to false.
opacity integer
Defaults to 100. Range 0–100.
DesignImportAudioLayerProperties
Properties of a audio layer on type: "animated" designs only.
src string required
Length 1–3000000 characters.
muted boolean
Defaults to false.
max_volume number
Range 0–1.
animation object
Animated designs only (unsupported_for_type on static/printer). Per-layer timeline timing and tweens — format-global (not keyed by format name). Layers without it span the whole timeline.
Show child attributes
start_at_s number
When the layer appears on the timeline (seconds). Defaults to 0. Minimum 0.
end_at_s number
When the layer disappears (seconds). Defaults to animation.duration; must be ≤ the timeline duration and strictly greater than start_at_s (out_of_range). Minimum 0.
tweens array of object
Animation tweens.
More about tweens
Animation tweens. type is one of slide | fade | scale | rotate | audioFade | textEffect; keyframes is an array of at least two raw keyframe objects — deliberately untyped (several keyframe schema generations coexist); the only enforced invariant is that every item carries a numeric data.time (seconds). Tween ids are assigned by the API and are never part of the payload. Each type animates specific keyframe attr keys, and a tween whose (dict-era) keyframes carry none of them is rejected with missing_required: slide needs both left and top, fade needs opacity, scale needs scale, rotate needs angle, audioFade needs volumeEffect, textEffect needs typewriting. scale accepts no other spelling — width, height and animationScale exist on some older stored designs but animate nothing.
unit string
Print designs only (printer and printer_multipage) — required. Physical authoring unit for everything in the document: format/page size, bleed and safe sizes, and every layer's geometry in every format. One of "mm", "in".
More about unit
Print designs only (printer and printer_multipage) — required. Physical authoring unit for everything in the document: format/page size, bleed and safe sizes, and every layer's geometry in every format. Declared exactly once, because a print design has one ruler — it does not change between its formats. Missing → missing_required at unit; present on static/animated → unsupported_for_type. A format carrying its own unit is rejected with unknown_field.
width number
printer_multipage designs only — required. Page width as a float in unit, shared by every page. Its pixel equivalent at 300 DPI must stay within 1–20000 (out_of_range at width). Minimum 0. Greater than true.
height number
printer_multipage designs only — required. Page height as a float in unit, shared by every page. Same 1–20000 px-equivalence bound, reported at height. Minimum 0. Greater than true.
bleed_size number
printer_multipage designs only. Optional bleed size as a float in unit; presence enables bleed on every page. Minimum 0.
safe_size number
printer_multipage designs only. Optional safe-zone size as a float in unit; presence enables the safe zone on every page. Minimum 0.
dpi integer
printer_multipage designs only. Optional global render DPI for the whole document. Range 10–300.
More about dpi
printer_multipage designs only. Optional global render DPI for the whole document. Because the document has a single page size there is exactly one area-based ceiling min(300, floor(72*sqrt(225000000/(w_pt*h_pt)))); a higher value is rejected with out_of_range at dpi (carrying expected: {max: <ceiling>} and received). Omitted ⇒ the backend computes that same ceiling as the default, identically for every page. On printer designs dpi is a per-format field instead.
pages array of DesignImportPage
printer_multipage designs only (replaces formats + top-level layers; forbidden on other types). 1–30 items.
More about pages
printer_multipage designs only (replaces formats + top-level layers; forbidden on other types). Ordered array of 1–30 self-contained print pages — array order is the page order (the backend names them page_1 … page_N). A count outside 1–30 → out_of_range at pages. All pages share one size, so the print setup (unit/width/height/bleed_size/safe_size/dpi) is declared once at the top level; a page object carries only background_color and a flat layers array (one format per page).
Show child attributes
background_color string required
A cmyk(c,m,y,k) / cmyka(c,m,y,k[,a]) token (integers 0-100) - required.
More about background_color
A cmyk(c,m,y,k) / cmyka(c,m,y,k[,a]) token (integers 0-100) - required. A solid hex value is accepted and converted to cmyk with a color_converted warning; a gradient is rejected with unsupported_for_type — same as type: "printer". This is the one setting that stays per page, because a cover legitimately differs from an inside page.
layers array of DesignImportLayer required
This page's layers, authored in the document-level unit. 1–80 items.
More about layers
This page's layers, authored in the document-level unit. A page is single-format, so each layer's layout/properties may be given flat or keyed under default — any other key is rejected with unknown_format_key. Either way the stored structure is flat. Same layer shapes and per-layer rules as type: "printer". An empty array is rejected with out_of_range at pages[i].layers (expected: {min: 1, max: 80}).
Show child attributes
name string required
Layer name, unique within the design (duplicate_layer_name). On printer_multipage uniqueness is scoped to the page, so two pages may reuse a name. Length 1–40 characters.
type string required
video and audio are accepted on type: "animated" designs only — on static/printer the enum simply doesn't include them (unknown_enum_value). The order above is the contractual order surfaced in an unknown_enum_value problem's expected list. One of "image", "logo", "text", "shape", "group", "button", "rating", "qrcode", "illustration", "video", "audio".
hidden boolean | object
Hide the layer. Defaults to false.
More about hidden
Hide the layer. Either a single boolean applying to every format, or an object keyed by format name when the layer is hidden in some formats and visible in others — the editor allows that, and collapsing it to one boolean would remove the layer from a format where it is meant to show.
A multi-format design MAY still send the flat form: "hidden everywhere" is a complete answer, unlike a flat layout. A missing format key means false; a default key covers the formats not named.
locked boolean | object
Lock the layer against editing. Same flat-or-format-keyed shape as hidden. Defaults to false.
layer_ids array of string
group layers only — required there, rejected anywhere else. Omitting it on a group is missing_required; sending it on any other layer type is unsupported_for_type.
More about layer_ids
group layers only — required there, rejected anywhere else. Omitting it on a group is missing_required; sending it on any other layer type is unsupported_for_type. Names of the layers this group contains. Declared here beside layout/properties rather than inside the group's property object, because a group's membership is one list for the whole design — the same children in every format, so per-format membership is unrepresentable by design. Each entry must name a layer declared in the same format, otherwise conditional_dependency_missing.
layout DesignImportLayoutBox | object required
Keyed by format name.
More about layout
Keyed by format name. Each value is { x, y, width, height }. A "default" key is allowed and will be merged under each per-format entry. Single-format designs may instead pass the { x, y, width, height } object directly (flat form, no format key). The same applies to properties.
On static designs all four values are integer pixels (bounds below). On printer designs they are floats in the design's unit (mm | in); each value's pixel equivalent at the fixed 300 DPI must stay within the same bounds (out_of_range otherwise).
properties DesignImportStaticLayerProperties | DesignImportPrinterLayerProperties | DesignImportAnimatedLayerProperties | object required
The layer's property set.
More about properties
The layer's property set. Either flat ({ "payload": "Hi", ... }) or keyed by format name ({ "youtube-thumbnail": { ... } }, plus an optional "default" key merged under every per-format entry). A single-format design may use either shape; a multi-format design must key, and must cover every format. The two are told apart by key name: a top-level key that is a declared property of the layer's type means the flat form. layout follows exactly the same rule.
Which property object is valid depends on the layer's type and on the design type. The three anyOf branches below are the generated, per-design-type unions — DesignImportStaticLayerProperties, DesignImportPrinterLayerProperties and DesignImportAnimatedLayerProperties — each fanning out to one schema per layer type. They are generated from the schemas that validate the request, so their fields, bounds, enums and defaults are exact. The fourth branch is the format-keyed envelope, whose values are those same objects.
A generic JSON-Schema validator cannot enforce the pairing, so do not trust a green result here. The branch is selected by the layer's own type, and OpenAPI 3.0 has no way to tie an anyOf to a sibling field. A property set that is legal for some layer type therefore validates for every layer type — alignment on a text layer passes offline validation and then answers 400 unknown_field, because alignment belongs to button/image/logo/illustration/group and a text layer takes text_align + vertical_align. Check a payload against the layer type you are actually sending, or against the API with ?validate_only=true.
Printer designs (type: "printer" / printer_multipage): every *_color field, stroke.color included, is a cmyk(c,m,y,k) / cmyka(c,m,y,k[,a]) token (integers 0–100, no %). A solid hex is accepted and converted, reported as color_converted; inline markup inside a text payload is exempt and stays hex. Conversion is approximate — no ICC profile — so author cmyk(...) directly when the exact print colour matters. Gradients are rejected (unsupported_for_type). Geometric values (stroke.width, radius, padding, gap, star_dimension, star_margin) are floats in the design's unit with no upper bound; only the format size and the layer layout are checked against the pixel bounds at 300 DPI (out_of_range). font_size/min_font_size are floats in pt, 0.48–240.
shadow, text_shadow, pattern_name, pattern_color and overlay are accepted and dropped — validated in full, then removed, one property_dropped_for_type warning per occurrence naming the layer path and the property. overlay is one nested object, so it drops as a unit and reports a single warning. Because they are still validated, a gradient in pattern_color is invalid_payload. filter_name stays allowed.
Animated designs (type: "animated"): px/hex like static (a cmyk token is converted to hex with a color_converted warning). Group auto_layout, direction, alignment and gap are rejected (unsupported_for_type). A video src is a filename or URL ending .mp4/.webm or a data:video/mp4|data:video/webm URI; an audio src is .mp3/.wav or data:audio/mpeg|data:audio/wav. On both, an extension is checked only when present: an extensionless https:// URL is accepted and the worker probes the content type. A media extension in an image/logo src is rejected (unsupported_for_type).
Asset fields: src (and qrcode icon_src) accepts a filename — which returns a presigned S3 POST in uploads[] — an https:// URL, or a data URI decoded and uploaded server-side at POST time (≤ 2 MB decoded on every design type). A qrcode's centre icon is icon_src and accepts the same three forms as src, with a data URI capped at 1 MB decoded rather than 2 MB. There is no icon property. The QR error-correction level is chosen for you (Q with an icon, M without) and is not a payload field.
Conditional dependencies the flat schemas cannot express: mask_name: "rounded_corners" requires mask_properties.radius; filter_name: "duotone" requires filter_properties.name; each entry of a group's layer-level layer_ids must name a layer declared in the same format. Violations are reported as conditional_dependency_missing.
filter_properties.name must additionally be one of the named duotone presets — blue_green, blue_orange, deep_green_light_green, BrightRed_light_yellow, brown_pale_green, brown_beige, deep_blue_green, deep_blue_red, deep_purple_orange, deep_purple_beige, deep_purple_pale_green, deep_blue_pale_green. An unlisted name is rejected with unknown_enum_value.
Groups carry their per-format geometry like every other layer type, but their MEMBERSHIP is not per-format: layer_ids sits on the layer itself and names the same children in every format. A group may also carry the common layer-level hidden/locked attributes: the platform keeps a group consistent with its members automatically — setting them on import propagates the flag down to the members (per format), and on reads (GET /designs/{designId}/formats/{formatSpecifier}, as-import) a group's hidden/locked are computed from its members (all members locked ⇒ group locked; all hidden ⇒ group hidden).
animation object
Animated designs only (unsupported_for_type on static/printer). Per-layer timeline timing and tweens — format-global (not keyed by format name). Layers without it span the whole timeline.
animation object
Animated designs only — required when type is animated, rejected with unsupported_for_type on static/printer. The design's timeline.
Show child attributes
duration number required
Timeline length in seconds (1–60). The authoritative animation duration. Range 1–60.
screenshot_at_s number
The moment (seconds, 0 ≤ value ≤ duration — out_of_range beyond) at which the HTML5 backup screenshot is taken. Defaults to duration when omitted. Minimum 0.
Response 200
Import created. Upload each entry of uploads[], then call PUT.
id string (uuid) always
status string always
WAITING_FOR_VALIDATION if any uploads are required. QUEUED (sync short-circuit) when every src is a public URL or data URI — uploads[] is empty and no PUT call is needed. One of "WAITING_FOR_VALIDATION", "QUEUED".
links DesignImportLinks always
Hypermedia links the client should use instead of constructing URLs by hand.
Show child attributes
validate string (uri)
URL to PUT once all uploads[] have been completed.
status string (uri)
URL to GET for polling import status.
dashboard string (uri)
Human-facing link to the result.
More about dashboard
Human-facing link to the result. Not always present.
A workspace template import (target.kind: "workspace_template") carries it from creation, pointing at the Workspace Templates section keyed by import id.
A design import (target.kind: "design", the default) has no destination until it succeeds — the design does not exist before then — so the link is absent until status is DONE, at which point it points at the design itself.
PUT never returns it: at that moment neither target exists yet.
uploads array of DesignImportUpload always
Flat list of presigned uploads. Empty when no uploads are needed.
Show child attributes
target string always
What the upload is for. Always layer (an image/logo/video/audio src filename) — JSON imports have no preview uploads — thumbnails are rendered for you. One of "layer".
name string
The layer's name — not a filename. An upload entry carries no path and no original filename, so keep your own map from layer name to local file while you build the payload; it cannot be recovered from this response.
page string
printer_multipage imports only — the page this layer belongs to (page_1 … page_N).
More about page
printer_multipage imports only — the page this layer belongs to (page_1 … page_N). Layer names are unique per page on a multipage design, not per design, so two pages may each have a hero; this is what tells their uploads apart. Absent on every other design type.
url string (uri) always
fields object always
S3 presigned POST form fields. Send all of these alongside the file.
Show child attributes
<key> string
One entry per key.
max_bytes integer always
Server-enforced upper bound on the upload size, in bytes.
More about max_bytes
Server-enforced upper bound on the upload size, in bytes. 20000000 for static layer assets; 500000000 on printer and printer_multipage; on animated it is per layer type — 100000000 for video, 25000000 for audio, 20000000 for image/logo. A qrcode layer's icon_src is capped at 1000000 on every design type.
expires_at_ts integer always
Unix timestamp when this presigned URL stops accepting uploads.
version string
The API version that produced this response, named by release date (vYYYY-MM-DD). Pattern ^v\d{4}-\d{2}-\d{2}$.
More about version
The API version that produced this response, named by release date (vYYYY-MM-DD). Stamped as a top-level field on JSON object bodies, success and error alike, so a client can always tell which contract answered. There is no version-selection parameter — a single version is maintained at a time.
Two kinds of body are not stamped. Array bodies (the listings) carry no envelope. And a body that already has a version key of its own is left alone — which in practice means Banner, whose version is the generated file's integer counter. So GET /banners/{bannerId} and the synchronous generate are the two responses that do not tell you which contract answered.
The value changes when a new version is released. Match the vYYYY-MM-DD shape rather than pinning today's literal, or your client breaks on the next release.
Response 204
Dry-run validation succeeded (validate_only=true). Nothing was created.
A dry run is counted against its own, more generous rate-limit budget — see the X-RateLimit-* headers. Converging on a valid payload by looping here is supported.
Errors
Every failure uses the shared error envelope — {id, message, errors?}. Branch on id, never on message. See Errors.
| Status | When |
|---|---|
400 | Structured validation error (schema, cross-field, pre-flight unknown_font / unreachable_src, project_not_found, or unsupported_for_type — a field or value only valid on the other design type, e.g. |
401 | Unauthorized — missing or invalid API key. |
429 | Three different limits answer here, and the id tells them apart: |
500 | Internal Server Error — an unexpected error occurred on our side. |
