A 429 Too Many Requests error normally means “wait a few seconds.” In Figma's current REST API, that mental model can be dangerously incomplete.

For the Tier 1 endpoints that retrieve files, nodes, and rendered images, Figma documents View and Collab seats at up to six requests per month across its plan tiers.

Not six per minute.

Six per month.

Disclosure: I built and sell the Figma to Code extension discussed later in this article. The API limits and platform behavior below are linked to Figma's own documentation; the product section explains where my tool fits and where it does not.

Quick answer

Why is the Figma API returning 429 errors?

Figma's REST allowance depends on three things: the endpoint tier, the user's seat, and the plan that owns the requested file. For Tier 1 file endpoints, a View or Collab seat can be limited to six calls per month, while Dev and Full seats receive per-minute allowances.

If you need a live, automated integration, diagnose the headers, batch requests, cache results, and use the right seat and authentication model. If you only need an authorized static handoff, saving a local .fig copy and converting that snapshot can remove the REST call from the workflow entirely.

6/monthTier 1 maximum documented for View and Collab seats
3 factorsEndpoint tier, user seat, and resource plan determine the allowance
429The status returned when the rate-limit bucket or allowance is exceeded

What Figma actually limits

Figma's updated REST limits have been in effect since November 17, 2025. The important detail is that “the Figma API limit” is not one universal number.

The official rate-limit table calculates access from the endpoint tier, seat type, and the plan containing the file—not simply the plan attached to the token owner's account.

Tier 1 REST limits documented by Figma on August 26, 2026
Tier 1 endpoints Seat Starter Professional Organization Enterprise
GET file
GET file nodes
GET image
View / Collab Up to 6/month Up to 6/month Up to 6/month Up to 6/month
Dev / Full 10/min 15/min 20/min 20/min

Figma presents the Dev/Full values across the table as 10/min for Starter, 15/min for Professional, and 20/min for Organization and Enterprise. It also warns that View/Collab limits are maximums and may be lower under demand.

The file endpoints matter to design-to-code tooling because GET /v1/files/:key returns the document tree and component metadata, while the node and image endpoints retrieve targeted structure or rendered assets.

Do not generalize the headline. This does not mean every Figma user receives only six total API calls, and it does not mean every endpoint uses a monthly quota. The six-per-month figure applies to the documented Tier 1 file endpoints for View and Collab seats.

A retry loop only solves half of a 429

Figma returns a Retry-After header with a 429 response. Respecting that header is the correct way to handle a temporarily full leaky bucket.

But retrying does not change the allowance attached to the endpoint, seat, and resource plan. A perfect exponential-backoff loop cannot turn a monthly View-seat allowance into a Dev-seat per-minute allowance.

Log the diagnostic headers before deciding what to change:

if (response.status === 429) {
  console.error({
    retryAfterSeconds: response.headers.get("retry-after"),
    planTier: response.headers.get("x-figma-plan-tier"),
    rateLimitType: response.headers.get("x-figma-rate-limit-type"),
    upgradeUrl: response.headers.get("x-figma-upgrade-link")
  });
}

The headers tell you whether the response is associated with a low-limit View/Collab seat or a high-limit Dev/Full seat, which plan owns the requested resource, and how long the server wants you to wait.

Fix the API workflow before replacing it

If your product depends on current Figma files, webhooks, comments, versions, or continuous synchronization, the REST API is still the right foundation. Fix its consumption pattern instead of forcing a local export into a job it was not designed to do.

  1. Identify the exact endpoint tier. File content, file metadata, image fills, variables, and comments do not all share the same allowance.
  2. Check the seat and the file's plan. The resource location matters. A Full seat elsewhere does not automatically grant that allowance to a file stored in a Starter plan.
  3. Batch node and image IDs. Figma explicitly recommends combining multiple IDs into one request where the endpoint supports it.
  4. Cache stable results. Reuse a known file version or cached response until the user requests a refresh or the source actually changes.
  5. Honor Retry-After. Retry with a cap and backoff; never hammer the endpoint immediately after a 429.
  6. Use the right authentication model. Figma recommends OAuth for apps acting for users, plan access tokens for organization automation, and personal tokens for individual scripts.

The authentication guide and file-endpoint reference are the sources of truth for those choices.

Choose the handoff, not the fashionable tool

A screenshot, MCP connection, REST integration, and local .fig snapshot solve different problems. The best option is the smallest one that preserves the context your implementation actually needs.

Four design-to-code handoff paths
Workflow Best fit What the agent receives Main trade-off
Screenshot Quick visual reference, critique, or a small isolated screen Pixels and visible copy No component identities, variable names, layout rules, or hidden states
Figma MCP Live files, selected frames, design-system context, and Code Connect mappings Structured context plus a code starting point Needs a supported client, Figma access, authentication, and its own usage allowance
REST API Repeatable applications and automation against current Figma resources JSON nodes, metadata, images, variables, and other endpoint data Requires scoped credentials, quota-aware architecture, caching, and error handling
Local .fig → HTML Authorized static snapshots, client handoffs, archives, and token-free conversion Inspectable HTML/CSS, tokens, assets, and renderer coverage Not live; local copies omit comments/version history, and the proprietary format can change

Use Figma MCP for live context

Figma's remote MCP is link-based; its desktop server can use the current selection. With Code Connect, the context can include mappings to real components in your codebase.

Use REST for a real integration

Choose REST when your software must read current files repeatedly, serve multiple users, react to changes, or feed a durable automation pipeline.

Use a screenshot for speed

A screenshot is enough when the question is visual and small. Do not pretend it carries component semantics or all responsive states.

Use a local snapshot for a fixed handoff

If the authorized input is already a .fig file and the output is a reviewable implementation brief, a local conversion can be simpler than building an API client.

Figma itself is clear that its MCP server supplies structured design input and a starting point; your coding agent produces the final implementation. That distinction matters for every workflow in the table.

The local .fig-to-HTML workflow

A local snapshot is not a back door around Figma permissions. Use it only when the file owner allows copying and you are authorized to handle the design.

  1. Save an authorized local copy. In Figma, choose File → Save local copy. Figma says this is available when the owner has not restricted copying or sharing.
  2. Open the snapshot locally. Load the .fig into a compatible local converter instead of calling a Tier 1 REST endpoint.
  3. Inspect coverage before trusting the preview. Check which nodes were written, expanded, inlined, degraded, or skipped—and why.
  4. Export HTML/CSS as structured context. Use it as an inspectable handoff, not as permission to skip accessibility, responsiveness, state, navigation, or architecture work.
  5. Pair the export with an implementation brief. Tell the coding agent which repository components, tokens, platform constraints, and acceptance checks outrank the visual reference.

My complete local Figma-to-HTML walkthrough shows the Chrome side-panel flow, coverage report, export options, compatibility boundaries, and current editions in detail.

Format warning: Figma documents .fig as a proprietary format that may change and recommends its supported APIs for third-party integrations. A local converter therefore needs active compatibility maintenance; no honest third-party tool can promise permanent support for every future node.

Give the coding agent a contract, not just an export

HTML is richer than a screenshot, but it still cannot infer your product behavior, accessibility contract, analytics, data flow, or native architecture.

Paste a brief like this beside the exported frame:

Task: Implement the Account Summary frame.

Source-of-truth order:
1. Existing app components and design tokens
2. Accessibility, localization, and platform conventions
3. Exported HTML/CSS for hierarchy and visual intent
4. Screenshot for final visual comparison

Constraints:
- Reuse existing components before creating new ones
- Preserve Dynamic Type and VoiceOver behavior
- Keep navigation and async state outside the view
- Treat prices, balances, and account data as synthetic
- Do not copy absolute positioning when adaptive layout is clearer

Before editing:
- Report degraded or skipped design nodes
- List assumptions and affected files

Verification:
- Build the documented scheme
- Run focused tests
- Check compact and large text sizes
- Report what remains unverified

For React or other web stacks, replace the platform-specific constraints with the existing component library, semantic HTML, keyboard navigation, breakpoints, and test commands.

Local does not automatically mean no network

Figma to Code decodes the .fig binary inside a local browser worker and does not upload that file. Two optional font settings define the important privacy boundary.

Confidential-design warning: Google Fonts embedding requests font files from the network. When font subsetting is enabled, the request URL can include the text drawn by the frame—including product names or prices. Disable subsetting for confidential work, or disable font embedding entirely and add approved fonts yourself.

The exported HTML also contains design content, so protect it with the same care as the source file. Do not use employer designs, client work, credentials, financial data, or customer information outside the permissions and storage controls that govern the original project.

A practical decision rule

  • Transient 429 within a per-minute allowance: obey Retry-After, batch, cache, and back off.
  • Tier 1 monthly allowance on View/Collab: reduce calls, change the authorized seat/workflow, or use a fixed local handoff when live access is unnecessary.
  • Live collaborative design with component mappings: use Figma MCP and Code Connect.
  • Multi-user app or continuous automation: use the REST API with OAuth or an appropriate plan token.
  • Authorized static .fig snapshot: use local conversion when inspectable HTML is the required handoff.
  • One quick visual question: use a screenshot and keep the workflow small.

The goal is not to defeat a quota. The goal is to stop paying the setup and reliability cost of a live integration when the job only requires a fixed, authorized snapshot.

Where Figma to Code fits

It is a strong fit when you

  • Already receive authorized local .fig files.
  • Want HTML/CSS and design tokens without an API token.
  • Need renderer coverage before handing context to Claude Code or Cursor.
  • Use Chrome, Edge, Brave, or Arc version 114 or newer.

Skip it when you need

  • Live comments, version history, collaboration, or continuous sync.
  • Access that the file owner has restricted.
  • A Safari or Firefox extension.
  • One-click production SwiftUI, UIKit, Compose, or Android XML with no engineering review.

Sources and verification

Platform and product details were last checked on August 26, 2026. Figma reserves the right to change its limits, so verify the official table when diagnosing a new incident.