Skip to content
Talk to an Engineer Dashboard

Figma

Connect to Figma to access user files, teams, projects, and design metadata via OAuth 2.0

Connect to Figma to access user files, teams, projects, and design metadata via OAuth 2.0

Figma logo

Supports authentication: OAuth 2.0

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.

  1. Create a Figma connection in Scalekit

    • In Scalekit dashboard, go to Agent AuthCreate Connection. Search for Figma and click Create.

      Search for Figma and create a new connection

    • 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.

      Copy the Redirect URI from the Configure Figma Connection panel

  2. Create an app in the Figma Developers portal

    • Go to the Figma Developers portal and sign in. Click + Create a new app.

      Figma Developers portal showing the My apps list and Create a new app button

    • Fill in your app name and description, then click Save.

  3. 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.

      Figma app OAuth credentials tab showing Client ID, Client Secret, and Redirect URLs

  4. Add credentials in Scalekit

    • In Scalekit dashboard, go to Agent AuthConnections 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 styles
        • file_variables:read — read local and published variables
        • file_variables:write — create, update, and delete variables
        • webhooks:write — create, update, and delete team webhooks

      Scalekit Figma connection with Client ID, Client Secret, and scopes filled in

    • 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 configurations
const identifier = 'user_123'; // your unique user identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentials
const 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 user
const { 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 needed
const me = await actions.request({
connectionName,
identifier,
path: '/v1/me',
method: 'GET',
});
console.log('Authenticated user:', me);
// Example: fetch a file's document tree
const file = await actions.request({
connectionName,
identifier,
path: '/v1/files/YOUR_FILE_KEY',
method: 'GET',
});
console.log('File:', file);

Scalekit tools

Returns activity log events for an organization (Enterprise only). Includes events for file edits, permissions changes, and user actions.

NameTypeRequiredDescription
cursorstringNoCursor from previous response for pagination.
end_timeintegerNoUnix timestamp (seconds) to stop fetching events at.
event_typestringNoFilter by a specific event type, e.g. ‘file.update’.
limitintegerNoMaximum number of events to return (1-1000, default 100).
orderstringNoSort order: asc or desc by timestamp. Default is desc.
start_timeintegerNoUnix timestamp (seconds) to start fetching events from.

Adds an emoji reaction to a comment in a Figma file.

NameTypeRequiredDescription
comment_idstringYesThe ID of the comment to react to.
emojistringYesThe emoji to react with (e.g. ‘:thumbsup:’).
file_keystringYesThe unique key of the Figma file.

Removes the authenticated user’s emoji reaction from a comment in a Figma file.

NameTypeRequiredDescription
comment_idstringYesThe ID of the comment to remove reaction from.
emojistringYesThe emoji reaction to remove (e.g. ‘:thumbsup:’).
file_keystringYesThe unique key of the Figma file.

Returns a list of emoji reactions on a specific comment in a Figma file.

NameTypeRequiredDescription
comment_idstringYesThe ID of the comment to get reactions for.
cursorstringNoPagination cursor for next page of results.
file_keystringYesThe unique key of the Figma file.

Returns metadata for a published component by its key, including name, description, thumbnail, and containing file information.

NameTypeRequiredDescription
keystringYesThe unique key of the component.

Returns metadata for a published component set (a group of related component variants) by its key.

NameTypeRequiredDescription
keystringYesThe unique key of the component set.

Creates a dev resource (external link) attached to a node in a Figma file, such as a link to Storybook, Jira, or documentation.

NameTypeRequiredDescription
file_keystringYesThe key of the Figma file containing the target node.
namestringYesDisplay name for the dev resource link.
node_idstringYesThe ID of the node to attach the dev resource to.
urlstringYesThe URL of the external resource.

Permanently deletes a dev resource from a node in a Figma file.

NameTypeRequiredDescription
dev_resource_idstringYesThe ID of the dev resource to delete.
file_keystringYesThe key of the Figma file containing the dev resource.

Updates an existing dev resource attached to a node in a Figma file.

NameTypeRequiredDescription
dev_resource_idstringYesThe ID of the dev resource to update.
namestringNoNew display name for the dev resource.
urlstringNoNew URL for the dev resource.

Returns dev resources (links to external tools like Storybook, Jira, etc.) attached to nodes in a Figma file.

NameTypeRequiredDescription
file_keystringYesThe key of the Figma file to get dev resources for.
node_idsstringNoComma-separated node IDs to filter by. Omit to return all dev resources in the file.

Posts a new comment on a Figma file. Can be placed at a specific canvas position or anchored to a specific node.

NameTypeRequiredDescription
client_metastringNoJSON string specifying position or node anchor for the comment, e.g. {"node_id":"1:2","node_offset":{"x":0,"y":0}}.
file_keystringYesThe unique key of the Figma file.
messagestringYesThe text content of the comment.

Deletes a specific comment from a Figma file. Only the comment author or file owner can delete a comment.

NameTypeRequiredDescription
comment_idstringYesThe ID of the comment to delete.
file_keystringYesThe unique key of the Figma file.

Returns all comments left on a Figma file, including their text, author, position, and resolved status.

NameTypeRequiredDescription
as_mdbooleanNoIf true, returns comment text as Markdown.
file_keystringYesThe unique key of the Figma file.

Returns all published component sets in a Figma file.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Returns a list of all published components in a Figma file, including their keys, names, descriptions, and thumbnails.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Returns a Figma file’s full document tree including all nodes, components, styles, and metadata.

NameTypeRequiredDescription
depthintegerNoDepth of the document tree to return (1-4). Lower depth returns faster.
file_keystringYesThe unique key of the Figma file (found in the file URL).
versionstringNoA specific version ID to get. Omit to get the current version.

Returns download URLs for all image fills used in a Figma file. Image fills are images that have been applied as fills to nodes.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Renders nodes from a Figma file as images (PNG, JPG, SVG, or PDF) and returns URLs to download them.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.
formatstringNoImage format: jpg, png, svg, or pdf. Default is png.
idsstringYesComma-separated list of node IDs to render.
scalenumberNoImage scale factor (0.01 to 4). Default is 1.
versionstringNoA specific version ID to render from.

Returns specific nodes from a Figma file by their node IDs, along with their children and associated styles and components.

NameTypeRequiredDescription
depthintegerNoDepth of the document tree to return for each node.
file_keystringYesThe unique key of the Figma file.
idsstringYesComma-separated list of node IDs to retrieve.
versionstringNoA specific version ID to fetch nodes from.

Returns all published styles in a Figma file, including color, text, effect, and grid styles.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Returns all local variables and variable collections defined in a Figma file. Requires the variables:read scope.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Returns all published variables and variable collections from a Figma file’s library. Requires the variables:read scope.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.

Creates, updates, or deletes variables and variable collections in a Figma file. Accepts a JSON payload describing the changes. Requires the variables:write scope.

NameTypeRequiredDescription
file_keystringYesThe unique key of the Figma file.
payloadstringYesJSON string with variableCollections, variables, and variableModeValues arrays describing changes to apply.

Returns the version history of a Figma file, including version IDs, labels, descriptions, and creation timestamps.

NameTypeRequiredDescription
afterstringNoReturn versions created after this version ID (for pagination).
beforestringNoReturn versions created before this version ID (for pagination).
file_keystringYesThe unique key of the Figma file.
page_sizeintegerNoNumber of versions to return per page.

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. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
end_datestringNoEnd date for analytics in YYYY-MM-DD format.
file_keystringYesThe key of the library Figma file.
group_bystringYesDimension to group results by: component or team.
start_datestringNoStart date for analytics in YYYY-MM-DD format.

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. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
file_keystringYesThe key of the library Figma file.

Returns analytics data on style insertion and detachment actions from a library file. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
end_datestringNoEnd date for analytics in YYYY-MM-DD format.
file_keystringYesThe key of the library Figma file.
group_bystringYesDimension to group results by: style or team.
start_datestringNoStart date for analytics in YYYY-MM-DD format.

Returns a snapshot of how many times each style from a library is used across the organization. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
file_keystringYesThe key of the library Figma file.

figma_library_analytics_variable_actions_get

Section titled “figma_library_analytics_variable_actions_get”

Returns analytics data on variable actions from a library file. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
end_datestringNoEnd date for analytics in YYYY-MM-DD format.
file_keystringYesThe key of the library Figma file.
group_bystringYesDimension to group results by: variable or team.
start_datestringNoStart date for analytics in YYYY-MM-DD format.

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. Enterprise only.

NameTypeRequiredDescription
cursorstringNoPagination cursor from previous response.
file_keystringYesThe key of the library Figma file.

Returns the authenticated user’s information including name, email, and profile image URL.

Returns payment and plan information for a Figma user or resource, including subscription status and plan type.

NameTypeRequiredDescription
resource_idstringNoThe ID of the plugin or widget resource.
resource_typestringNoThe type of resource: plugin or widget.
user_idstringNoThe ID of the user to get payment info for.

Returns all files in a Figma project, including file keys, names, thumbnails, and last modified timestamps.

NameTypeRequiredDescription
branch_databooleanNoIf true, includes branch metadata for each file.
project_idstringYesThe ID of the Figma project.

Returns metadata for a published style by its key, including name, description, style type, and containing file information.

NameTypeRequiredDescription
keystringYesThe unique key of the style.

Returns all published component sets in a Figma team library, with pagination support.

NameTypeRequiredDescription
afterintegerNoCursor for the next page of results.
beforeintegerNoCursor for the previous page of results.
page_sizeintegerNoNumber of component sets to return per page.
team_idstringYesThe ID of the Figma team.

Returns all published components in a Figma team library, with pagination support.

NameTypeRequiredDescription
afterintegerNoCursor for the next page of results.
beforeintegerNoCursor for the previous page of results.
page_sizeintegerNoNumber of components to return per page.
team_idstringYesThe ID of the Figma team.

Returns metadata about a Figma team, including its name and member count.

NameTypeRequiredDescription
team_idstringYesThe ID of the Figma team.

Returns all projects within a Figma team that the authenticated user has access to.

NameTypeRequiredDescription
team_idstringYesThe ID of the Figma team.

Returns all published styles in a Figma team library, with pagination support.

NameTypeRequiredDescription
afterintegerNoCursor for the next page of results.
beforeintegerNoCursor for the previous page of results.
page_sizeintegerNoNumber of styles to return per page.
team_idstringYesThe ID of the Figma team.

Returns all webhooks registered for a Figma team.

NameTypeRequiredDescription
team_idstringYesThe ID of the Figma team.

Creates a new webhook that sends events to the specified endpoint URL when Figma events occur in a team.

NameTypeRequiredDescription
descriptionstringNoOptional description for the webhook.
endpointstringYesThe HTTPS URL to send webhook payloads to.
event_typestringYesThe event type to subscribe to: FILE_UPDATE, FILE_DELETE, FILE_VERSION_UPDATE, FILE_COMMENT, LIBRARY_PUBLISH.
passcodestringYesA passcode included in the webhook payload for verification.
statusstringNoWebhook status: ACTIVE or PAUSED.
team_idstringYesThe ID of the team to subscribe to events for.

Permanently deletes a Figma webhook. This stops all future event deliveries for this webhook.

NameTypeRequiredDescription
webhook_idstringYesThe ID of the webhook to delete.

Returns details of a specific Figma webhook by its ID, including event type, endpoint, and status.

NameTypeRequiredDescription
webhook_idstringYesThe ID of the webhook.

Returns the delivery history for a webhook, including request payloads, response codes, and timestamps.

NameTypeRequiredDescription
webhook_idstringYesThe ID of the webhook.

Updates an existing Figma webhook’s endpoint, passcode, status, or description.

NameTypeRequiredDescription
descriptionstringNoUpdated description for the webhook.
endpointstringNoNew HTTPS URL to send webhook payloads to.
passcodestringNoNew passcode for webhook verification.
statusstringNoWebhook status: ACTIVE or PAUSED.
webhook_idstringYesThe ID of the webhook to update.