跳转到内容

Frames

创建和管理框架、形状、自动布局容器、分区和 SVG 节点。

Type reference
// depth: omit → id+name stubs | 0 → props + child stubs | N → recurse N | -1 → full tree
// fields: whitelist e.g. ["fills","opacity"] — id, name, type always included. Pass ["*"] for all.
// layoutSizingHorizontal/Vertical: FIXED | HUG | FILL — how the node sizes within auto-layout.
// Colors: fillVariableName/strokeVariableName bind by name — preferred over raw color values.
// Note: node-based endpoints (frames, text, instances, components) use `results` as the list key.
// Standalone endpoints (styles, variables, variable_collections) use `items`. Components.list uses `items` (catalog view).
// ---
// visible: false hides the node. Omitted from response when true (the default).
// locked: true prevents editing in Figma UI. Omitted when false (the default).
// rotation: degrees (0-360). Omitted when 0.
// blendMode: layer blend mode. Omitted when PASS_THROUGH (the default).
// layoutPositioning: ABSOLUTE = floating inside auto-layout parent. Omitted when AUTO (the default).
// minWidth/maxWidth/minHeight/maxHeight: responsive constraints for auto-layout children.
// constraints: position behavior in non-auto-layout parents. Ignored inside auto-layout frames.
// bindings: bind design variables to node properties. field uses slash path: "fills/0/color" (first fill), "strokes/0/color", "opacity", "width", "height", "cornerRadius", "paddingLeft", "itemSpacing".
// explicitMode: pin a variable mode on this node. Use { collectionName, modeName } (preferred) or { collectionId, modeId }.
// properties: escape hatch — set any Figma node property directly. Use only when no dedicated field exists.
interface Node {
id: string; name: string; type: string;
visible?: boolean; // omitted when true
locked?: boolean; // omitted when false
opacity?: number; // omitted when 1
rotation?: number; // omitted when 0
blendMode?: string; // omitted when PASS_THROUGH
layoutPositioning?: "AUTO" | "ABSOLUTE";
layoutSizingHorizontal?: "FIXED" | "HUG" | "FILL";
layoutSizingVertical?: "FIXED" | "HUG" | "FILL";
minWidth?: number; maxWidth?: number; minHeight?: number; maxHeight?: number;
absoluteBoundingBox: { x: number; y: number; width: number; height: number };
fills?: Paint[]; // solid: {type: "SOLID", color: {r, g, b, a}}
strokes?: Paint[];
effects?: Effect[]; // DROP_SHADOW | INNER_SHADOW | LAYER_BLUR | BACKGROUND_BLUR
children?: NodeStub[]; // stubs: {id, name, type} — use depth to expand
}
// PatchItem uses flat params matching create shape — no nested sub-objects.
// Fill/stroke/corner/layout/text params are identical to frames.create and text.create.
// Unknown keys produce a warning, preventing silent failures.
// Frames are the primary container in Figma. Use auto_layout for responsive containers.
// Sizing: FIXED = explicit size, HUG = shrink to children, FILL = expand to fill parent.
// Fill: pass fills:[{type:"SOLID", color:"#hex"}] or [] for transparent. Shorthand: fillColor:"#3B82F6" (auto-binds to matching variable/style).
// Also: fillVariableName:"bg/primary", fillStyleName:"Surface/Primary".
// Image fill: imageUrl accepts "pexel:<id>", a public URL, or a local file path. SVGs become vector nodes; raster images become IMAGE fills. imageScaleMode: FILL (default), FIT, CROP, TILE.
// Stroke: pass strokes:[{type:"SOLID", color:"#hex"}] or [] to clear. Shorthand: strokeColor:"#000", strokeVariableName:"border/default".
// Token fields (cornerRadius, opacity, itemSpacing, padding, strokeWeight): pass number for value, string for variable name/ID.
// ---
// SIZING: Always think about both axes. Containers with text need a width constraint — set width + layoutSizingHorizontal:"FIXED".
// HUG/HUG is only correct for intrinsically-sized elements (buttons, badges, icons).
// Smart defaults inside auto-layout parent: cross-axis defaults to FILL, primary axis stays HUG.
// FILL only works inside an auto-layout parent. Use FIXED for top-level frames.
// minWidth/maxWidth/minHeight/maxHeight: responsive constraints for auto-layout children.
// clipsContent: true (default) clips children to the frame bounds. Set false for overflow-visible.
// Sections are top-level organizers (like artboards) — they cannot be nested inside frames.
// Shape primitives: rectangle, ellipse, line — for decorative/visual elements (not containers).
// group: wraps existing nodes into a Group. boolean_operation: UNION/SUBTRACT/INTERSECT/EXCLUDE combines shapes.
// SVG create: pass raw SVG markup string (e.g. "<svg>...</svg>") — Figma converts it to vector nodes.

10 methods available.

readinherited

Get serialized node data

ParameterTypeRequiredDescription
idstringNode ID
fieldsstring[]Property whitelist. Identity fields (id, name, type) always included. Omit for stubs on list, full on get. Pass ["*"] for all.
depthnumberResponse detail: omit for id+name only. 0=properties + child stubs. N=recurse N levels. -1=unlimited.
verbosebooleanInclude all properties (bounding box, constraints, text style details). Default false — returns slim, actionable output.

Response

Serialized node tree. Shape depends on depth parameter.

FieldTypeDescription
resultsobject[]Serialized node trees
_truncatedbooleanTrue when node budget exceeded
_noticestringHuman-readable truncation notice
readinherited

Search for nodes (returns stubs only — use get with depth for full properties)

ParameterTypeRequiredDescription
querystringName search query (case-insensitive substring match)
typesstring[]Filter by node types (e.g. ["FRAME", "TEXT"])
parentIdstringSearch only within this subtree
fieldsstring[]Property whitelist. Identity fields (id, name, type) always included. Omit for stubs on list, full on get. Pass ["*"] for all.
offsetnumberSkip N items for pagination (default 0) (default: 0)
limitnumberMax items per page (default 100) (default: 100)

Response

Paginated node search results (uses results not items)

FieldTypeDescription
totalCountnumberTotal matching nodes
returnednumberNodes in this page
offsetnumber
limitnumber
resultsobject[]Matching node stubs
idstring
namestring
typestring
parentIdstring
parentNamestring
boundsobject
xnumber
ynumber
widthnumber
heightnumber
editinherited

Patch node properties

ParameterTypeRequiredDescription
itemsobject[]Array of {id, ...properties} to patch
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent. Primary way to set fills.
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear. Primary way to set strokes.
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeStyleNamestringPaint style name for stroke
strokeVariableNamestringColor variable by name for stroke
strokeWeighttokenAll sides (number) or variable name (string). Per-side: strokeTopWeight, strokeBottomWeight, strokeLeftWeight, strokeRightWeight.
strokeTopWeighttoken
strokeBottomWeighttoken
strokeLeftWeighttoken
strokeRightWeighttoken
strokeAlign"INSIDE" | "OUTSIDE" | "CENTER"Stroke position (default: INSIDE)
cornerRadiustokenAll corners (number) or variable name (string). Per-corner: topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius.
topLeftRadiustoken
topRightRadiustoken
bottomRightRadiustoken
bottomLeftRadiustoken
visiblebooleanShow/hide (default true)
lockedbooleanLock/unlock (default false)
opacitytokenOpacity (0-1) or variable name
blendMode"PASS_THROUGH" | "NORMAL" | "DARKEN" | "MULTIPLY" | "LINEAR_BURN" | "COLOR_BURN" | "LIGHTEN" | "SCREEN" | "LINEAR_DODGE" | "COLOR_DODGE" | "OVERLAY" | "SOFT_LIGHT" | "HARD_LIGHT" | "DIFFERENCE" | "EXCLUSION" | "HUE" | "SATURATION" | "COLOR" | "LUMINOSITY"
effectStyleNamestringEffect style name (e.g. 'Shadow/Card') for shadows, blurs
layoutMode"NONE" | "HORIZONTAL" | "VERTICAL"Layout direction (default: NONE)
layoutWrap"NO_WRAP" | "WRAP"Wrap children to new rows (HORIZONTAL layout only — Figma does not support WRAP on VERTICAL layouts). Use column frames inside a HORIZONTAL parent for vertical grid patterns.
paddingtokenAll edges (number) or variable name (string). Per-edge: paddingTop, paddingRight, paddingBottom, paddingLeft.
paddingToptoken
paddingRighttoken
paddingBottomtoken
paddingLefttoken
primaryAxisAlignItems"MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN"
counterAxisAlignItems"MIN" | "MAX" | "CENTER" | "BASELINE"
itemSpacingtokenSpacing between children (number or variable name string, default: 0)
counterAxisSpacingtokenGap between wrapped rows (requires layoutWrap: WRAP)
strokesIncludedInLayoutbooleanInclude stroke width in layout measurements (default: false)
layoutSizingHorizontal"FIXED" | "HUG" | "FILL"
layoutSizingVertical"FIXED" | "HUG" | "FILL"
layoutPositioning"AUTO" | "ABSOLUTE"ABSOLUTE = floating inside auto-layout parent
minWidthnumberMin width for responsive auto-layout
maxWidthnumberMax width for responsive auto-layout
minHeightnumberMin height for responsive auto-layout
maxHeightnumberMax height for responsive auto-layout
fontSizenumberFont size
fontFamilystringFont family
fontStylestringFont variant e.g. "Bold", "Italic" — overrides fontWeight
fontWeightnumber100-900. Ignored when fontStyle is set.
lineHeightanynumber | {value, unit: "PIXELS"|"PERCENT"|"AUTO"}
letterSpacinganynumber | {value, unit: "PIXELS"|"PERCENT"}
textCase"ORIGINAL" | "UPPER" | "LOWER" | "TITLE" | "SMALL_CAPS" | "SMALL_CAPS_FORCED"
textDecoration"NONE" | "UNDERLINE" | "STRIKETHROUGH"
fontColorstringShorthand — sets text color (auto-binds to matching variable/style)
fontColorVariableNamestringBind color variable by name e.g. 'text/primary'
fontColorStyleNamestringApply paint style — overrides fontColor
textStyleIdstringApply text style by ID — overrides fontSize/fontWeight
textStyleNamestringText style by name (case-insensitive)
textAlignHorizontal"LEFT" | "CENTER" | "RIGHT" | "JUSTIFIED"
textAlignVertical"TOP" | "CENTER" | "BOTTOM"
textAutoResize"NONE" | "WIDTH_AND_HEIGHT" | "HEIGHT" | "TRUNCATE"
idstring
namestringRename node
rotationnumberDegrees (0-360)
xnumber
ynumber
widthnumber
heightnumber
clearFillbooleanRemove all fills
imageUrlstringImage source — 'pexel:<id>' for Pexels photos, a public URL, or a local file path. SVGs are inserted as vectors; raster images become IMAGE fills.
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled within the frame (default: FILL)
effectsobject[]Effect array (DROP_SHADOW, INNER_SHADOW, LAYER_BLUR, BACKGROUND_BLUR)
overflowDirection"NONE" | "HORIZONTAL" | "VERTICAL" | "BOTH"Scroll overflow in prototype (default: NONE)
constraintsobject
horizontal"MIN" | "CENTER" | "MAX" | "STRETCH" | "SCALE"
vertical"MIN" | "CENTER" | "MAX" | "STRETCH" | "SCALE"
bindingsobject[]Bind variables to properties. field path examples: 'fills/0/color', 'strokes/0/color', 'opacity', 'width', 'cornerRadius', 'itemSpacing'.
fieldstring
variableNamestring
variableIdstring
explicitModeobjectPin variable mode — use { collectionName, modeName } (preferred) or { collectionId, modeId }
exportSettingsobject[]Export settings
annotationsobject[]Set annotations — [{label?, labelMarkdown?, properties?, categoryId?}]. Properties are validated per node type.
propertiesobjectDirect Figma API props (escape hatch)

Response

FieldTypeDescription
resultsany[]Array of "ok" or {error} per item
editinherited

Delete nodes

ParameterTypeRequiredDescription
idstringSingle node ID
itemsobject[]Batch: [{id}, ...]
idstring

Response

FieldTypeDescription
resultsstring[]Array of "ok" per item
createinherited

Duplicate nodes — produces a same-type copy (frame→frame, instance→instance, component→component). Instance clones reference the same source component; they do not duplicate the component definition.

ParameterTypeRequiredDescription
idstringNode ID
namestringRename the clone (set before appending to parent — required when cloning a variant into its component set to avoid duplicate names)
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
itemsobject[]Batch: [{id, name?, parentId?, x?, y?}, ...]. Alternative to single-item params.
idstringNode ID to clone
namestringRename the clone
parentIdstringTarget parent
xnumber
ynumber
depthnumberResponse detail: omit for id+name only. 0=properties + child stubs. N=recurse N levels. -1=unlimited.

Response

FieldTypeDescription
resultsobject[]One entry per input item
idstring
readinherited

Run lint on a node — returns severity-ranked findings

ParameterTypeRequiredDescription
idstringNode ID to audit
rulesstring[]Rules to check. Default: ["all"]. Categories: "component", "composition", "token", "naming", "wcag".
maxDepthnumberMax tree depth (default: 10)
maxFindingsnumberMax findings (default: 50)
minSeverity"error" | "unsafe" | "heuristic" | "style" | "verbose"Minimum severity to report (default: style). Set to 'verbose' to include AAA contrast and line-height checks.
skipInstancesbooleanSkip instance internals — findings inside instances are owned by the component (default: true)

Response

FieldTypeDescription
nodeIdstring
nodeNamestring
categoriesarraySorted by severity (error > unsafe > heuristic > style)
editinherited

Move nodes into a new parent

ParameterTypeRequiredDescription
itemsobject[]Array of {id, parentId, index?}
idstring
parentIdstring
indexnumber

Response

FieldTypeDescription
resultsstring[]Array of "ok" per item

Create frame-like containers

No parameters.

Discriminated by type. Available types:

General-purpose frame — shrinks to content by default, static when width+height given

ParameterTypeRequiredDescription
namestringNode name
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth in px (omit to shrink-to-content via HUG)
heightnumberHeight in px (omit to shrink-to-content via HUG)
rotationnumberRotation in degrees (0-360)
visiblebooleanShow/hide (default true)
lockedbooleanLock/unlock (default false)
opacitytokenOpacity (0-1) or variable name
blendMode"PASS_THROUGH" | "NORMAL" | "DARKEN" | "MULTIPLY" | "LINEAR_BURN" | "COLOR_BURN" | "LIGHTEN" | "SCREEN" | "LINEAR_DODGE" | "COLOR_DODGE" | "OVERLAY" | "SOFT_LIGHT" | "HARD_LIGHT" | "DIFFERENCE" | "EXCLUSION" | "HUE" | "SATURATION" | "COLOR" | "LUMINOSITY"
effectStyleNamestringEffect style name (e.g. 'Shadow/Card') for shadows, blurs
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent. Primary way to set fills.
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>' for Pexels photos, a public URL, or a local file path. SVGs are inserted as vectors; raster images become IMAGE fills.
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled within the frame (default: FILL)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear. Primary way to set strokes.
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeStyleNamestringPaint style name for stroke
strokeVariableNamestringColor variable by name for stroke
strokeWeighttokenAll sides (number) or variable name (string). Per-side: strokeTopWeight, strokeBottomWeight, strokeLeftWeight, strokeRightWeight.
strokeTopWeighttoken
strokeBottomWeighttoken
strokeLeftWeighttoken
strokeRightWeighttoken
strokeAlign"INSIDE" | "OUTSIDE" | "CENTER"Stroke position (default: INSIDE)
cornerRadiustokenAll corners (number) or variable name (string). Per-corner: topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius.
topLeftRadiustoken
topRightRadiustoken
bottomRightRadiustoken
bottomLeftRadiustoken
layoutMode"NONE" | "HORIZONTAL" | "VERTICAL"Layout direction (default: auto — NONE when width+height set, otherwise inferred from layout props)
layoutWrap"NO_WRAP" | "WRAP"Wrap children to new rows (HORIZONTAL layout only — Figma does not support WRAP on VERTICAL layouts). Use column frames inside a HORIZONTAL parent for vertical grid patterns.
paddingtokenAll edges (number) or variable name (string). Per-edge: paddingTop, paddingRight, paddingBottom, paddingLeft.
paddingToptoken
paddingRighttoken
paddingBottomtoken
paddingLefttoken
primaryAxisAlignItems"MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN"
counterAxisAlignItems"MIN" | "MAX" | "CENTER" | "BASELINE"
itemSpacingtokenSpacing between children (number or variable name string, default: 0)
counterAxisSpacingtokenGap between wrapped rows (requires layoutWrap: WRAP)
strokesIncludedInLayoutbooleanInclude stroke width in layout measurements (default: false)
overflowDirection"NONE" | "HORIZONTAL" | "VERTICAL" | "BOTH"Scroll overflow in prototype (default: NONE)
layoutPositioning"AUTO" | "ABSOLUTE"ABSOLUTE = floating inside auto-layout parent
layoutSizingHorizontal"FIXED" | "HUG" | "FILL"
layoutSizingVertical"FIXED" | "HUG" | "FILL"
minWidthnumberMin width for responsive auto-layout
maxWidthnumberMax width for responsive auto-layout
minHeightnumberMin height for responsive auto-layout
maxHeightnumberMax height for responsive auto-layout
annotationsobject[]Set annotations — [{label?, labelMarkdown?, properties?, categoryId?}]. Properties validated per node type.
clipsContentboolean
childrenobject[]Inline child nodes — build nested trees in one call. Types: text: {type:"text", text, fontFamily?, fontSize?, fontWeight?, fontStyle?, fontColor?, layoutSizingHorizontal?}. frame: {type:"frame", name?, layoutMode?, fillColor?, width?, layoutSizingHorizontal?, children?}. instance: {type:"instance", componentId, variantProperties?, properties?}. component: {type:"component", name, children?}. All params from text/frame endpoints are supported on their respective types. Always set layoutSizingHorizontal + layoutSizingVertical on children inside auto-layout parents (FILL, HUG, or FIXED). Example: children:[{type:"text", text:"Title", fontSize:20, layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG"}, {type:"frame", name:"Row", layoutMode:"HORIZONTAL", layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG", itemSpacing:8, children:[{type:"instance", componentId:"1:2", layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG"}]}] Inside components: add componentPropertyName to auto-bind TEXT or INSTANCE_SWAP properties.

Auto-layout frame that arranges children automatically

ParameterTypeRequiredDescription
namestringNode name
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth in px (omit to shrink-to-content via HUG)
heightnumberHeight in px (omit to shrink-to-content via HUG)
rotationnumberRotation in degrees (0-360)
visiblebooleanShow/hide (default true)
lockedbooleanLock/unlock (default false)
opacitytokenOpacity (0-1) or variable name
blendMode"PASS_THROUGH" | "NORMAL" | "DARKEN" | "MULTIPLY" | "LINEAR_BURN" | "COLOR_BURN" | "LIGHTEN" | "SCREEN" | "LINEAR_DODGE" | "COLOR_DODGE" | "OVERLAY" | "SOFT_LIGHT" | "HARD_LIGHT" | "DIFFERENCE" | "EXCLUSION" | "HUE" | "SATURATION" | "COLOR" | "LUMINOSITY"
effectStyleNamestringEffect style name (e.g. 'Shadow/Card') for shadows, blurs
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent. Primary way to set fills.
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>' for Pexels photos, a public URL, or a local file path. SVGs are inserted as vectors; raster images become IMAGE fills.
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled within the frame (default: FILL)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear. Primary way to set strokes.
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeStyleNamestringPaint style name for stroke
strokeVariableNamestringColor variable by name for stroke
strokeWeighttokenAll sides (number) or variable name (string). Per-side: strokeTopWeight, strokeBottomWeight, strokeLeftWeight, strokeRightWeight.
strokeTopWeighttoken
strokeBottomWeighttoken
strokeLeftWeighttoken
strokeRightWeighttoken
strokeAlign"INSIDE" | "OUTSIDE" | "CENTER"Stroke position (default: INSIDE)
cornerRadiustokenAll corners (number) or variable name (string). Per-corner: topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius.
topLeftRadiustoken
topRightRadiustoken
bottomRightRadiustoken
bottomLeftRadiustoken
layoutMode"HORIZONTAL" | "VERTICAL"Primary axis direction
layoutWrap"NO_WRAP" | "WRAP"Wrap children to new rows (HORIZONTAL layout only — Figma does not support WRAP on VERTICAL layouts). Use column frames inside a HORIZONTAL parent for vertical grid patterns.
paddingtokenAll edges (number) or variable name (string). Per-edge: paddingTop, paddingRight, paddingBottom, paddingLeft.
paddingToptoken
paddingRighttoken
paddingBottomtoken
paddingLefttoken
primaryAxisAlignItems"MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN"
counterAxisAlignItems"MIN" | "MAX" | "CENTER" | "BASELINE"
itemSpacingtokenSpacing between children (number or variable name string, default: 0)
counterAxisSpacingtokenGap between wrapped rows (requires layoutWrap: WRAP)
strokesIncludedInLayoutbooleanInclude stroke width in layout measurements (default: false)
overflowDirection"NONE" | "HORIZONTAL" | "VERTICAL" | "BOTH"Scroll overflow in prototype (default: NONE)
layoutPositioning"AUTO" | "ABSOLUTE"ABSOLUTE = floating inside auto-layout parent
layoutSizingHorizontal"FIXED" | "HUG" | "FILL"
layoutSizingVertical"FIXED" | "HUG" | "FILL"
minWidthnumberMin width for responsive auto-layout
maxWidthnumberMax width for responsive auto-layout
minHeightnumberMin height for responsive auto-layout
maxHeightnumberMax height for responsive auto-layout
annotationsobject[]Set annotations — [{label?, labelMarkdown?, properties?, categoryId?}]. Properties validated per node type.
clipsContentboolean
nodeIdsstring[]Existing node IDs to wrap into auto-layout
childrenobject[]Inline child nodes — build nested trees in one call. Types: text: {type:"text", text, fontFamily?, fontSize?, fontWeight?, fontStyle?, fontColor?, layoutSizingHorizontal?}. frame: {type:"frame", name?, layoutMode?, fillColor?, width?, layoutSizingHorizontal?, children?}. instance: {type:"instance", componentId, variantProperties?, properties?}. component: {type:"component", name, children?}. All params from text/frame endpoints are supported on their respective types. Always set layoutSizingHorizontal + layoutSizingVertical on children inside auto-layout parents (FILL, HUG, or FIXED). Example: children:[{type:"text", text:"Title", fontSize:20, layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG"}, {type:"frame", name:"Row", layoutMode:"HORIZONTAL", layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG", itemSpacing:8, children:[{type:"instance", componentId:"1:2", layoutSizingHorizontal:"FILL", layoutSizingVertical:"HUG"}]}] Inside components: add componentPropertyName to auto-bind TEXT or INSTANCE_SWAP properties.

Figma section (top-level organizer)

ParameterTypeRequiredDescription
namestringSection name
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth (default: 500)
heightnumberHeight (default: 500)
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>', public URL, or local file path
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled (default: FILL)

Rectangle shape node

ParameterTypeRequiredDescription
namestringLayer name (default: 'Rectangle')
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth in px (default: 100)
heightnumberHeight in px (default: 100)
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>', public URL, or local file path
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled (default: FILL)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeVariableNamestringColor variable by name for stroke
strokeWeighttoken
cornerRadiustokenAll corners (number) or variable name (string). Per-corner: topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius.
topLeftRadiustoken
topRightRadiustoken
bottomRightRadiustoken
bottomLeftRadiustoken
opacitytoken
layoutSizingHorizontal"FIXED" | "FILL"Horizontal sizing in auto-layout parent
layoutSizingVertical"FIXED" | "FILL"Vertical sizing in auto-layout parent
annotationsobject[]Annotations — [{label?, labelMarkdown?, properties?, categoryId?}]

Ellipse/circle shape node

ParameterTypeRequiredDescription
namestringLayer name (default: 'Ellipse')
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth in px (default: 100)
heightnumberHeight in px (default: 100, same as width for circle)
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>', public URL, or local file path
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled (default: FILL)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeVariableNamestringColor variable by name for stroke
strokeWeighttoken
opacitytoken
layoutSizingHorizontal"FIXED" | "FILL"Horizontal sizing in auto-layout parent
layoutSizingVertical"FIXED" | "FILL"Vertical sizing in auto-layout parent
annotationsobject[]Annotations — [{label?, labelMarkdown?, properties?, categoryId?}]

Line shape node

ParameterTypeRequiredDescription
namestringLayer name (default: 'Line')
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)
lengthnumberLine length in px (default: 100)
rotationnumberRotation in degrees (default: 0 = horizontal)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear
strokeColorstringLine color (default: black, auto-binds to matching variable/style)
strokeVariableNamestringColor variable by name for stroke
strokeWeighttokenLine thickness (default: 1)
opacitytoken
layoutSizingHorizontal"FIXED" | "FILL"Horizontal sizing in auto-layout parent (defaults to FILL in vertical auto-layout)
annotationsobject[]Annotations — [{label?, labelMarkdown?, properties?, categoryId?}]

Group existing nodes together

ParameterTypeRequiredDescription
nodeIdsstring[]Node IDs to group (min 1)
namestringGroup name
parentIdstringParent node ID. Omit to place at current page root.

Combine shapes with boolean operations (union, subtract, intersect, exclude)

ParameterTypeRequiredDescription
operation"UNION" | "SUBTRACT" | "INTERSECT" | "EXCLUDE"Boolean operation type
nodeIdsstring[]Node IDs to combine (min 2, first node is the base for SUBTRACT)
namestringResult node name
parentIdstringParent node ID. Omit to place at current page root.

Create node from SVG markup

ParameterTypeRequiredDescription
fillStyleNamestringPaint style to apply to vector fills
fillVariableNamestringColor variable by name for vector fills
strokeStyleNamestringPaint style to apply to vector strokes
strokeVariableNamestringColor variable by name for vector strokes
svgstringSVG markup string
namestringLayer name (default: 'SVG')
parentIdstringParent node ID. Omit to place at current page root.
xnumberX position (default: 0)
ynumberY position (default: 0)

Create a slot inside a component. Slots are placeholder containers that instance users fill with content. Defaults to VERTICAL auto-layout with FILL/HUG sizing — ready to receive children. Accepts all frame layout properties.

ParameterTypeRequiredDescription
namestringNode name
parentIdstringParent node ID inside the owning component. Required unless componentId is provided.
xnumberX position (default: 0)
ynumberY position (default: 0)
widthnumberWidth in px (omit to shrink-to-content via HUG)
heightnumberHeight in px (omit to shrink-to-content via HUG)
rotationnumberRotation in degrees (0-360)
visiblebooleanShow/hide (default true)
lockedbooleanLock/unlock (default false)
opacitytokenOpacity (0-1) or variable name
blendMode"PASS_THROUGH" | "NORMAL" | "DARKEN" | "MULTIPLY" | "LINEAR_BURN" | "COLOR_BURN" | "LIGHTEN" | "SCREEN" | "LINEAR_DODGE" | "COLOR_DODGE" | "OVERLAY" | "SOFT_LIGHT" | "HARD_LIGHT" | "DIFFERENCE" | "EXCLUSION" | "HUE" | "SATURATION" | "COLOR" | "LUMINOSITY"
effectStyleNamestringEffect style name (e.g. 'Shadow/Card') for shadows, blurs
fillsarrayFill paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] for transparent. Primary way to set fills.
fillColorstringShorthand — sets a single solid fill (auto-binds to matching variable/style)
fillStyleNamestringPaint style name for fill
fillVariableNamestringColor variable by name e.g. 'bg/primary'
imageUrlstringImage source — 'pexel:<id>' for Pexels photos, a public URL, or a local file path. SVGs are inserted as vectors; raster images become IMAGE fills.
imageScaleMode"FILL" | "FIT" | "CROP" | "TILE"How the image is scaled within the frame (default: FILL)
strokesarrayStroke paints array — e.g. [{type: 'SOLID', color: '#hex'}] or [] to clear. Primary way to set strokes.
strokeColorstringShorthand — sets a single solid stroke (auto-binds to matching variable/style)
strokeStyleNamestringPaint style name for stroke
strokeVariableNamestringColor variable by name for stroke
strokeWeighttokenAll sides (number) or variable name (string). Per-side: strokeTopWeight, strokeBottomWeight, strokeLeftWeight, strokeRightWeight.
strokeTopWeighttoken
strokeBottomWeighttoken
strokeLeftWeighttoken
strokeRightWeighttoken
strokeAlign"INSIDE" | "OUTSIDE" | "CENTER"Stroke position (default: INSIDE)
cornerRadiustokenAll corners (number) or variable name (string). Per-corner: topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius.
topLeftRadiustoken
topRightRadiustoken
bottomRightRadiustoken
bottomLeftRadiustoken
layoutMode"NONE" | "HORIZONTAL" | "VERTICAL"Layout direction (default: auto — NONE when width+height set, otherwise inferred from layout props)
layoutWrap"NO_WRAP" | "WRAP"Wrap children to new rows (HORIZONTAL layout only — Figma does not support WRAP on VERTICAL layouts). Use column frames inside a HORIZONTAL parent for vertical grid patterns.
paddingtokenAll edges (number) or variable name (string). Per-edge: paddingTop, paddingRight, paddingBottom, paddingLeft.
paddingToptoken
paddingRighttoken
paddingBottomtoken
paddingLefttoken
primaryAxisAlignItems"MIN" | "MAX" | "CENTER" | "SPACE_BETWEEN"
counterAxisAlignItems"MIN" | "MAX" | "CENTER" | "BASELINE"
itemSpacingtokenSpacing between children (number or variable name string, default: 0)
counterAxisSpacingtokenGap between wrapped rows (requires layoutWrap: WRAP)
strokesIncludedInLayoutbooleanInclude stroke width in layout measurements (default: false)
overflowDirection"NONE" | "HORIZONTAL" | "VERTICAL" | "BOTH"Scroll overflow in prototype (default: NONE)
layoutPositioning"AUTO" | "ABSOLUTE"ABSOLUTE = floating inside auto-layout parent
layoutSizingHorizontal"FIXED" | "HUG" | "FILL"
layoutSizingVertical"FIXED" | "HUG" | "FILL"
minWidthnumberMin width for responsive auto-layout
maxWidthnumberMax width for responsive auto-layout
minHeightnumberMin height for responsive auto-layout
maxHeightnumberMax height for responsive auto-layout
annotationsobject[]Set annotations — [{label?, labelMarkdown?, properties?, categoryId?}]. Properties validated per node type.
componentIdstringOwning component ID. Optional — auto-resolved from parentId by walking up ancestors.

Response

FieldTypeDescription
resultsobject[]One entry per input item
idstring

Commit a staged node — unwraps from [STAGED] container into the original target location.

ParameterTypeRequiredDescription
idstringStaged node ID to commit

Response

FieldTypeDescription
resultsobject[]One entry per input item
idstring

Export a node as PNG, JPG, SVG, SVG_STRING, or PDF

ParameterTypeRequiredDescription
idstringNode ID to export
format"PNG" | "JPG" | "SVG" | "SVG_STRING" | "PDF"Export format (default: PNG). SVG_STRING returns raw SVG text.
scalenumberExport scale (default: 1, only for PNG/JPG)

Response

Binary image data returned as MCP image content (SVG_STRING returns text)

FieldTypeDescription
imageDatastring
mimeTypestring