Designs
Editable multi-layer artwork, its fillable fields and its data-bound charts.
List designs
Returns designs the caller may see, newest edit first. Version snapshots are never listed, and templates are excluded unless is_template=true — which narrows alongside cat and q rather than replacing them.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
query Parameters
catde_typeis_templatelimitoffsetqHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List designs › Responses
Success
de_idde_createdde_updatedde_userde_namede_descriptionde_typede_templatede_categoriesde_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_canvas_backgroundde_preview_filede_export_settingsde_metadatade_versionpreview_fileCreate a design
Creates an empty design of the given canvas size. To start from something, use POST /designs/{id}/copy or one of the generate endpoints.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Create a design › Request Body
de_namede_typede_canvas_widthde_canvas_heightde_descriptionde_canvas_unitde_canvas_dpide_canvas_backgroundde_metadataCreate a design › Responses
Created
de_idde_createdde_updatedde_userde_namede_descriptionde_typede_templatede_categoriesde_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_canvas_backgroundde_preview_filede_export_settingsde_metadatade_versionpreview_fileGet a design
Returns the design with its canvas, its metadata and its resolved preview file. The layers on it are read through GET /designs/{id}/layers.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Get a design › Responses
Success
de_idde_createdde_updatedde_userde_namede_descriptionde_typede_templatede_categoriesde_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_canvas_backgroundde_preview_filede_export_settingsde_metadatade_versionpreview_fileDelete a design
Deactivates the design. It stops being listed and stops being readable through the API; its versions and layers go with it.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Delete a design › Responses
Success. No content.
Update a design
Applies the de_-prefixed fields present in the body. This is the canvas and its metadata; the artwork itself is edited through the layer endpoints.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Update a design › Request Body optional
de_namede_descriptionde_typede_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_canvas_backgroundde_export_settingsde_metadataUpdate a design › Responses
Success
de_idde_createdde_updatedde_userde_namede_descriptionde_typede_templatede_categoriesde_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_canvas_backgroundde_preview_filede_export_settingsde_metadatade_versionpreview_fileGet who has access
Returns who may read and edit this design. An empty result means unrestricted — everyone in the workspace with the design permissions.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Get who has access › Responses
Success
Set who has access
An empty object clears the restriction, making it visible to the whole workspace.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Set who has access › Responses
Success
Fill fields with AI
Returns proposed values for review — it does not apply them. Committing them goes through the same fill endpoint a person uses, so generated copy is held to the same field whitelist and can never alter the layout. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Fill fields with AI › Responses
Success
Apply the brand kit
Proposes a coherent restyle — per-layer colors and fonts plus a canvas background — rather than mechanically substituting brand colors. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Apply the brand kit › Request Body optional
page_idpage_idslayer_idsapplyApply the brand kit › Responses
Success
Create designs from rows
One design per row, each filled from that row's values.
Requires either design:create or design:contribute.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Create designs from rows › Responses
Success
Set categories
Replaces the design's categories. Categories are the workspace's own taxonomy, defined under /design-categories.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Set categories › Responses
Success
Create from a template
Copies a template into a new design owned by the caller's workspace. The template is unchanged, and the copy keeps its fillable fields.
Requires either design:create or design:contribute.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Create from a template › Responses
Created
Duplicate a design
Copies the design, its layers and its filing into an independent design named "name is given. The original is unchanged.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Duplicate a design › Responses
Created
Export a design
Renders it to a downloadable file in the requested format and size.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Export a design › Request Body
formatqualitytransparentdpiscalepage_idpagesExport a design › Responses
Success
Export to the library
The same render, filed as a library file rather than returned for download.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Export to the library › Responses
Success
Extract layers
Reverse-engineers a flat image into text blocks with their formatting, graphic overlays and picture regions — the way to get an existing artwork into an editable state. Runs a model.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Extract layers › Responses
Success
List fillable fields
What a template lets you change without editing its layout.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List fillable fields › Responses
Success
List design files
Files belonging to this design — the assets placed on it and the previews rendered from it.
Requires any one of media:view, document:view, knowledge-base:view, thread:view, design:view, prompt:view or presentation:view.
path Parameters
idquery Parameters
cursor^[A-Za-z0-9_-]+$file_added_byfile_createdfile_hashfile_idfile_namefile_provider_idfile_statusfile_typefile_updatedlimitoffsetrepo_idrepo_typesort^-?[a-z0-9_]+$Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List design files › Responses
Success
has_moreWhether more rows exist past this page.
next_cursorPass back as cursor for the next page. Null on the last page.
Fill fields
Writes values into declared fields only. With apply_to_variants, a field key present in several size variants is written to all of them; with apply_to_kit, the same happens across the design's kit — one edit updates the date on the flyer, the post and the email page at once. Either way the set stays consistent, and siblings that lack a key are reported, not failed.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Fill fields › Responses
Success
Fill a template
Spawns a design from an approved template and writes its copy from a brief or from source material — the layout, color and imagery stay exactly as the designer approved them and only the words move. This is POST /designs/generate with the layout already decided, and it is the path to prefer whenever a template fits: a brand-approved page beats a generated one. Left unnamed, the design is named from the copy that was written rather than after the template.
filled and unfilled name the fields in display terms. A field in unfilled still shows the template's placeholder text, so ask for those specifics rather than shipping the page as-is; changed counts what the write actually altered, and a changed of 0 means the design reads exactly like the template.
Requires either design:create or design:contribute.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Fill a template › Responses
Created
List kit pieces
The sibling designs generated together by POST /designs/generate-kit, in channel order (flyer, social, story, email), the caller's own design included. designs is empty when this design is not part of a kit.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List kit pieces › Responses
Success
Add a kit piece
Composes one more piece into this design's kit from the content plan stored at generation time — no model runs when the plan is present, so the new piece cannot drift from the others. output takes the same shapes as generate-kit: a channel role, {platform}, {preset} or an explicit size. A kit made before plans were stored falls back to one writing call from the stored brief.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Add a kit piece › Responses
Created
Delete a kit
Soft-deletes every piece of this design's kit in one call.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Delete a kit › Responses
Success
Rename a kit
Renames every piece of this design's kit to the given base name with its channel appended ("Name (Flyer)", "Name (Story)").
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Rename a kit › Responses
Success
Bind a chart layer
Points a chart at data and pulls the current figures in. Send an empty body to unbind — the last fetched numbers stay behind as ordinary editable values.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idlayer_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Bind a chart layer › Responses
Success
List layers
Returns every layer on the design in stacking order, lowest first.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idquery Parameters
limitHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List layers › Responses
Success
dl_iddl_createddl_updateddl_parentdl_namedl_typedl_orderdl_lockeddl_visibledl_opacitydl_positiondl_sizedl_rotationdl_scaledl_flipdl_contentdl_styledl_constraintsdl_metadataAdd a layer
Adds a layer to the design. dl_order decides what it sits above; omit it and the layer goes on top.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Add a layer › Request Body
dl_namedl_typedl_orderdl_positiondl_sizedl_contentdl_styleAdd a layer › Responses
Created
dl_iddl_createddl_updateddl_parentdl_namedl_typedl_orderdl_lockeddl_visibledl_opacitydl_positiondl_sizedl_rotationdl_scaledl_flipdl_contentdl_styledl_constraintsdl_metadataGet a layer
Returns one layer with its position, its transform and its type-specific content.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idlayer_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Get a layer › Responses
Success
dl_iddl_createddl_updateddl_parentdl_namedl_typedl_orderdl_lockeddl_visibledl_opacitydl_positiondl_sizedl_rotationdl_scaledl_flipdl_contentdl_styledl_constraintsdl_metadataUpdate a layer
Replaces the layer. This is a PUT: fields absent from the body are reset to their defaults, which is what the editor's autosave sends.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idlayer_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Update a layer › Responses
Success
dl_iddl_createddl_updateddl_parentdl_namedl_typedl_orderdl_lockeddl_visibledl_opacitydl_positiondl_sizedl_rotationdl_scaledl_flipdl_contentdl_styledl_constraintsdl_metadataDelete a layer
Removes the layer from the design.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idlayer_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Delete a layer › Responses
Success. No content.
Lock or unlock
A locked design has its layout frozen: only declared fields can change, for everyone including its author. This is what makes an approved template stay approved.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Lock or unlock › Responses
Success
Propose layers with AI
Suggests layers for the design. Proposals are returned, not saved — the editor adds them as drafts you can accept or discard. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Propose layers with AI › Request Body
modeinstructionspage_idPropose layers with AI › Responses
Success
Refresh bound data
Fetches current figures for every bound chart and writes them back. No model is involved — a binding records where the numbers come from, so this is a read and an update, and it costs no credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Refresh bound data › Responses
Success
Render the preview
Refreshes the thumbnail shown in listings.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Render the preview › Responses
Success
Reset fields
Clears every filled field, returning the design to the template's own copy and imagery.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Reset fields › Responses
Success
Resize a design
Re-lays the design out at a new size rather than scaling a picture of it.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Resize a design › Request Body optional
platformpresetlandscapewidthheightResize a design › Responses
Success
Save as a template
Copies the design into a template others can start from. The original is unchanged.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Save as a template › Responses
Success
Translate the text
Translates the copy while keeping tone and roughly the same length, so the text still fits its boxes. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Translate the text › Request Body
languageTranslate the text › Responses
Success
List size variants
Returns the other sizes this design has been resized into, which are separate designs that remember where they came from.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List size variants › Responses
Success
List versions
Returns the design's saved snapshots, newest first, with a preview and a layer count for each.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List versions › Responses
Success
de_idde_namede_createdde_versionde_metadatade_canvas_widthde_canvas_heightde_canvas_unitde_canvas_dpide_preview_filepreview_filelayer_countSave a version
Takes a snapshot of the design as it stands. Snapshots are what restore restores, and they are not created automatically.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Save a version › Responses
Success
Delete a version
Removes one snapshot. The design itself and its other snapshots are untouched.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idversion_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Delete a version › Responses
Success. No content.
Restore a version
Replaces the design's current layers with the snapshot's. Take a version first if the current state is worth keeping — restoring does not snapshot it for you.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
path Parameters
idversion_idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Restore a version › Responses
Success
Count designs
How many designs and how many templates match cat and q, plus the same pair per category with cat left out. This is what a library screen needs to label its tabs and category filters without listing both sides.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
query Parameters
catqHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Count designs › Responses
Success
designsMatching designs.
templatesMatching templates.
Erase or fill an area
Send the region to change as a PNG mask; the model regenerates only what the mask covers. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Erase or fill an area › Request Body
file_idmodemaskpromptErase or fill an area › Responses
Success
Generate a document
Writes a one-page document from a brief or from source material — a story, a post, an announcement — and lays it out at the requested size. Unlike generate-from-background the subject is the content: a background image is one optional ingredient, and format accepts a paper preset (US Letter, A4), a social platform, or explicit dimensions in any supported unit.
The layout comes from a fixed library of archetypes rather than from the model, so the page is set properly whatever the copy turns out to be. Every text slot is returned as a fill field, which means the result is immediately usable as a template: save it and fill it for the next story through PATCH /designs/{id}/fill or POST /designs/{id}/bulk-fill.
Where an approved template already fits, prefer POST /designs/{id}/generate — same request, but a designer's layout instead of an archetype. For a design built around a photograph rather than around its words, use POST /designs/generate-from-background.
imagery_used reports whether a supplied photo was actually placed: a page too full to hold the band composes without it rather than failing.
Pass plan to lay out a content plan you already have (from generate-plan, edited or not) and the writing step is skipped along with its cost.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Generate a document › Request Body optional
briefarchetypeplannameGenerate a document › Responses
Created
Create from a background
Builds a design around a photograph: the image becomes a full-bleed background, and a brand overlay, the logo and the on-image copy are placed onto it. Always a social-platform size.
Choose by the subject. A photograph the design is built on belongs here; words the design is built from belong in POST /designs/generate, which takes any canvas size including paper, treats imagery as optional, and returns an editable page rather than a composed picture. Neither substitutes for the other.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Create from a background › Request Body
file_idplatforminstructionsbackground_is_cleancaptionthread_idCreate from a background › Responses
Success
Generate an image
With transparent, the subject is generated against a backdrop that is knocked out — so it can sit over the design rather than in a box. Runs a model, so it consumes credits.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Generate an image › Request Body
promptaspect_ratiotransparentGenerate an image › Responses
Success
Generate an asset kit
One brief, several designs for the same occasion, each an ordinary layered design ready to edit. An outputs entry is a channel role (flyer, social, story, email) or a format of its own: {platform} for any social preset, {preset, landscape} for any paper size, or explicit {width, height, unit}. All are generated exactly as POST /designs/generate would, from one shared content plan, so the date, the offer and the call to action cannot drift between the pieces. Document surfaces (paper, the email column) carry the full plan; social surfaces carry a condensed announcement cut of it.
Every produced design carries kit, kit_role and kit_label in its metadata, and the response's kit_id ties the set together. Each design is an ordinary row afterward — the kit imposes nothing after creation.
Role defaults are US Letter, Instagram, Instagram Story and a 600px email column; formats overrides them per role. Pass plan (from generate-plan, edited or not) to skip the writing step. A leg that fails is reported in errors rather than failing the kit.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Generate an asset kit › Request Body
outputsbriefplannameGenerate an asset kit › Responses
Created
Plan a document
The writing half of POST /designs/generate on its own: returns the content plan — headline, pull quote, the figures worth setting large, the sections, the call to action — without building anything. Made for a review step in front of generation, since a long source document is worth agreeing on before a layout is built from it. Hand the plan back to generate to lay it out.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Plan a document › Request Body optional
briefarchetypePlan a document › Responses
Success
Import a Figma frame
Runs inline rather than as a background job: a design is only usable once every layer exists, so it finishes before responding.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Import a Figma frame › Request Body
tokenfile_urlnode_idnamevector_modeImport a Figma frame › Responses
Success
List Figma frames
Lists what can be imported so you can choose before fetching the whole document. The Figma token is used for the request and not stored.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List Figma frames › Responses
Success
Remove a background
Cuts the subject out of an image and returns it with a transparent background. The source image is not modified.
Requires the module-design license feature. Without it the request is refused with 403 license_required — see plans and modules.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Remove a background › Responses
Success
