About Figma
Figma is a collaborative interface-design platform for design files, prototyping, and design systems. Serval connects to Figma in one of two ways: with a Figma OAuth app that you own (recommended), where Serval refreshes the access token itself so nothing expires, or with a personal access token that you paste in and rotate by hand. Either way the connection acts as the Figma user who authorized it, limited by the scopes granted, and Serval only ever sends credentials to one host: api.figma.com. Authentication: Your own Figma OAuth app (authorization code with automatic refresh), or a personal access token (API key). Data sync: On-demand only. There is no background sync, resource import, or scheduled polling - Serval calls Figma only when a workflow or health check runs.What the Figma integration enables
Get your credentials
- Your own Figma OAuth app (recommended)
- Personal access token
Create the app and copy its credentials
Register Serval's callback URL
Select scopes and publish
current_user:read (it names the connection and powers the health check); the defaults also cover file contents, metadata, versions, comments, dev resources, folders (Figma’s new name for projects), libraries, and webhooks. Leave the Enterprise-only scopes (variables, library analytics, and the org scopes) off unless your plan includes them - Figma rejects them at consent otherwise. Scopes you add later take effect only after you publish the app again.Check the published version
Connect in Serval
Add a new Figma connection from your Serval integrations page. The connect dialog offers two options.- Connect with your Figma OAuth app
- Use a personal access token
- Copy the Callback URL into your Figma app if you haven’t already.
- Enter an optional Display name (defaults to
Figma (<email>)with the authorizing user’s email), the Client ID, and the Client secret. - Tick the scopes Serval may request.
current_user:readis always included. Every selected scope must also be enabled on your Figma app. - Click Connect Figma and approve the request on Figma’s consent screen. You have 10 minutes from clicking Connect; after that the attempt fails with “Invalid or expired OAuth state” and you resubmit.
Verifying the connection
Figma connections include the built-in health check Test Figma Connection, which asks Figma which user the connection acts as. It runs automatically when you connect and can be run again from the connection’s page; when Health Alerts are enabled it also runs on the daily schedule.- Success:
Successfully connected to Figma as "<email or handle>". - Failure:
Unable to connect to Figma. The access token may have expired or been revoked, or the OAuth app may have been unpublished; reconnect the integration.
Gotchas and troubleshooting
Figma keeps one access token per app per user
Figma keeps one access token per app per user
Consent fails or the callback is rejected
Consent fails or the callback is rejected
Public Figma apps behave differently
Public Figma apps behave differently
Workflows suddenly fail with an authentication error
Workflows suddenly fail with an authentication error
Variables, activity logs, library analytics, or payments calls fail while file reads work
Variables, activity logs, library analytics, or payments calls fail while file reads work
Calls fail because of a bad file key
Calls fail because of a bad file key
Token connections: the Instance name doubles as the connection's identity
Token connections: the Instance name doubles as the connection's identity
Rate limits look far lower than expected
Rate limits look far lower than expected
Need help? Contact support@serval.com for assistance with your Figma integration.

