Upload lists visible smart objects only, at every depth. Turn on every layer
you plan to fill before you send the file.
What an entry describes
An entry carries the layer as the designer built it, plus the handle you send back. Upload a PSD walks through the call, and Create a mockup from a PSD shows the whole response body next to the request that produced it.Address an area in a render
A render takes the template’smockup_uuid and a smart_objects array. Send
one entry per area you want to change, keyed on the uuid that upload gave you,
and leave the rest out. Anything you omit renders as the designer authored it. A
template can hold as many areas as the designer built, and a single render can
fill several of them at once.
Every entry needs an asset, a color, or both, and an entry that carries
neither comes back as 422. The same entry can also carry a colour overlay and
adjustment values alongside the artwork, so one area can change image, tint and
tone in one pass. Artwork placement takes fit,
size, position, rotation, colour and tone field by field,
Fit and blend modes covers how artwork meets an
area, and Render a PSD mockup
holds the request and response shapes.
Fill a smart object inside another
A sheet of tiles, a label or a pattern is often built as its own document and placed as one smart object. Its entry then lists the layers inside undersmart_objects and text_layers, and each nested smart object can list its
own in turn. The top-level arrays still hold only the outermost layers.
A nested slot is filled like a top-level one: put its uuid in the request’s
smart_objects or text_layers array, beside any other entries. The request
still costs one render, however deep the slots it fills.
asset and also fills or hides a
layer inside it returns 422 with NESTED_SLOT_CONFLICT. A color on the
parent is fine beside entries for the layers inside it.
A template uploaded before 5 October 2026 shows its nested slots once the file
is uploaded again. That upload is a new template with its own uuids.
Match slots by name, not by order
Array order follows the Photoshop layer stack, so a designer who reorders layers changes it, and code that reaches for the first entry quietly starts filling the wrong area. Build a lookup from the names your template is authored with: readname on each entry, keep the uuid it belongs to, and resolve the slot by
name when you render. If a name your code expects is not in the template, fail
loudly instead of falling back to a position, because that fallback ships a
wrong print file rather than an error.
Names repeat across parents. A tile named 1 can sit inside two different
smart objects, so build the lookup per parent: first the parent smart object,
then the name inside it.
Linked and hidden smart objects
A smart object whose content lives in an external file, such as@artwork.psb,
uploads and renders from its placement geometry, so you do not need to run Embed
Linked first. Embedding still gives the highest fidelity. When a linked smart
object carries no usable placement geometry, the render returns a permanent
422 with LINKED_SMART_OBJECT_CONTENT_MISSING. That one does not clear on
retry. Run Layer > Smart Objects > Embed Linked in Photoshop and upload the
file again, or send the artwork in the render body.
Errors lists every code and says which are worth retrying.
A smart object that is hidden in Photoshop is not exposed as a slot and is not
rendered, whether it sits at the top level or inside another smart object.
Uploads that contain one come back flagged, so you know which layers to turn on
before uploading again. Hidden text layers behave differently, and
both rules are on
Hidden layers.
Learn more
Artwork placement
Set fit, size, position, rotation, colour and tone on an area.
Fit and blend modes
See how artwork meets an area and sits on the material.
Next steps
Upload a PSD
Send a template and read back the areas it exposes.
Render a PSD mockup
Fill an area and get the print file back.