跳转到主内容

速率限制与配额

Creatoria Agent API 文档

#速率限制与配额

Creatoria Agent API 通过多层级速率限制保护服务稳定性。限制基于您的订阅计划,在不同时间窗口内独立计算。

#计划限制

计划每分钟每小时每天
Free601,00010,000
Pro60010,000100,000
Team3,00050,000500,000
Enterprise10,000200,0002,000,000

#限流层级

速率限制分为三个独立层级,任一层级触发即返回 429 错误:

层级范围窗口说明
Level 1API Key1 分钟每个 API Key 的请求频率限制
Level 2组织1 小时组织级别的小时请求总量
Level 3组织24 小时组织级别的日请求总量

#响应头

每个 API 响应都包含速率限制信息:

响应头说明示例
X-RateLimit-Limit当前窗口的请求上限60
X-RateLimit-Remaining当前窗口剩余请求数55
X-RateLimit-Reset窗口重置的 Unix 时间戳1708416060
Retry-After限流后建议等待的秒数45

#限流错误响应

当请求超出限制时,API 返回 429 Too Many Requests

json{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please retry after 45 seconds.",
    "retryAfter": 45
  }
}

#最佳实践

#指数退避重试

javascriptasync function fetchWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After');
      const delay = retryAfter
        ? parseInt(retryAfter) * 1000
        : Math.pow(2, i) * 1000;
      await new Promise(r => setTimeout(r, delay));
      continue;
    }

    return response;
  }
  throw new Error('Max retries exceeded');
}

#请求节流

在客户端实现请求节流,避免短时间内发送大量请求:

javascriptclass RateLimiter {
  constructor(maxPerSecond = 10) {
    this.queue = [];
    this.interval = 1000 / maxPerSecond;
    this.lastCall = 0;
  }

  async throttle() {
    const now = Date.now();
    const wait = Math.max(0, this.lastCall + this.interval - now);
    this.lastCall = now + wait;
    if (wait > 0) {
      await new Promise(r => setTimeout(r, wait));
    }
  }
}

#缓存策略

对于不频繁变更的数据(如 Agent 列表、知识库元数据),建议在客户端缓存响应结果,减少不必要的 API 调用。

#批量操作

尽量使用批量接口而非逐条操作。例如,批量上传文档到知识库时,可以利用导入任务接口一次性处理多个文件。

#Token 配额

除请求频率限制外,还存在基于订阅计划的 Token 用量配额:

指标说明
maxTokensPerDay每日 Token 消耗上限
maxRequestsPerDay每日请求数上限

Token 配额按组织级别统计,所有 API Key 共享配额。