Skip to main content
Figma is a collaborative design platform for interface design (Figma Design), whiteboarding (FigJam), presentations (Slides), websites (Sites) and prototypes (Make). This connector reads your Figma teams through the Figma REST API and brings the projects of each team (with their subfolders), every file inside them, the details of each file (type, creator, last editor, link access), the version history of each file, every comment and reply, and the components, component sets and styles published to each team’s library.
The connector only reads data. It never creates, changes or deletes anything in Figma, and it never downloads the content (layers and frames) of your design files.

Configuring Figma as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Figma option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The connector signs in with a Figma personal access token. The token reads Figma as the person who generated it, so generate it with a user who is a member of every team you want to extract, ideally with a Full or Dev seat (see API Limits & Performance below). To generate a token:
  1. In Figma, open the file browser, click your account menu in the top-left corner and select Settings.
  2. Open the Security tab and, under Personal access tokens, click Generate new token.
  3. Give the token a name (for example “Nekt”), choose an expiration and give it read access to:
    • File metadata
    • File versions
    • File comments
    • Folders (required: without it the sync fails, because Figma would only show the top-level projects and the subfolders would be missing)
    • Projects (used for teams that Figma only lists through its older project routes)
    • Team library content
  4. Click Generate token and copy it: Figma shows it only once.
See Figma’s guide to personal access tokens.
Personal access tokens expire after at most 90 days. Generate a new token and update the source before it expires, or the syncs will stop with an authentication error. On Organization and Enterprise plans an admin can generate a plan access token instead, which is not tied to a person and lasts up to one year; paste it in the same field.
You also need the ID of each team you want to extract. Figma has no way to list your teams through its API, so they must be informed one by one. Open the team page in Figma (click the team name in the left sidebar of the file browser): the team ID is the number that follows /team/ in the page address. For example, in https://www.figma.com/files/181033233908053158/team/1535685101263221741/Design, the team ID is 1535685101263221741. You can also paste the whole address. The following configurations are available:
  • Access Token: The Figma personal access token (or plan access token).
  • Team IDs: The IDs of the Figma teams to extract, one per entry.
  • Start Date (optional): The oldest file version to read in the File Versions stream. The other streams are always read in full.
If you leave the Start Date empty, the first sync reads the whole version history of every file. Figma saves a version about every 30 minutes of editing, so on teams with many or long-lived files this first sync can take many hours (Figma allows only 5 to 100 version requests per minute, depending on the plan). This first sync is all-or-nothing: if it is interrupted, nothing of it is kept and the next sync starts over, so on large teams we recommend setting a Start Date. The same applies to a full sync of File Versions. Later (incremental) syncs only read the new versions.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data, which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data, which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.
Files in a person’s Drafts do not belong to any team, so they are not extracted: move them into a team project to include them. Nested information (comment position and reactions, file branches, a component’s frame) comes as JSON text. Every thumbnail_url is a temporary address signed by Figma, so it stops working after a while.

Fields by stream

Projects and files

Every project (folder) of the configured teams, including subfolders on plans with nested folders. Read in full on every sync.Table: projects · Primary key: id · Sync: Full table
Every file of every project: Figma Design, FigJam, Slides, Sites and Make files. Read in full on every sync.Table: files · Primary key: key · Sync: Full table

File details

Details of every file. One request per file on every sync.Table: file_metadata · Primary key: file_key · Sync: Full table
Version history of every file: the versions people named and the checkpoints Figma saves automatically while a file is edited (about every 30 minutes). Incremental: each sync reads, file by file, only the versions created since the newest one already read (with a one-day margin); a new file is read from the Start Date, or from its first version when the Start Date is empty.Table: file_versions · Primary key: file_key, id · Sync: Incremental (created_at)
Every comment and reply of every file. One request per file on every sync, so resolved, edited and deleted comments are always up to date.Table: file_comments · Primary key: file_key, id · Sync: Full table

Team libraries

Components published to each team’s library. Read in full on every sync.Table: components · Primary key: key · Sync: Full table
Component sets (components with variants) published to each team’s library. Read in full on every sync. Same fields as Components.Table: component_sets · Primary key: key · Sync: Full table
Color (fill), text, effect and grid styles published to each team’s library. Read in full on every sync.Table: styles · Primary key: key · Sync: Full table

Implementation Notes

Data Quality Considerations

  • Subfolders: on teams that Figma only lists through its older project routes, subfolders are not available; the sync log warns when this happens.
  • What the token can see is what you get. The connector reads Figma as the person who generated the token: projects, files and libraries of the configured teams that this person can access. Files in personal Drafts are not part of any team and are not extracted.
  • A full-table stream is never loaded by half: every full-table stream is read completely before anything is loaded, so a sync that fails halfway leaves the previous table in place. If Projects, Files or File Metadata (or File Versions, when its sync type is Full table) come back completely empty after a sync that had records, that stream fails and its table is left as it was.
  • File Versions: the first sync and any full sync are all-or-nothing, like the full-table streams: if one is interrupted, the next sync reads everything again. Once a first sync has succeeded, incremental syncs are saved file by file, and an interrupted incremental sync continues from the files already read. Continuing from where it stopped applies only to these incremental syncs, never to the first sync or a full sync.
  • Files deleted during a sync: a file or project deleted between being listed and being read is left out of that sync with a warning in the sync log. A project is only treated as deleted after the connector checks it again. If too many disappear at once, that stream fails and its table is left as it was.
  • File Versions is incremental per file: a version renamed or re-described long after it was created is only updated by a full sync. On the Starter plan Figma keeps only 30 days of version history, so a full sync of File Versions on Starter replaces the table with the last 30 days only; prefer incremental syncs and avoid Additional Full Sync for this stream on Starter.
  • File content is not extracted: layers, frames, images and exports of the design files are not part of this connector.

API Limits & Performance

  • Figma limits requests per token, per plan and per kind of request, every minute. Listing projects and files, versions and comments are limited to 5 requests per minute on the Starter plan, 25 on Professional, 50 on Organization and 100 on Enterprise; file metadata, components and styles to 10, 50, 100 and 150. A token generated by someone with a View or Collab seat gets much lower limits than a Full or Dev seat. See Figma’s rate limits.
  • The connector reads one request at a time and, when Figma asks it to slow down, waits exactly as long as Figma says and then paces its requests to your plan’s limit for the rest of the sync. The sync log shows when this happens and, for teams with many files, how many files were read and an estimate of the time left.
  • File Metadata, File Versions and File Comments need at least one request per file on every sync. As a reference, on a Professional plan a team with 1,000 files takes more than an hour for versions and comments. For large teams, select only the file streams you need, keep a Start Date for File Versions, and schedule the source accordingly.

Troubleshooting

Skills for agents

Download Figma skills file

Figma connector documentation as plain markdown, for use in AI agent contexts.