Skip to main content
A feature is listed as supported here only when its output is verified against Photoshop’s own render. Where faithful reproduction is not possible, the row says so and points at the mechanism that gets you the same look.
Recommendation: keep supported features live rather than baking them into pixels. A live feature stays accurate for every design you send.

What renders as authored

Colour modes other than RGB are converted on upload. Duotone and Multichannel currently render in grayscale, so convert those files to RGB in Photoshop while you still hold the ink values. Every row above renders as authored without a parameter in the render request. The verified result for each supported filter is on Smart filters, and the call itself is on Render a PSD mockup.
A template uploaded before Gradient Map, skewed point text and type on a path rendered live picks them up once the PSD is uploaded again. The new upload is a separate template with its own UUIDs, as Upload a PSD explains.

What to send as pixels instead

Every unsupported row routes to something that does render. A texture that is the same on every design belongs above the print area as its own layer, tinted at render time through color.blending_mode on the smart object rather than flattened into the artwork. The modes and what each one does are on Fit and blend modes.

Hidden layers and linked content

How a hidden layer behaves depends on its type, and the two rules point in opposite directions. A smart object that is hidden in Photoshop is not exposed as a slot and is not rendered, so make the layer visible and upload the file again. The upload still succeeds and comes back carrying the advisory code PSD_HIDDEN_SMART_OBJECTS, so you find out before your first render. The rule is the same for a smart object hidden inside another one. A text layer that is hidden is kept as a fillable slot instead: it renders when you send a text_layers entry for it and stays hidden when you leave that entry out. One template can therefore carry optional lines, personalized fields or language variants that appear only on the renders you choose to fill. Both cases are worked through on Hidden layers. Linked content renders from its placement geometry, which is why linked smart objects sit on the supported side above. When a linked smart object carries no usable placement geometry, the render returns a permanent 422 with the error code LINKED_SMART_OBJECT_CONTENT_MISSING, and retrying the same file returns it again. Run Layer > Smart Objects > Embed Linked and upload the file again, or send the artwork in the render body. The retry rule for every code is on Errors.

Contents of a smart object

When the contents of a smart object cannot be read, the upload still succeeds. That happens, for example, when the contents hold a smart object in a vector format, or when they are larger than the pixel ceiling. The smart object stays one slot that takes artwork as a whole, and the upload carries the advisory code PSD_NESTED_CONTENTS_UNAVAILABLE. A top-level smart object in a vector format fails the upload instead, with UNSUPPORTED_SMART_OBJECT_FORMAT. A linked smart object stays one slot without a code, because its contents are not in the file.

Learn more

Smart filters

Read the verified result for every filter we render.

Hidden layers

See why a hidden text layer fills and a hidden smart object does not.

Next steps

Preparing a PSD

Author a template that keeps these rows on the supported side.

Render a PSD mockup

Call the render endpoint in the language you already use.