Skip to main content
A text layer is live, editable type inside a PSD: a headline, a name, a price. SudoMock reads those layers on upload and lets you change the wording, font, size and colour at render time, so one template becomes a run of personalised images. Use text layers when you need to:
  • Personalise a run: one template, a list of names, a finished image for each.
  • Localise a design: the same layout carrying the wording each market reads.
  • Refresh a campaign: a new price or date without reopening the file.
One template, an endless run of names. Each render swaps only the text.

Find the text layers

Create a mockup from a PSD returns every live type layer it found under text_layers. Each entry carries the layer’s current values, the UUID you address it by, and the highlighted signals that decide what your integration can change on it. Text inside a smart object is listed under that smart object’s own text_layers, and a render fills it by UUID like any other entry, as Smart objects shows.
Upload response
  • font_available: false when the layer’s own typeface is not in your catalogue, so the render falls back to a default. See Fonts.
  • is_editable: false when the layer keeps its original appearance in this version. The routes are under Limitations.
  • segment_count: above 1 marks a layer that mixes styles, which takes segments rather than text.
  • has_stroke_effect and stroke_count: the outlines the layer owns, which stroke_color recolours front to back.
  • has_color_overlay: true when the visible colour comes from a colour effect rather than the fill.
Fitting and colour covers the last three in full. The top-level group_layers array lists each editable enclosing outline group, and appearing in that list is the editability signal for a group.

Override text at render time

Render a PSD mockup takes a text_layers array naming only the layers you want to change. The highlighted lines are the whole override: layers you leave out keep their authored wording, so a template with six lines and one variable line takes a one-entry request.
Each entry in the array takes these fields.
string
required
The text layer UUID from the upload response.
string
The replacement wording, 1 to 500 characters. Send this or segments, and exactly one of the two.
array
Per-run overrides for a layer that mixes styles, sent instead of text. Fitting and colour carries the shape and the per-render caps.
string
A catalogue font uuid, or its PostScript name from Retrieve a list of fonts. Defaults to the layer’s authored typeface.
number
Type size in points. Defaults to the layer’s authored size.
string
Hex colour for the type. Defaults to the layer’s authored colour.
fit, vertical_align and stroke_color ride on the same entry and are covered in Fitting and colour. A render needs at least one entry across smart_objects, text_layers, group_layers or hidden_layers, which means a text-only personalisation renders without any smart object at all.
Targeting a hidden text layer renders it. Keep the optional lines, a name, a date, a discount, hidden in the PSD, and switch each one on only for the renders that need it. Leave the entry out and the layer stays hidden, exactly as it was in the source file.

What renders

Point text, multi-line point text and paragraph, or box, text all render with your wording, matched to the original font, size and colour. Manual line breaks and leading render true to the original on every line. Area text wraps to its box as designed, and text past the box renders clipped. Character styling carries over as authored: faux bold and italic, underline and strikethrough, letter spacing, all caps and small caps, superscript and subscript, baseline shift, horizontal and vertical scale, the fill opacity the designer set, and all five anti-alias settings. A layer that mixes styles stays editable run by run, and each run keeps its own styling. Outlines, including stacked ones, render faithfully and recolour individually. Rotated text renders live at its exact angle, skewed point text renders live at its exact slant, and ten warp styles render live with your new wording: Arc, Arc Lower, Arc Upper, Arch, Bulge, Flag, Wave, Fish, Rise and Squeeze. Type on a path sets your wording along the same path, between the same start and end points, with the alignment the designer chose. Latin, Cyrillic and Greek scripts, including Turkish and accented characters, render exactly as designed. Arabic and Hebrew render right to left, with a fallback that keeps them readable when the chosen font lacks those glyphs. Every render draws on the built-in catalogue, and on your own uploaded typefaces where you have them, which Fonts covers. A template uploaded before skewed point text and type on a path rendered live picks them up once the PSD is uploaded again, as a separate template with its own UUIDs.

Limitations

Some layers render with their original appearance rather than your wording. Each one has a route:
  • Vertical text is not editable in this version. Convert the layer to horizontal point text in Photoshop before upload.
  • Justified alignment is not editable in this version. Switch the paragraph to left, centre or right alignment before upload.
  • CJK text renders live with your wording, and the families are in the catalogue. For spacing exactly as designed, rasterise the layer before upload, or render the text as an image placed in a smart object slot.
  • Warp styles outside the ten listed above render as authored. Render your text as an image and place it in a warped smart object slot.
  • Rotation combined with mixed styles or a text box renders with the layer’s original appearance.
  • A multi-line edit that would overflow its slot renders the original rather than breaking the composition. Shorten the replacement text, or design the slot with more room.
Ligatures render with the font’s standard set. Where a design switches them off, rasterise the layer before upload.
One render carries up to 50 text_layers entries, counting text inside smart objects at every depth, and one layer’s text is capped at 500 characters.

Errors and warnings

An error blocks the render so you can fix the request. A warning rides along with a successful render so you know what happened. Both codes are stable, so your integration can branch on them rather than on message text. These block the render:
  • TEXT_LAYER_NOT_FOUND, 400: the text layer uuid in your request does not belong to this mockup.
  • FONT_NOT_FOUND, 422: the font you explicitly requested is not in your catalogue. Upload it, pick a catalogue font, or omit font.
  • FONT_AMBIGUOUS, 422: the font name matches more than one font available to you. The response carries a candidates list of uuids; send one as font.
  • TEXT_SEGMENTS_REQUIRED, 422: this mixed-style layer needs segments rather than one text value.
  • SEGMENT_INDEX_OUT_OF_RANGE, 422: the segment index is outside this layer’s range. Read valid indexes from the upload response.
  • TEXT_SEGMENTS_UNSUPPORTED, 422: this single-style layer needs one text value rather than segment overrides.
  • TEXT_SEGMENTS_LIMIT, 422: the request carries more than 200 segment overrides across its text layers.
  • TEXT_TOO_LONG, 422: the effective combined segment text is longer than 500 characters for this layer.
These ride along with a successful render, each carrying only code and message:
  • TEXT_FONT_FALLBACK: the font for this layer was unavailable, so a default font was used. Upload the font or pick an available one, then render again.
  • TEXT_FONT_AMBIGUOUS: the layer’s font name matches more than one available font, so a default was used. Send an explicit font uuid for this layer.
  • TEXT_FONT_MISSING_GLYPHS: the selected font lacks some characters in the replacement text. Choose a font that supports the text.
  • TEXT_WARP_BAKED: the layer uses one of the remaining warp styles, so it rendered with its original appearance.
  • TEXT_LAYER_NOT_EDITABLE: this layer uses a structure or style not editable in this version, so it kept its original appearance.
  • TEXT_FIT_SHRUNK: you selected shrink and the text was scaled down to fit its area.
  • TEXT_OVERRIDE_NOT_APPLIED: the change could not be applied to this layer, so it kept its original content.
  • TEXT_STROKE_NOT_PRESENT: you sent stroke_color for a layer with no outline of its own. Use group_layers for an enclosing group outline.
  • TEXT_COLOR_HIDDEN_BY_EFFECT: a gradient effect covers the text, so the requested colour may not be visible.
Every other status code is in Errors.

API reference

For the complete field contract and a live playground, see Render a PSD mockup and Create a mockup from a PSD.

Fitting and colour

Keep replacement text inside its box, and recolour text and outlines.

Fonts

The catalogue, custom uploads, and picking a font in a render.