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.
View JSON Schema on GitHub

JSON Schema

figma-file-schema.json Raw ↑
{
  "$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."
        }
      }
    }
  }
}