---
title: "Retrieve a single PSD mockup"
method: GET
path: "/api/v1/psd-mockups/{uuid}"
tags: ["PSD mockups"]
---

# Retrieve a single PSD mockup

`GET /api/v1/psd-mockups/{uuid}`

## Request

- Base URL: `https://api.sudomock.com`
- URL: `https://api.sudomock.com/api/v1/psd-mockups/{uuid}`
- Auth: API key in header `x-api-key`

Read one mockup. The body matches what the upload endpoint returns.

## Path parameters

- `uuid` string, required: Mockup UUID

## Response `200`

Successful Response

- UploadResponse: The ingested mockup with every layer you can address in a render.
  - `data` UploadResponseData, required: Data payload in upload response
    - `uuid` string, required: Unique identifier for the mockup
    - `name` string, required: Name of the mockup
    - `thumbnail` string: Main thumbnail URL (720px width). Empty string if generation failed.
    - `width` integer, nullable: Always populated after successful upload. Represents original PSD canvas width in pixels.
    - `height` integer, nullable: Always populated after successful upload. Represents original PSD canvas height in pixels.
    - `smart_objects` SmartObjectResponse[], required: List of smart objects in the PSD
      - `uuid` string, required: Unique identifier for the smart object
      - `name` string, required: Display name of the smart object
      - `size` Size, required: Width and height in pixels.
        - `width` integer, required: Width in pixels
        - `height` integer, required: Height in pixels
      - `position` Position, required: Bounding box in pixels, relative to the frame that contains it.
        - `x` integer, required: Left edge in pixels, relative to the containing frame (top-left origin).
        - `y` integer, required: Top edge in pixels, relative to the containing frame (top-left origin).
        - `width` integer, required: Width in pixels
        - `height` integer, required: Height in pixels
      - `print_area_presets` PrintAreaPreset[], required: Print area preset configurations
        - `uuid` string, required: Unique identifier for the preset
        - `name` string, required: Name of the preset (e.g., 'Default')
        - `thumbnails` ThumbnailSize[]: Thumbnail previews of the preset
          - `width` integer, required: Thumbnail width in pixels
          - `url` string, required: Public URL to the thumbnail image
        - `size` Size, required: Width and height in pixels.
          - `width` integer, required: Width in pixels
          - `height` integer, required: Height in pixels
        - `position` Position, required: Bounding box in pixels, relative to the frame that contains it.
          - `x` integer, required: Left edge in pixels, relative to the containing frame (top-left origin).
          - `y` integer, required: Top edge in pixels, relative to the containing frame (top-left origin).
          - `width` integer, required: Width in pixels
          - `height` integer, required: Height in pixels
      - `layer_name` string, nullable: Original PSD layer name
      - `quad` array[], nullable: Four display coordinates for the editable area, in the same frame as position. Only available on Scale tier plans (null on Free/Starter/Pro).
        - number[]
      - `blend_mode` string, nullable: The blend mode this smart object layer carries in the PSD, lowercase (e.g. 'normal', 'multiply', 'soft_light'). Null in the mockup list; request a single mockup to read it.
      - `instance_count` integer, nullable: Number of PSD layers this input drives (smart object instancing); null/1 = single layer
      - `smart_objects` SmartObjectResponse[]: Smart objects inside this smart object's own contents, in layer order. Fill any of them by UUID in the same render, like a top-level one. Left out when there are none.
      - `text_layers` TextLayer[]: Text layers inside this smart object's own contents, in layer order. Edit any of them by UUID in the same render, like a top-level one. Left out when there are none.
        - `uuid` string, required: Unique identifier for the text layer
        - `name` string, required: Name of the text layer
        - `text_content` string, nullable: Current text content of the layer
        - `font_postscript_name` string, nullable: PostScript name of the font used by this layer
        - `font_size` number, nullable: Effective font size in pixels at the PSD's native resolution
        - `color` string, nullable: Text color as hex (e.g. #FFFFFF)
        - `font_available` boolean, nullable: Whether the layer's font is available for editable rendering. When false, edits render with a default font unless a font is supplied.
        - `is_editable` boolean: Whether this layer's text can be replaced at render time
        - `segment_count` integer: Number of styled segments in this layer. 1 = single-style (edit with 'text'); 2+ = styled segments (edit with 'segments', each segment keeps its own styling)
        - `segments` TextSegment[], nullable: The layer's styled segments, present when segment_count > 1. Override any subset by index at render time; omitted segments keep their original text.
          - `index` integer, required: Stable segment position within the layer (0-based)
          - `text` string: The segment's current text
          - `font_postscript_name` string, nullable: PostScript name of the segment's font
          - `font_size` number, nullable: Segment font size in pixels at the PSD's native resolution
          - `color` string, nullable: Segment text color as hex (e.g. #FFFFFF)
        - `visible` boolean, nullable: Whether the layer is shown by default in the source file. A hidden layer can still be targeted; its text then renders. Null when unknown (older mockups).
        - `has_stroke_effect` boolean: Whether this text layer has at least one outline of its own.
        - `stroke_count` integer: Number of outlines owned by this text layer, in front-to-back stroke_color order.
        - `has_color_overlay` boolean: Whether the layer's visible color comes from a color effect. When true, a color override changes that effect's color.
        - `has_clipped_artwork` boolean, nullable: Whether some content in the design is clipped to this layer's letters. When true, replacing this text also re-shapes that clipped content to the new letters. Null when it could not be determined for this mockup.
        - `suggested_edit_together` string[], nullable: UUIDs of other text layers that carry the same text stacked with this one, such as a fill plus an outline copy. Sending the same replacement text to all of them keeps the design consistent. Advisory only: each layer is still edited on its own by UUID, never linked automatically. Null when it could not be determined.
        - `enclosing_group_layers` string[], nullable: UUIDs of enclosing group layers whose outlines also affect this text layer, nearest first. Advisory only: each group is edited separately through group_layers. Null when it could not be determined.
    - `text_layers` TextLayer[]: Text layers detected in the PSD. Editable layers accept text replacement at render time.
      - `uuid` string, required: Unique identifier for the text layer
      - `name` string, required: Name of the text layer
      - `text_content` string, nullable: Current text content of the layer
      - `font_postscript_name` string, nullable: PostScript name of the font used by this layer
      - `font_size` number, nullable: Effective font size in pixels at the PSD's native resolution
      - `color` string, nullable: Text color as hex (e.g. #FFFFFF)
      - `font_available` boolean, nullable: Whether the layer's font is available for editable rendering. When false, edits render with a default font unless a font is supplied.
      - `is_editable` boolean: Whether this layer's text can be replaced at render time
      - `segment_count` integer: Number of styled segments in this layer. 1 = single-style (edit with 'text'); 2+ = styled segments (edit with 'segments', each segment keeps its own styling)
      - `segments` TextSegment[], nullable: The layer's styled segments, present when segment_count > 1. Override any subset by index at render time; omitted segments keep their original text.
        - `index` integer, required: Stable segment position within the layer (0-based)
        - `text` string: The segment's current text
        - `font_postscript_name` string, nullable: PostScript name of the segment's font
        - `font_size` number, nullable: Segment font size in pixels at the PSD's native resolution
        - `color` string, nullable: Segment text color as hex (e.g. #FFFFFF)
      - `visible` boolean, nullable: Whether the layer is shown by default in the source file. A hidden layer can still be targeted; its text then renders. Null when unknown (older mockups).
      - `has_stroke_effect` boolean: Whether this text layer has at least one outline of its own.
      - `stroke_count` integer: Number of outlines owned by this text layer, in front-to-back stroke_color order.
      - `has_color_overlay` boolean: Whether the layer's visible color comes from a color effect. When true, a color override changes that effect's color.
      - `has_clipped_artwork` boolean, nullable: Whether some content in the design is clipped to this layer's letters. When true, replacing this text also re-shapes that clipped content to the new letters. Null when it could not be determined for this mockup.
      - `suggested_edit_together` string[], nullable: UUIDs of other text layers that carry the same text stacked with this one, such as a fill plus an outline copy. Sending the same replacement text to all of them keeps the design consistent. Advisory only: each layer is still edited on its own by UUID, never linked automatically. Null when it could not be determined.
      - `enclosing_group_layers` string[], nullable: UUIDs of enclosing group layers whose outlines also affect this text layer, nearest first. Advisory only: each group is edited separately through group_layers. Null when it could not be determined.
    - `group_layers` GroupLayer[]: Group layers whose outlines can be recolored. Changing a group outline affects everything inside that group; groups not listed keep their authored effects.
      - `uuid` string, required: Unique identifier for the group layer
      - `name` string, required: Name of the group layer
      - `has_stroke_effect` boolean: Whether the group has at least one outline of its own
      - `stroke_count` integer, required: Number of outlines owned by this group, in front-to-back stroke_color order
    - `collections` unknown[]: Reserved for future use. Currently always empty.
      - unknown
    - `thumbnails` ThumbnailSize[]: Array of thumbnail URLs at different sizes
      - `width` integer, required: Thumbnail width in pixels
      - `url` string, required: Public URL to the thumbnail image
  - `success` boolean: Success status
  - `message` string: Optional message about the operation
  - `warnings` UploadWarning[], nullable: Non-fatal advisories about this upload (e.g. hidden smart object layers that are not exposed for personalization). Omitted when none.
    - `code` string, required: Stable advisory code (PSD_HIDDEN_SMART_OBJECTS, FREE_PSD_RETENTION, PSD_LIGHT_ADJUSTMENT_UNSUPPORTED, PSD_GRADIENT_MAP_UNSUPPORTED, PSD_NESTED_CONTENTS_UNAVAILABLE)
    - `message` string, required: Human-readable, non-fatal advisory

---

[API](https://skmtc.dev/sudomock/apis/sudomock-api.md) · [All operations](https://skmtc.dev/sudomock/apis/sudomock-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sudomock/apis/sudomock-api/revisions/c1cc24006c60?raw)
