技能 编程开发 Anima API速率限制处理

Anima API速率限制处理

v20260423
anima-rate-limits
本技能用于管理与Anima API的调用速率限制,提供稳定的代码生成能力。它集成了基于`Bottleneck`的限流机制和带指数退避的429错误重试处理,适用于大规模、高频率的组件或设计系统批量生成任务。
获取技能
193 次下载
概览

Anima Rate Limits

Overview

Anima API has per-minute rate limits on code generation. Each generateCode call processes one Figma node through AI — it's compute-intensive and rate-limited accordingly.

Rate Limit Tiers

Tier Generations/min Concurrent Notes
Partner (standard) 10 2 Most common
Enterprise 30 5 Custom agreement

Instructions

Step 1: Throttled Generator with Bottleneck

// src/anima/throttled-generator.ts
import Bottleneck from 'bottleneck';
import { Anima } from '@animaapp/anima-sdk';

const limiter = new Bottleneck({
  maxConcurrent: 2,
  minTime: 6000,          // 10 per minute = 1 every 6 seconds
  reservoir: 10,
  reservoirRefreshInterval: 60000,
  reservoirRefreshAmount: 10,
});

const anima = new Anima({ auth: { token: process.env.ANIMA_TOKEN! } });

async function throttledGenerate(params: any) {
  return limiter.schedule(() => anima.generateCode(params));
}

// Batch generate with automatic throttling
async function batchGenerate(nodeIds: string[], settings: any) {
  const results = [];
  for (const nodeId of nodeIds) {
    const result = await throttledGenerate({
      fileKey: process.env.FIGMA_FILE_KEY!,
      figmaToken: process.env.FIGMA_TOKEN!,
      nodesId: [nodeId],
      settings,
    });
    results.push({ nodeId, files: result.files });
    console.log(`Generated ${nodeId}: ${result.files.length} files`);
  }
  return results;
}

export { throttledGenerate, batchGenerate };

Step 2: 429 Retry Handler

async function generateWithRetry(anima: Anima, params: any, maxRetries = 3) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      return await anima.generateCode(params);
    } catch (err: any) {
      if (err.response?.status !== 429 || attempt === maxRetries) throw err;
      const wait = Math.min(60000, 10000 * attempt); // Wait up to 60s
      console.log(`Rate limited — waiting ${wait / 1000}s`);
      await new Promise(r => setTimeout(r, wait));
    }
  }
}

Output

  • Bottleneck-throttled code generation matching API limits
  • Batch generator for design system-scale operations
  • 429 retry handler with progressive backoff

Resources

Next Steps

For security practices, see anima-security-basics.

信息
Category 编程开发
Name anima-rate-limits
版本 v20260423
大小 2.92KB
更新时间 2026-04-28
语言