Skip to main content
A folder holds mockups and other folders. Every mockup sits in exactly one folder, or at the top of the library, and folders nest, so a library of several hundred templates reads like a set of drawers instead of one long list. PSD mockups and photo mockups live in the same tree. Folders are free. Creating, reading, moving and deleting them costs no credits. Reach for them when you need to:
  • Keep one brand together: a folder per customer or per store, so a render job only ever looks at the templates that belong to it.
  • Hand a batch to an agent: point it at one folder instead of asking it to guess from names.
  • Split a catalogue: by season, product type or size, at whatever depth the catalogue already has.

Where a mockup lives

  • A mockup is in one folder, or in none. There is no second place.
  • Folders nest up to 100 levels, counting the folder you are moving and everything inside it.
  • Two folders beside each other cannot share a name, whatever the capitalisation. The same create call can therefore be made twice without building a second copy.
  • Moving never changes a mockup’s id. Renders, webhooks and every integration keep working against the id they already hold.
folder_uuid reads three ways, and the difference matters on every list call: The same three readings apply to parent_uuid when you list folders.

Create a folder

cURL
Response
Send parent_uuid to create it inside another folder instead:
cURL

Walk the tree

List folders pages the same way the mockup lists do, with limit and offset, and sorts by name.
cURL
Each folder carries folder_count, psd_mockup_count and photo_mockup_count for what it holds directly, which is enough to draw a tree without a second call per node. Get folder adds two things the list does not: path, the trail of folders above this one, and the total_ counts for everything inside it at any depth.

List what is in a folder

Both mockup lists take folder_uuid.
cURL
Swap in /api/v1/photo-mockups for the photo mockup side. Every mockup in either list now carries its own folder_uuid, so a single page of results tells you where each template sits.

Move mockups and folders

Move into folder takes any mix of PSD mockups, photo mockups and folders in one call. Either everything in the call moves or nothing does, so a half finished move is not a state you have to handle.
cURL
Send "target_folder_uuid": null to move the selection back to the top of the library. A folder moves with everything inside it. Each list takes up to 500 ids. To move a single mockup you can also patch it directly:
cURL
A field you leave out is left alone. "folder_uuid": null moves the mockup to the top of the library.

Start a mockup inside a folder

Both engines accept folder_uuid at creation, so a new template lands where it belongs without a second call.

Rename or move one folder

Update folder renames a folder, moves it, or both. A field you leave out is left alone, and "parent_uuid": null moves the folder to the top of the library.
cURL
A folder cannot move into itself or into one of its own children, and the tree it carries counts towards the depth limit at its new home.

Delete a folder

A recursive delete is permanent. The folders inside go, and so do the mockups inside them. There is no recycle bin.
An empty folder deletes on its own. A folder that holds anything needs recursive=true; without it the call is refused with FOLDER_NOT_EMPTY and nothing is touched.
cURL
The response says what went:
Response
Read the folder first if you want to tell a person what they are about to lose: the total_ counts on Get folder are exactly the numbers a recursive delete would remove. A delete that is cut off part way can be repeated and carries on from where it stopped.

Errors

Folders reference

Every field on every folder call.

Pagination

How limit, offset and total behave.