Figma · Schema
Figma File
A Figma design file containing a document tree with pages, frames, components, styles, and version metadata. This schema represents the response from the GET /v1/files/{file_key} endpoint.
CollaborationDesignGraphicsInterfacesPrototypesPrototypingUI/UX
Properties
| Name | Type | Description |
|---|---|---|
| name | string | The name of the file as it appears in the Figma editor and file browser. |
| role | string | The role of the user making the API request in relation to the file. |
| lastModified | string | The UTC ISO 8601 time at which the file was last modified. |
| editorType | string | The type of editor associated with this file. Figma is for design files, FigJam is for whiteboarding. |
| thumbnailUrl | string | A URL to a thumbnail image of the file. The URL expires after a period of time. |
| version | string | The current version number of the file. This changes on every save. |
| document | object | |
| components | object | A mapping from component IDs to component metadata for all components in the file. |
| componentSets | object | A mapping from component set IDs to component set metadata. |
| schemaVersion | integer | The version of the Figma file schema that this file uses. |
| styles | object | A mapping from style IDs to style metadata for all styles in the file. |
| mainFileKey | string | The key of the main file. Present only when this file is a branch. |
| branches | array | A list of branches for this file. Only present if branch_data was requested. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://figma.com/schemas/figma/file.json",
"title": "Figma File",
"description": "A Figma design file containing a document tree with pages, frames, components, styles, and version metadata. This schema represents the response from the GET /v1/files/{file_key} endpoint.",
"type": "object",
"required": ["name", "role", "lastModified", "editorType", "version", "document", "components", "componentSets", "schemaVersion", "styles"],
"properties": {
"name": {
"type": "string",
"description": "The name of the file as it appears in the Figma editor and file browser."
},
"role": {
"type": "string",
"enum": ["owner", "editor", "viewer"],
"description": "The role of the user making the API request in relation to the file."
},
"lastModified": {
"type": "string",
"format": "date-time",
"description": "The UTC ISO 8601 time at which the file was last modified."
},
"editorType": {
"type": "string",
"enum": ["figma", "figjam"],
"description": "The type of editor associated with this file. Figma is for design files, FigJam is for whiteboarding."
},
"thumbnailUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a thumbnail image of the file. The URL expires after a period of time."
},
"version": {
"type": "string",
"description": "The current version number of the file. This changes on every save."
},
"document": {
"$ref": "#/$defs/DocumentNode"
},
"components": {
"type": "object",
"description": "A mapping from component IDs to component metadata for all components in the file.",
"additionalProperties": {
"$ref": "#/$defs/Component"
}
},
"componentSets": {
"type": "object",
"description": "A mapping from component set IDs to component set metadata.",
"additionalProperties": {
"$ref": "#/$defs/ComponentSet"
}
},
"schemaVersion": {
"type": "integer",
"description": "The version of the Figma file schema that this file uses.",
"minimum": 0
},
"styles": {
"type": "object",
"description": "A mapping from style IDs to style metadata for all styles in the file.",
"additionalProperties": {
"$ref": "#/$defs/Style"
}
},
"mainFileKey": {
"type": "string",
"description": "The key of the main file. Present only when this file is a branch."
},
"branches": {
"type": "array",
"description": "A list of branches for this file. Only present if branch_data was requested.",
"items": {
"$ref": "#/$defs/Branch"
}
}
},
"$defs": {
"DocumentNode": {
"type": "object",
"description": "The root node of the Figma document tree. Contains one or more canvas (page) nodes.",
"required": ["id", "name", "type", "children"],
"properties": {
"id": {
"type": "string",
"description": "A string uniquely identifying this node within the document. The document root is always '0:0'."
},
"name": {
"type": "string",
"description": "The name given to the node by the user in the tool."
},
"type": {
"type": "string",
"enum": ["DOCUMENT"],
"description": "The type of the node. Always DOCUMENT for the root node."
},
"children": {
"type": "array",
"description": "An array of canvas (page) nodes attached to the document.",
"items": {
"$ref": "#/$defs/CanvasNode"
}
}
}
},
"CanvasNode": {
"type": "object",
"description": "A canvas represents a page in the Figma file. Each canvas contains layers of design elements.",
"required": ["id", "name", "type"],
"properties": {
"id": {
"type": "string",
"description": "A string uniquely identifying this node within the document."
},
"name": {
"type": "string",
"description": "The name of the page as displayed in the layers panel."
},
"type": {
"type": "string",
"enum": ["CANVAS"],
"description": "The type of the node. Always CANVAS for page nodes."
},
"backgroundColor": {
"$ref": "#/$defs/Color"
},
"children": {
"type": "array",
"description": "An array of top-level layers on the canvas.",
"items": {
"$ref": "#/$defs/Node"
}
},
"prototypeStartNodeID": {
"type": ["string", "null"],
"description": "The ID of the node that is the starting point for prototyping on this page."
},
"flowStartingPoints": {
"type": "array",
"description": "An array of flow starting points for prototyping.",
"items": {
"type": "object",
"properties": {
"nodeId": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
},
"Node": {
"type": "object",
"description": "A generic node in the Figma document tree. Nodes have different types such as FRAME, GROUP, TEXT, RECTANGLE, VECTOR, COMPONENT, INSTANCE, and others.",
"required": ["id", "name", "type"],
"properties": {
"id": {
"type": "string",
"description": "A string uniquely identifying this node within the document."
},
"name": {
"type": "string",
"description": "The name given to the node by the user in the tool."
},
"type": {
"type": "string",
"description": "The type of the node.",
"enum": [
"DOCUMENT",
"CANVAS",
"FRAME",
"GROUP",
"SECTION",
"VECTOR",
"BOOLEAN_OPERATION",
"STAR",
"LINE",
"ELLIPSE",
"REGULAR_POLYGON",
"RECTANGLE",
"TABLE",
"TABLE_CELL",
"TEXT",
"SLICE",
"COMPONENT",
"COMPONENT_SET",
"INSTANCE",
"STICKY",
"SHAPE_WITH_TEXT",
"CONNECTOR",
"STAMP",
"WIDGET",
"EMBED",
"LINK_UNFURL",
"MEDIA",
"WASHI_TAPE",
"HIGHLIGHT"
]
},
"visible": {
"type": "boolean",
"description": "Whether the node is visible on the canvas. Defaults to true.",
"default": true
},
"locked": {
"type": "boolean",
"description": "Whether the node is locked, preventing it from being selected and modified.",
"default": false
},
"children": {
"type": "array",
"description": "An array of child nodes, present for node types that can contain children.",
"items": {
"$ref": "#/$defs/Node"
}
},
"absoluteBoundingBox": {
"$ref": "#/$defs/Rectangle"
},
"absoluteRenderBounds": {
"$ref": "#/$defs/Rectangle"
},
"fills": {
"type": "array",
"description": "An array of fill paints applied to the node.",
"items": {
"$ref": "#/$defs/Paint"
}
},
"strokes": {
"type": "array",
"description": "An array of stroke paints applied to the node.",
"items": {
"$ref": "#/$defs/Paint"
}
},
"strokeWeight": {
"type": "number",
"description": "The weight of strokes on the node.",
"minimum": 0
},
"opacity": {
"type": "number",
"description": "Opacity of the node, from 0 to 1.",
"minimum": 0,
"maximum": 1,
"default": 1
},
"effects": {
"type": "array",
"description": "An array of effects attached to this node.",
"items": {
"$ref": "#/$defs/Effect"
}
},
"componentId": {
"type": "string",
"description": "For INSTANCE nodes, the ID of the component that this instance refers to."
},
"characters": {
"type": "string",
"description": "For TEXT nodes, the raw characters in the text node."
}
}
},
"Color": {
"type": "object",
"description": "An RGBA color value with all channels ranging from 0 to 1.",
"required": ["r", "g", "b", "a"],
"properties": {
"r": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Red channel value, between 0 and 1."
},
"g": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Green channel value, between 0 and 1."
},
"b": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Blue channel value, between 0 and 1."
},
"a": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Alpha channel value, between 0 and 1."
}
}
},
"Rectangle": {
"type": "object",
"description": "A bounding rectangle defined by its position and size.",
"properties": {
"x": {
"type": "number",
"description": "X coordinate of the top left corner."
},
"y": {
"type": "number",
"description": "Y coordinate of the top left corner."
},
"width": {
"type": "number",
"description": "Width of the rectangle.",
"minimum": 0
},
"height": {
"type": "number",
"description": "Height of the rectangle.",
"minimum": 0
}
}
},
"Paint": {
"type": "object",
"description": "A paint applied as a fill or stroke. Can be a solid color, gradient, or image.",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Type of paint.",
"enum": [
"SOLID",
"GRADIENT_LINEAR",
"GRADIENT_RADIAL",
"GRADIENT_ANGULAR",
"GRADIENT_DIAMOND",
"IMAGE",
"EMOJI",
"VIDEO"
]
},
"visible": {
"type": "boolean",
"description": "Whether the paint is visible.",
"default": true
},
"opacity": {
"type": "number",
"description": "Overall opacity of the paint, from 0 to 1.",
"minimum": 0,
"maximum": 1,
"default": 1
},
"color": {
"$ref": "#/$defs/Color"
},
"blendMode": {
"type": "string",
"description": "How this paint blends with the paints below it.",
"enum": [
"NORMAL",
"DARKEN",
"MULTIPLY",
"LINEAR_BURN",
"COLOR_BURN",
"LIGHTEN",
"SCREEN",
"LINEAR_DODGE",
"COLOR_DODGE",
"OVERLAY",
"SOFT_LIGHT",
"HARD_LIGHT",
"DIFFERENCE",
"EXCLUSION",
"HUE",
"SATURATION",
"COLOR",
"LUMINOSITY"
]
},
"imageRef": {
"type": "string",
"description": "For IMAGE paints, a reference to the image content."
},
"scaleMode": {
"type": "string",
"description": "For IMAGE paints, how the image is scaled within the node.",
"enum": ["FILL", "FIT", "TILE", "STRETCH"]
}
}
},
"Effect": {
"type": "object",
"description": "A visual effect applied to a node such as a shadow or blur.",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "Type of effect.",
"enum": [
"INNER_SHADOW",
"DROP_SHADOW",
"LAYER_BLUR",
"BACKGROUND_BLUR"
]
},
"visible": {
"type": "boolean",
"description": "Whether the effect is visible.",
"default": true
},
"radius": {
"type": "number",
"description": "Radius of the effect (blur radius for blur effects, shadow spread).",
"minimum": 0
},
"color": {
"$ref": "#/$defs/Color"
},
"blendMode": {
"type": "string",
"description": "Blend mode of the effect."
},
"offset": {
"type": "object",
"description": "Offset of the shadow effect.",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
}
},
"spread": {
"type": "number",
"description": "Spread of the shadow effect.",
"default": 0
}
}
},
"Component": {
"type": "object",
"description": "Metadata about a main component within the file.",
"required": ["key", "name", "description", "documentationLinks", "remote"],
"properties": {
"key": {
"type": "string",
"description": "The globally unique key of the component."
},
"name": {
"type": "string",
"description": "Name of the component."
},
"description": {
"type": "string",
"description": "The description of the component as entered in the editor."
},
"componentSetId": {
"type": ["string", "null"],
"description": "The ID of the component set this component belongs to, if any."
},
"documentationLinks": {
"type": "array",
"description": "An array of documentation links attached to this component.",
"items": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "uri",
"description": "The URI of the documentation link."
}
}
}
},
"remote": {
"type": "boolean",
"description": "Whether this component is a remote component from an external library."
}
}
},
"ComponentSet": {
"type": "object",
"description": "Metadata about a component set, which groups variants of a component together.",
"required": ["key", "name", "description"],
"properties": {
"key": {
"type": "string",
"description": "The globally unique key of the component set."
},
"name": {
"type": "string",
"description": "Name of the component set."
},
"description": {
"type": "string",
"description": "The description of the component set."
},
"documentationLinks": {
"type": "array",
"items": {
"type": "object",
"required": ["uri"],
"properties": {
"uri": {
"type": "string",
"format": "uri"
}
}
}
},
"remote": {
"type": "boolean",
"description": "Whether this component set is from a remote library."
}
}
},
"Style": {
"type": "object",
"description": "Metadata about a style that can be applied to nodes.",
"required": ["key", "name", "description", "remote", "styleType"],
"properties": {
"key": {
"type": "string",
"description": "The globally unique key of the style."
},
"name": {
"type": "string",
"description": "Name of the style."
},
"description": {
"type": "string",
"description": "Description of the style."
},
"remote": {
"type": "boolean",
"description": "Whether this style is from a remote library."
},
"styleType": {
"type": "string",
"description": "The type of style.",
"enum": ["FILL", "TEXT", "EFFECT", "GRID"]
}
}
},
"Branch": {
"type": "object",
"description": "Information about a branch of a Figma file.",
"required": ["key", "name", "thumbnailUrl", "lastModified"],
"properties": {
"key": {
"type": "string",
"description": "The key of the branch file."
},
"name": {
"type": "string",
"description": "The name of the branch."
},
"thumbnailUrl": {
"type": "string",
"format": "uri",
"description": "A URL to a thumbnail image of the branch."
},
"lastModified": {
"type": "string",
"format": "date-time",
"description": "The UTC ISO 8601 time at which the branch was last modified."
}
}
},
"User": {
"type": "object",
"description": "A Figma user account.",
"required": ["id", "handle", "imgUrl"],
"properties": {
"id": {
"type": "string",
"description": "Unique stable ID of the user."
},
"handle": {
"type": "string",
"description": "Display name of the user."
},
"imgUrl": {
"type": "string",
"format": "uri",
"description": "URL to the user's profile image."
},
"email": {
"type": "string",
"format": "email",
"description": "Email address associated with the user's account."
}
}
},
"Version": {
"type": "object",
"description": "A recorded version entry in the file's version history.",
"required": ["id", "createdAt", "label", "description", "user"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the version."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "The UTC ISO 8601 time at which the version was created."
},
"label": {
"type": ["string", "null"],
"description": "The label given to the version in the editor."
},
"description": {
"type": ["string", "null"],
"description": "The description of the version."
},
"user": {
"$ref": "#/$defs/User"
}
}
},
"Comment": {
"type": "object",
"description": "A comment or reply left by a user on a Figma file.",
"required": ["id", "fileKey", "user", "createdAt", "message", "reactions", "orderId"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the comment."
},
"fileKey": {
"type": "string",
"description": "The key of the file the comment belongs to."
},
"parentId": {
"type": ["string", "null"],
"description": "If present, the ID of the comment to which this is a reply."
},
"user": {
"$ref": "#/$defs/User"
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "The UTC ISO 8601 time at which the comment was left."
},
"resolvedAt": {
"type": ["string", "null"],
"format": "date-time",
"description": "If set, the UTC ISO 8601 time the comment was resolved."
},
"message": {
"type": "string",
"description": "The content of the comment."
},
"orderId": {
"type": ["string", "null"],
"description": "The number displayed with the comment in the UI."
},
"reactions": {
"type": "array",
"description": "An array of emoji reactions to the comment.",
"items": {
"$ref": "#/$defs/Reaction"
}
}
}
},
"Reaction": {
"type": "object",
"description": "An emoji reaction left on a comment.",
"required": ["user", "emoji", "createdAt"],
"properties": {
"user": {
"$ref": "#/$defs/User"
},
"emoji": {
"type": "string",
"description": "The emoji used for the reaction."
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "The UTC ISO 8601 time at which the reaction was left."
}
}
}
}
}