SudoMock
NEW

Text Layers

SudoMock renders the text layers in your PSD, so you can swap the wording, font, size, and color at render time and get back an image that keeps the look the designer built.

What Text Layer Rendering Means

A text layer is live, editable type inside a PSD, the kind a designer uses for a headline, a name, or a price. SudoMock reads those layers on upload and lets you swap the wording, font, size, and color at render time, so one template becomes an endless run of personalized images. Most PSD mockup tools flatten or ignore text; SudoMock renders it and stays faithful to the style the designer built.

Text layers and fonts at a glance

  • 2,000+ open-licensed font families, free for commercial use
  • Custom TTF and OTF font upload, up to 5 MB each, on Pro and Scale
  • Styled segments: mixed-style layers stay editable run by run
  • Box text: area text wraps inside its box and clips exactly as designed

What You Get on Upload

Every POST /api/v1/psd/upload response lists the text layers it found under text_layers. Each one carries its current text, font, size, color, whether that font is available in your catalog, and whether it can be edited in this version.

Upload response (text_layers)
1{
2 "success": true,
3 "data": {
4 "uuid": "c315f78f-d2c7-4541-b240-a9372842de94",
5 "name": "Greeting Card Front",
6 "smart_objects": [ /* ... */ ],
7 "text_layers": [
8 {
9 "uuid": "b7f2c1a0-9e34-4d21-8f0a-1c2b3d4e5f60",
10 "name": "Headline",
11 "text_content": "YOUR BRAND",
12 "font_postscript_name": "Poppins-Bold",
13 "font_size": 96,
14 "color": "#1A1A1A",
15 "font_available": true,
16 "is_editable": true,
17 "segment_count": 1
18 }
19 ],
20 "collections": []
21 },
22 "message": ""
23}
FieldMeaning
uuidStable id of the text layer. Use it to target the layer at render time.
nameLayer name as set in Photoshop.
text_contentThe current text, or null if the layer has none.
font_postscript_nameThe layer's font, by PostScript name.
font_sizeEffective size in pixels at the PSD resolution.
colorFill color as #RRGGBB.
font_availabletrue if the font is in your catalog, false if not, null before it is resolved.
is_editabletrue when you can change the text in this version.
segment_count1 for a single-style layer, 2 or more when the layer mixes styles. Mixed-style layers also list each run under segments.

Personalizing at Render Time

Add a text_layers array to your render request with only the layers you want to change. Each entry needs the layer uuid and the new text; font, font_size, and color are optional and fall back to the layer's original values. The font value is either a catalog font uuid or its PostScript name from GET /api/v1/fonts.

Render request with text overrides
1{
2 "mockup_uuid": "c315f78f-d2c7-4541-b240-a9372842de94",
3 "smart_objects": [
4 {
5 "uuid": "128394ee-6758-4f2f-aa36-e2b19b152bd9",
6 "asset": { "url": "https://your-cdn.com/design.png", "fit": "cover" }
7 }
8 ],
9 "text_layers": [
10 {
11 "uuid": "b7f2c1a0-9e34-4d21-8f0a-1c2b3d4e5f60",
12 "text": "SUMMER SALE",
13 "font": "Poppins-Bold",
14 "font_size": 96,
15 "color": "#C0392B"
16 }
17 ]
18}

smart_objects is no longer required on its own

A render must include at least one smart_object or one text_layer. You can render a text-only personalization without touching a smart object.

Hidden layers are personalization slots

Targeting a hidden text layer renders it. Keep optional lines (a name, a date, a discount) hidden in the PSD and switch them on only for the renders that need them.

Editing Mixed-Style Layers

When a single layer mixes styles, like a thin first name next to a bold surname, the upload response marks it with segment_count greater than 1 and lists each run under segments. Personalize it by sending a segments array with only the runs you want to change, each by its index. Every segment keeps its own font, size, and color, and any run you leave out keeps its original text.

Render request for a mixed-style layer
1{
2 "mockup_uuid": "c315f78f-d2c7-4541-b240-a9372842de94",
3 "text_layers": [
4 {
5 "uuid": "b7f2c1a0-9e34-4d21-8f0a-1c2b3d4e5f60",
6 "segments": [
7 { "index": 0, "text": "Jane " },
8 { "index": 1, "text": "SMITH" }
9 ]
10 }
11 ]
12}

Fonts

The built-in font catalog is the full open-licensed Google Fonts library (2,000+ families under OFL, Apache, and UFL licenses), free to use in commercial work. Pro and Scale plans can also upload their own TTF and OTF fonts.

List, search, and filter the catalog with GET /api/v1/fonts. On Pro and Scale plans, upload your own fonts with POST /api/v1/fonts (TTF and OTF, up to 5 MB each) and remove them with DELETE /api/v1/fonts/{uuid}. Pro includes 10 custom fonts; Scale is unlimited.

Confirm your font license on upload

Uploading a font requires the license_confirmed field set to true, confirming you have the right to use and embed it. Without it the upload returns 422: “Confirm you have the right to use and embed this font.
Uploading a custom font
1curl -X POST https://api.sudomock.com/api/v1/fonts \
2 -H "X-API-KEY: sm_your_api_key" \
4 -F "license_confirmed=true"

When a Font Is Missing

When a text layer's original font is in your catalog, SudoMock renders with it automatically. When it is not, the layer still renders in a default font and the response flags it, so you can upload the exact font or pick a catalog one and render again. Nothing is dropped and nothing fails silently.

A fallback never fails the render. It succeeds and attaches a warning so you can decide what to do next: upload the exact font, or pick a catalog font and render again.

Successful render with a font-fallback warning
1{
2 "success": true,
3 "data": { "print_files": [ /* ... */ ] },
4 "warnings": [
5 {
6 "code": "TEXT_FONT_FALLBACK",
7 "text_layer_uuid": "b7f2c1a0-9e34-4d21-8f0a-1c2b3d4e5f60",
8 "message": "Original font not in catalog; rendered in a default font."
9 }
10 ]
11}

What Is Supported (as of July 2026)

FeatureStatusNotesWhat to do instead
Point text (single line)SupportedRenders with your text, matched to the original font, size, and color.
Edit text, font, size, and colorSupportedOverride any of these per render, or leave them to render exactly as designed.
Font catalog (2,000+ families)SupportedThe full open-licensed Google Fonts library, referenced by uuid or PostScript name.
Custom font uploadSupportedUpload your own TTF and OTF fonts (up to 5 MB each) on Pro and Scale plans.
Hidden text layersSupportedTarget a hidden layer to render it, which makes personalization slots easy to build.
Faux bold and italicSupportedPhotoshop's synthetic bold and italic styling renders true to the original, even when the family ships without those cuts.
Underline and strikethroughSupportedBoth decorations carry over exactly as set on the layer.
Letter spacing (tracking)SupportedTight or loose tracking is preserved, so the spacing matches the design.
All caps and small capsSupportedBoth caps styles render as designed, including when you swap in new wording.
Superscript and subscriptSupportedRaised and lowered characters render at the correct size and position.
Baseline shiftSupportedCharacters nudged above or below the baseline stay exactly where the designer placed them.
Horizontal and vertical scaleSupportedCondensed or stretched text keeps its exact character width and height.
Text strokeSupportedOutline color and width render faithfully, with the fill painted first.
Multi-line point textSupportedManual line breaks and line spacing (leading) render true to the original across every line.
Text opacitySupportedSemi-transparent text renders at the exact fill opacity the designer set.
Styled segments (mixed-style text)SupportedText that mixes styles in one layer (a thin name next to a bold surname, a big price with a small currency) is editable segment by segment; every segment keeps its exact styling.
Paragraph (box) textSupportedArea text wraps to its box exactly as designed; text past the box renders clipped, matching the original behavior.
Warped textNot supportedNot editable in this version; it renders with its original appearance.Need curved or wavy custom text today? Render your text as an image and place it in a warped smart object slot; warped smart objects are fully supported. Or rasterize the text layer in Photoshop before upload.
Rotated text layersNot supportedNot editable in this version; it renders with its original appearance, rotation and all.Set the layer rotation back to zero in Photoshop before upload to edit the wording, or rasterize it to keep the angle.
Vertical textNot supportedNot editable in this version; it renders with its original appearance.Convert the vertical text to horizontal point text in Photoshop before upload to make it editable.
Justified alignmentNot supportedNot editable in this version; it renders with its original appearance.Switch the paragraph to left, center, or right alignment before upload to make it editable.
Overflowing multi-line editsNot supportedA multi-line edit that would overflow its slot renders the original instead of breaking the composition.Shorten the replacement text, or design the slot with more room so longer edits fit.

A few layer types and styles -- warped, rotated, and vertical text, and justified alignment -- are not editable in this version, so they render exactly as they look in the PSD. Each has a one-step workaround in the table above, so your layout still survives the upload.

Optical kerning nuances and ligature toggles may differ slightly from the original.

Errors and Warnings

Errors block a render so you can fix the request; warnings ride along with a successful render so you know exactly what happened. The codes are stable, so you can branch on them in your integration.

CodeTypeWhat it means
TEXT_LAYER_NOT_FOUNDError (400)The text layer uuid in your request does not belong to this mockup.
FONT_NOT_FOUNDError (422)The font you asked for is not in your catalog. Upload it or pick a catalog font.
TEXT_FONT_FALLBACKWarningThe original font was not in your catalog, so the layer rendered in a default font. Upload the font or choose a catalog font, then render again.
TEXT_WARP_BAKEDWarningThe text layer is warped, so it rendered with its original appearance instead of your new text.
TEXT_LAYER_NOT_EDITABLEWarningThis text layer cannot be edited in this version (for example paragraph text), so it rendered as-is.

The full feature matrix, including everything beyond text, lives on the PSD Compatibility page, and the request and response fields are documented on Render Mockup.

Frequently Asked Questions

Can an API edit the text in a Photoshop PSD?

Yes. SudoMock renders the text layers in your PSD, so you can swap the wording, font, size, and color at render time and get back an image that keeps the look the designer built. Upload a PSD and the response lists each text layer with its text, font, size, and color; send new values at render time to personalize the image.

What happens if a PSD uses a font I do not have?

When a text layer's original font is in your catalog, SudoMock renders with it automatically. When it is not, the layer still renders in a default font and the response flags it, so you can upload the exact font or pick a catalog one and render again. Nothing is dropped and nothing fails silently.

Which fonts can I use?

The built-in font catalog is the full open-licensed Google Fonts library (2,000+ families under OFL, Apache, and UFL licenses), free to use in commercial work. Pro and Scale plans can also upload their own TTF and OTF fonts.

Can I upload my own fonts?

Yes, on Pro and Scale plans. Upload your own TTF and OTF fonts (up to 5 MB each); Pro includes 10 custom fonts and Scale is unlimited. Free and Starter plans render from the catalog.

Does SudoMock support warped, rotated, and vertical text?

A few layer types and styles -- warped, rotated, and vertical text, and justified alignment -- are not editable in this version, so they render exactly as they look in the PSD. Each has a one-step workaround in the table above, so your layout still survives the upload.

Next Steps

See the render request and response fields, or check what else SudoMock renders from your PSD.

Edit Photoshop Text Layers by API: Fonts, Overrides, and Personalization | SudoMock Docs