#速率限制与配额
Creatoria Agent API 通过多层级速率限制保护服务稳定性。限制基于您的订阅计划,在不同时间窗口内独立计算。
#计划限制
| 计划 | 每分钟 | 每小时 | 每天 |
|---|---|---|---|
| Free | 60 | 1,000 | 10,000 |
| Pro | 600 | 10,000 | 100,000 |
| Team | 3,000 | 50,000 | 500,000 |
| Enterprise | 10,000 | 200,000 | 2,000,000 |
#限流层级
速率限制分为三个独立层级,任一层级触发即返回 429 错误:
| 层级 | 范围 | 窗口 | 说明 |
|---|---|---|---|
| Level 1 | API Key | 1 分钟 | 每个 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 共享配额。