Figma integration

Three ways to send from Figma to DesignVault, ordered by how often you'll use them.

1. Import via URL (recommended)

The simplest: copy a Figma frame URL, paste it into the Import Asset modal. Works for any file accessible with your token (PAT or OAuth).

We support /file/, /design/ and /proto/ URL formats, with or without the node-id query param. If node-id is missing, we take the first frame of the first page.

2. Figma plugin

The official DesignVault plugin (available in the Figma Community) lets you batch-upload several frames without leaving Figma. Ideal for designers producing at volume.

Authentication uses an OAuth device-flow: an 8-character code is shown in the plugin, you enter it in DesignVault, and the plugin receives a dedicated API key. No need to copy-paste your Figma token.

3. Programmatic via API

For automations (Zapier, CI scripts, nightly exports), use the POST /api/v1/assets endpoint with a source_url pointing at the Figma frame. The server does the equivalent of a manual import but without a login.

Figma token — PAT vs OAuth

Personal Access Token (PAT)

  • Easiest to set up (one click in Figma → Settings → Personal access tokens)
  • Grants access to everything you can see as a user
  • Recommended for solos and small teams

OAuth

  • Cleaner: limited scope, revocable from Figma
  • Works at the workspace level (useful if the Figma org has a strict policy)
  • Coming soon — we currently support PAT only

Token security

The token is encrypted with AES-256-GCM before storage using a server key (ENCRYPTION_KEY, 32 bytes hex). Never logged, never returned to the client once entered. If you change tokens, the previous one is overwritten immediately.

Figma rate limits

The Figma API has a global per-account limit (~5,000 reads/min). Our own limits are tighter (30 imports/min/user via the Upstash expensive bucket) to avoid draining your Figma quota. If you get a 429, we retry with exponential backoff (1s, 2s, 4s).

Thumbnail refresh

When you open the detail view of a Figma asset, we compare Figma's last_modified with the one we stored at import. If Figma has a newer version, we re-fetch the PNG in the background and update the thumbnail. You always see the latest version with no manual action.

Figma integration — DesignVault Docs