Figma
Connect to Figma API v1. Read and write files, manage components, styles, variables, webhooks, and dev resources. Enterprise features include library analytics and activity logs.
Connect to Figma API v1. Read and write files, manage components, styles, variables, webhooks, and dev resources. Enterprise features include library analytics and activity logs.
Supports authentication: OAuth 2.0
Set up the agent connector
Section titled “Set up the agent connector”Register your Figma app credentials with Scalekit so it can manage the OAuth 2.0 authentication flow and token lifecycle on your behalf. You’ll need a Client ID and Client Secret from the Figma Developers portal.
-
Create a Figma connection in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Search for Figma and click Create.

-
In the Configure Figma Connection panel, copy the Redirect URI. It looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback. You’ll paste this into Figma in the next step.
-
-
Create an app in the Figma Developers portal
-
Go to the Figma Developers portal and sign in. Click + Create a new app.

-
Fill in your app name and description, then click Save.
-
-
Add the redirect URI and copy credentials
-
Open your app and click the OAuth credentials tab.
-
Under Redirect URLs, click Add a redirect URL and paste the Redirect URI you copied from Scalekit.
-
Copy the Client ID from the same tab.
-
Copy the Client Secret. Store it securely — never commit it to source control.

-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Connections and open the Figma connection you created.
-
Enter your credentials:
- Client ID — from the Figma OAuth credentials tab
- Client Secret — copied in the previous step
- Scopes — select the permissions your app needs:
files:read— read files, nodes, images, components, and stylesfile_variables:read— read local and published variablesfile_variables:write— create, update, and delete variableswebhooks:write— create, update, and delete team webhooks

-
Click Save.
-
Connect a user’s Figma account and make API calls on their behalf — Scalekit handles OAuth and token management automatically.
You can interact with Figma in two ways — via direct proxy API calls or via Scalekit optimized tool calls. Scroll down to see the list of available Scalekit tools.
Proxy API calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'figma'; // get your connection name from connection configurationsconst identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsconst scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// Step 1: Generate an authorization link and present it to your userconst { link } = await actions.getAuthorizationLink({ connectionName, identifier,});console.log('Authorize Figma:', link);process.stdout.write('Press Enter after authorizing...');await new Promise(r => process.stdin.once('data', r));
// Step 2: Make API requests via the Scalekit proxy — no token management neededconst me = await actions.request({ connectionName, identifier, path: '/v1/me', method: 'GET',});console.log('Authenticated user:', me);
// Example: fetch a file's document treeconst file = await actions.request({ connectionName, identifier, path: '/v1/files/YOUR_FILE_KEY', method: 'GET',});console.log('File:', file);import scalekit.client, osfrom dotenv import load_dotenvload_dotenv()
connection_name = "figma" # get your connection name from connection configurationsidentifier = "user_123" # your unique user identifier
# Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsscalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# Step 1: Generate an authorization link and present it to your userlink_response = actions.get_authorization_link( connection_name=connection_name, identifier=identifier)print("Authorize Figma:", link_response.link)input("Press Enter after authorizing...")
# Step 2: Make API requests via the Scalekit proxy — no token management neededme = actions.request( connection_name=connection_name, identifier=identifier, path="/v1/me", method="GET")print("Authenticated user:", me)
# Example: fetch a file's document treefile = actions.request( connection_name=connection_name, identifier=identifier, path="/v1/files/YOUR_FILE_KEY", method="GET")print("File:", file)Scalekit tools
figma_me_get
Section titled “figma_me_get”Returns the authenticated user’s profile information including name, email, handle, and profile image URL. No parameters required.
figma_file_get
Section titled “figma_file_get”Returns a Figma file’s full document tree including all nodes, components, styles, and metadata.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file (found in the file URL) |
version | string | No | A specific version ID to retrieve; omit for the latest version |
ids | string | No | Comma-separated list of node IDs to limit the response to specific nodes |
depth | integer | No | Maximum depth of the document tree to return |
geometry | string | No | Set to paths to export vector path data for nodes |
plugin_data | string | No | Comma-separated list of plugin IDs to include plugin-specific data |
branch_data | boolean | No | Whether to include branch metadata in the response |
figma_file_nodes_get
Section titled “figma_file_nodes_get”Returns specific nodes from a Figma file by their node IDs, along with their children and associated styles and components.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
ids | string | Yes | Comma-separated list of node IDs to fetch |
version | string | No | A specific version ID to retrieve |
depth | integer | No | Maximum depth of the subtree to return |
geometry | string | No | Set to paths to export vector path data |
plugin_data | string | No | Comma-separated list of plugin IDs for plugin-specific data |
figma_file_images_render
Section titled “figma_file_images_render”Renders nodes from a Figma file as images (PNG, JPG, SVG, or PDF) and returns download URLs.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
ids | string | Yes | Comma-separated list of node IDs to render |
scale | number | No | Image scale factor between 0.01 and 4 (default: 1) |
format | string | No | Output format: png, jpg, svg, or pdf (default: png) |
svg_include_id | boolean | No | Whether to include node IDs as attributes in SVG output |
svg_simplify_stroke | boolean | No | Whether to simplify inside/outside strokes in SVG output |
use_absolute_bounds | boolean | No | Whether to use the node’s absolute bounding box for cropping |
version | string | No | A specific version ID to render |
figma_file_image_fills_get
Section titled “figma_file_image_fills_get”Returns download URLs for all image fills used in a Figma file. Image fills are images applied as fills to nodes.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_file_versions_list
Section titled “figma_file_versions_list”Returns the version history of a Figma file, including version IDs, labels, descriptions, and creation timestamps.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
page_size | integer | No | Number of versions to return per page |
before | integer | No | Cursor for backward pagination; returns versions before this version ID |
after | integer | No | Cursor for forward pagination; returns versions after this version ID |
figma_file_comments_list
Section titled “figma_file_comments_list”Returns all comments on a Figma file, including their text, author, position, and resolved status.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
as_md | boolean | No | Whether to return comment text formatted as Markdown |
figma_file_comment_create
Section titled “figma_file_comment_create”Posts a new comment on a Figma file. Can be placed at a specific canvas position or anchored to a specific node.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
message | string | Yes | The text content of the comment |
client_meta | object | No | Coordinates or node anchor for placing the comment on the canvas |
comment_id | string | No | ID of the parent comment to reply to an existing thread |
figma_file_comment_delete
Section titled “figma_file_comment_delete”Deletes a specific comment from a Figma file. Only the comment author or file owner can delete a comment.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
comment_id | string | Yes | The ID of the comment to delete |
figma_comment_reactions_list
Section titled “figma_comment_reactions_list”Returns a list of emoji reactions on a specific comment in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
comment_id | string | Yes | The ID of the comment to list reactions for |
cursor | string | No | Pagination cursor for fetching the next page of results |
figma_comment_reaction_create
Section titled “figma_comment_reaction_create”Adds an emoji reaction to a comment in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
comment_id | string | Yes | The ID of the comment to react to |
emoji | string | Yes | The emoji to add as a reaction (e.g., :heart:, :+1:) |
figma_comment_reaction_delete
Section titled “figma_comment_reaction_delete”Removes the authenticated user’s emoji reaction from a comment in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
comment_id | string | Yes | The ID of the comment to remove the reaction from |
emoji | string | Yes | The emoji reaction to remove (e.g., :heart:, :+1:) |
figma_file_components_list
Section titled “figma_file_components_list”Returns a list of all published components in a Figma file, including their keys, names, descriptions, and thumbnails.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_component_get
Section titled “figma_component_get”Returns metadata for a published component by its key, including name, description, thumbnail, and containing file information.
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | The key of the published component (from figma_file_components_list) |
figma_file_component_sets_list
Section titled “figma_file_component_sets_list”Returns all published component sets in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_component_set_get
Section titled “figma_component_set_get”Returns metadata for a published component set (a group of related component variants) by its key.
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | The key of the published component set |
figma_team_components_list
Section titled “figma_team_components_list”Returns all published components in a Figma team library, with pagination support.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
page_size | integer | No | Number of components to return per page |
after | integer | No | Cursor for forward pagination |
before | integer | No | Cursor for backward pagination |
figma_team_component_sets_list
Section titled “figma_team_component_sets_list”Returns all published component sets in a Figma team library, with pagination support.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
page_size | integer | No | Number of component sets to return per page |
after | integer | No | Cursor for forward pagination |
before | integer | No | Cursor for backward pagination |
figma_file_styles_list
Section titled “figma_file_styles_list”Returns all published styles in a Figma file, including color, text, effect, and grid styles.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_style_get
Section titled “figma_style_get”Returns metadata for a published style by its key, including name, description, style type, and containing file information.
| Name | Type | Required | Description |
|---|---|---|---|
key | string | Yes | The key of the published style |
figma_team_styles_list
Section titled “figma_team_styles_list”Returns all published styles in a Figma team library, with pagination support.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
page_size | integer | No | Number of styles to return per page |
after | integer | No | Cursor for forward pagination |
before | integer | No | Cursor for backward pagination |
figma_file_variables_local_get
Section titled “figma_file_variables_local_get”Returns all local variables and variable collections defined in a Figma file. Requires the file_variables:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_file_variables_published_get
Section titled “figma_file_variables_published_get”Returns all published variables and variable collections from a Figma file’s library. Requires the file_variables:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
figma_file_variables_update
Section titled “figma_file_variables_update”Creates, updates, or deletes variables and variable collections in a Figma file. Accepts a JSON payload describing the changes. Requires the file_variables:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
variableCollections | array | No | Variable collection changes: create, update, or delete collections |
variableModes | array | No | Variable mode changes: create, update, or delete modes within collections |
variables | array | No | Variable changes: create, update, or delete individual variables |
figma_team_get
Section titled “figma_team_get”Returns metadata about a Figma team, including its name and member count.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
figma_team_projects_list
Section titled “figma_team_projects_list”Returns all projects within a Figma team that the authenticated user has access to.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
figma_project_files_list
Section titled “figma_project_files_list”Returns all files in a Figma project, including file keys, names, thumbnails, and last modified timestamps.
| Name | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | The ID of the Figma project |
branch_data | boolean | No | Whether to include branch metadata for each file |
figma_dev_resources_list
Section titled “figma_dev_resources_list”Returns dev resources (links to external tools like Storybook, Jira, etc.) attached to nodes in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
node_id | string | No | Filter results to dev resources attached to a specific node ID |
figma_dev_resource_create
Section titled “figma_dev_resource_create”Creates a dev resource (external link) attached to a node in a Figma file, such as a link to Storybook, Jira, or documentation.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
node_id | string | Yes | The ID of the node to attach the dev resource to |
name | string | Yes | Display name for the dev resource link |
url | string | Yes | The URL of the external resource |
figma_dev_resource_update
Section titled “figma_dev_resource_update”Updates an existing dev resource attached to a node in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
dev_resource_id | string | Yes | The ID of the dev resource to update |
name | string | No | Updated display name for the dev resource |
url | string | No | Updated URL for the dev resource |
figma_dev_resource_delete
Section titled “figma_dev_resource_delete”Permanently deletes a dev resource from a node in a Figma file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the Figma file |
dev_resource_id | string | Yes | The ID of the dev resource to delete |
figma_webhook_create
Section titled “figma_webhook_create”Creates a new webhook that sends events to the specified endpoint URL when Figma events occur in a team. Requires the webhooks:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team to register the webhook for |
event_type | string | Yes | The event type that triggers the webhook (e.g., FILE_UPDATE, FILE_VERSION_UPDATE, FILE_DELETE, LIBRARY_PUBLISH, FILE_COMMENT) |
endpoint | string | Yes | The HTTPS URL that receives webhook POST requests |
passcode | string | Yes | A secret string included in each webhook payload for request verification |
status | string | No | Webhook status: ACTIVE or PAUSED (default: ACTIVE) |
description | string | No | A human-readable description of the webhook’s purpose |
figma_webhook_get
Section titled “figma_webhook_get”Returns details of a specific Figma webhook by its ID, including event type, endpoint, and status.
| Name | Type | Required | Description |
|---|---|---|---|
webhook_id | string | Yes | The ID of the webhook to retrieve |
figma_webhook_update
Section titled “figma_webhook_update”Updates an existing Figma webhook’s endpoint, passcode, status, or description.
| Name | Type | Required | Description |
|---|---|---|---|
webhook_id | string | Yes | The ID of the webhook to update |
endpoint | string | No | Updated HTTPS URL to receive webhook events |
passcode | string | No | Updated secret for verifying webhook payloads |
status | string | No | Updated status: ACTIVE or PAUSED |
description | string | No | Updated description for the webhook |
figma_webhook_delete
Section titled “figma_webhook_delete”Permanently deletes a Figma webhook. This stops all future event deliveries for this webhook.
| Name | Type | Required | Description |
|---|---|---|---|
webhook_id | string | Yes | The ID of the webhook to delete |
figma_team_webhooks_list
Section titled “figma_team_webhooks_list”Returns all webhooks registered for a Figma team.
| Name | Type | Required | Description |
|---|---|---|---|
team_id | string | Yes | The ID of the Figma team |
figma_webhook_requests_list
Section titled “figma_webhook_requests_list”Returns the delivery history for a webhook, including request payloads, response codes, and timestamps.
| Name | Type | Required | Description |
|---|---|---|---|
webhook_id | string | Yes | The ID of the webhook to fetch request history for |
figma_payments_get
Section titled “figma_payments_get”Returns payment and plan information for a Figma user or resource, including subscription status and plan type.
| Name | Type | Required | Description |
|---|---|---|---|
user_id | string | No | The ID of the user to check payment status for |
community_file_id | string | No | The ID of a community file to check resource payment status |
plugin_id | string | No | The ID of a plugin to check payment status for |
figma_activity_logs_list
Section titled “figma_activity_logs_list”Returns activity log events for an organization. Includes events for file edits, permissions changes, and user actions.
| Name | Type | Required | Description |
|---|---|---|---|
org_id | string | Yes | The ID of the Figma organization |
events | string | No | Comma-separated list of event types to filter by |
start_time | integer | No | Unix timestamp (seconds) for the start of the time range |
end_time | integer | No | Unix timestamp (seconds) for the end of the time range |
limit | integer | No | Number of events to return per page |
next_page | string | No | Pagination cursor returned by the previous response |
figma_library_analytics_component_actions_get
Section titled “figma_library_analytics_component_actions_get”Returns analytics data on component insertion, detachment, and usage actions from a library file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: component or team |
start_date | string | No | Start date for the analytics range (ISO 8601 format, e.g., 2024-01-01) |
end_date | string | No | End date for the analytics range (ISO 8601 format) |
order | string | No | Sort order for results: asc or desc |
cursor | string | No | Pagination cursor for the next page of results |
figma_library_analytics_component_usages_get
Section titled “figma_library_analytics_component_usages_get”Returns a snapshot of how many times each component from a library is used across the organization.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: component or team |
cursor | string | No | Pagination cursor for the next page of results |
figma_library_analytics_style_actions_get
Section titled “figma_library_analytics_style_actions_get”Returns analytics data on style insertion and detachment actions from a library file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: style or team |
start_date | string | No | Start date for the analytics range (ISO 8601 format) |
end_date | string | No | End date for the analytics range (ISO 8601 format) |
order | string | No | Sort order for results: asc or desc |
cursor | string | No | Pagination cursor for the next page of results |
figma_library_analytics_style_usages_get
Section titled “figma_library_analytics_style_usages_get”Returns a snapshot of how many times each style from a library is used across the organization.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: style or team |
cursor | string | No | Pagination cursor for the next page of results |
figma_library_analytics_variable_actions_get
Section titled “figma_library_analytics_variable_actions_get”Returns analytics data on variable actions from a library file.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: variable or team |
start_date | string | No | Start date for the analytics range (ISO 8601 format) |
end_date | string | No | End date for the analytics range (ISO 8601 format) |
order | string | No | Sort order for results: asc or desc |
cursor | string | No | Pagination cursor for the next page of results |
figma_library_analytics_variable_usages_get
Section titled “figma_library_analytics_variable_usages_get”Returns a snapshot of how many times each variable from a library is used across the organization.
| Name | Type | Required | Description |
|---|---|---|---|
file_key | string | Yes | The unique key identifying the library file |
group_by | string | Yes | Dimension to group results by: variable or team |
cursor | string | No | Pagination cursor for the next page of results |