| name | figma-cost-tuning |
| description | Optimize Figma API usage to minimize costs and stay within plan limits.
Use when analyzing request volumes, reducing unnecessary API calls,
or choosing the right Figma plan for your integration needs.
Trigger with phrases like "figma cost", "figma pricing",
"reduce figma API calls", "figma plan limits", "figma budget".
|
| allowed-tools | Read, Grep |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","figma"] |
| compatibility | Designed for Claude Code |
Figma Cost Tuning
Overview
Optimize Figma API usage costs. Figma's REST API rate limits are determined by plan tier and seat type. Reducing unnecessary requests keeps you within limits and avoids upgrading prematurely.
Prerequisites
- Working Figma integration with request logging
- Understanding of your current API call volume
- Access to Figma admin settings (for plan details)
Instructions
Step 1: Understand Plan-Based Rate Limits
Figma rate limits vary by plan tier and seat type:
| Plan | Seat Types | Rate Limit Tier | Variables API |
|---|
| Starter (Free) | Free | Lowest | No |
| Professional | Full, Viewer | Standard | No |
| Organization | Full, Collab, Viewer | Higher | No |
| Enterprise | Full, Collab, Viewer | Highest | Yes |
Key facts:
- Rate limits are per-user, per-minute
- View and Collab seats have lower limits than Full seats
- The Variables API (
/v1/files/:key/variables/*) requires Enterprise
- Endpoint tiers (1/2/3) have different quotas within each plan
Step 2: Track API Usage
class FigmaUsageTracker {
private calls: Array<{ endpoint: string; timestamp: number; cached: boolean }> = [];
record(endpoint: string, cached: boolean) {
this.calls.push({ endpoint, : .(), cached });
}
() {
cutoff = .() - windowMs;
recent = ..( c. > cutoff);
byEndpoint = <, { : ; : }>();
( call recent) {
key = call..(, );
entry = byEndpoint.(key) || { : , : };
entry.++;
(call.) entry.++;
byEndpoint.(key, entry);
}
{
: recent.,
: recent.( c.).,
: recent. >
? (recent.( c.). / recent. * ).() +
: ,
: .(byEndpoint),
};
}
}
tracker = ();