Figma
DESIGN · FILES & DOCS
Files, comments, components, and versions the designer can already open.
Connecting Figma in practice
Figma’s rate limit is a function of three things at once — the seat type, which of three endpoint tiers you hit, and the plan the file itself lives in — so the same token is usable on one file and not on another. Figma’s own example: a personal access token reading file content on a Starter plan is "limited to up to 6 per month even if you have a Full seat in a different plan".
Scopes that draw scrutiny
files:readDeprecated, and Figma describes it as an extremely broad legacy scope. The replacement is a dozen narrow scopes such as file_content:read, file_metadata:read and file_versions:read.file_variables:read / file_variables:writeEnterprise only. Variables are the design system’s tokens, so write access here changes every file that consumes them.org:activity_log_readEnterprise only and requires an organization admin: "Read organization activity logs", which is the audit trail of everyone in the org.org:developer_log_read / org:discovery_readEnterprise with the Governance add-on and an organization admin. Developer logs and text event data are the widest observability grants Figma offers.webhooks:writeCreates and manages webhooks, so a token holding it can start streaming file events to an endpoint of its own choosing.
Rate limits
- Limits depend on the user’s seat type (View, Collab, Dev, Full), the endpoint tier, and the plan of the resource being accessed (Starter, Professional, Organization, Enterprise).
- Tier 1 is files and images, tier 2 comments, folders, projects and variables, tier 3 metadata, components, logs and users — tier 1 is the scarcest.
- Figma’s worked example: a personal access token fetching file content on a Starter plan is limited to up to 6 requests per month, regardless of the seat held elsewhere.
- For OAuth apps, limits are tracked per user, per plan, per app, so each app gets its own budget for the same user.
- 429 responses carry Retry-After in seconds and X-Figma-Rate-Limit-Type, which is `low` for Collab and View seats and `high` for Dev and Full.
Who has to approve
The org:* scopes are Enterprise-only and additionally require an organization admin; org:developer_log_read and org:discovery_read also need the Governance add-on. Everything else is authorized by the individual user, and a personal access token is created by that user in their own Security settings.
Worth knowing
- Because the limit follows the resource’s plan, an integration tested against an Enterprise file can become effectively unusable against a client’s Starter file with no code change.
- The legacy scopes files:read, projects:read and project_metadata:read are deprecated in favour of folders:read and folder_metadata:read, so a long-lived app is holding names Figma is moving away from.
- A personal access token has its expiration and its scopes chosen at creation time and is shown exactly once, so rotation is a manual re-authorization rather than an API call.
- X-Figma-Rate-Limit-Type tells you which seat bucket you are in, which is the only way to distinguish "this user is on a cheap seat" from "this app is too busy".
Checked against Figma OAuth scopes (2026-09-29), Figma rate limits (2026-09-29), Figma personal access tokens (2026-09-29), Figma REST API (2026-09-29)
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
Often connected alongside
Put Figma behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.