限流、并发与重试
REVOR AI 使用请求频率、活动任务并发和 Credits 三套独立约束。开放 API 与 MCP 共用账户级额度;创建多个 API Key 或改用另一种协议都不会增加可用额度。
每分钟请求额度(RPM)
RPM(Requests Per Minute)按账户、请求类型分别计算,每个类型拥有独立的一分钟窗口。
取消尚未运行的排队任务属于普通读取类控制操作。海关企业名称候选虽然当前不计费,但会启动数据查询,因此仍属于数据任务创建。
账户共享与 API Key 限制
会员 RPM 是账户级上限。同一账户下通过 REST API、Remote MCP 或不同 API Key 发起的调用,都会进入同一个对应类型的额度桶。
API Key 还可以配置独立且更严格的限制。如果账户限制和 Key 限制同时存在,请求必须同时满足两者;Key 限制不能提高会员套餐额度。由管理员设置了更低 Key 限制时,更低的限制会先触发。
活动任务并发
活动任务是处于 queued、scheduled 或 running 状态的异步任务。各类任务分别计算:
达到并发上限时不会创建或计费新任务。等待已有任务进入 succeeded、failed 或 cancelled 后再提交。
RPM、并发和 Credits 的区别
通过其中一项检查不代表可以绕过另外两项。例如,账户仍有 Credits,但数据任务创建 RPM 或活动任务并发已满时,新任务仍会被拒绝。
REST API 限流响应头
REST API 响应可能包含以下 headers。X-RateLimit-* 表示 API Key 级限制,X-User-RateLimit-* 表示账户级会员限制。
未单独配置 Key 限制时,部分 X-RateLimit-* 字段可能不返回;客户端应以实际响应为准。
HTTP 429
触发账户级限流时返回:
JSON{ "ok": false, "error": { "code": "api_rate_limit_exceeded", "message": "api_rate_limit_exceeded", "request_id": "req_xxx", "rate_limit_scope": "user" } }
触发 API Key 级限制时,code 为 api_key_rate_limit_exceeded,rate_limit_scope 为 api_key。
重试建议
- 收到 HTTP
429后,优先按照Retry-After等待,不要立即循环重试。 - 如果没有
Retry-After,从较短等待开始使用指数退避,并加入少量随机抖动。 - 轮询异步任务时通常每 2 至 5 秒查询一次;任务运行时间变长后可逐步降低频率。
- 网络超时后重试创建或外联操作时,复用原来的
Idempotency-Key;新的真实操作必须生成新值。 - MCP 客户端应读取工具错误中提供的重试信息,并避免用 REST 或其他 Key 绕过等待时间。
TypeScriptconst retryAfterSeconds = Number(response.headers.get("Retry-After") || 1) await new Promise((resolve) => setTimeout(resolve, retryAfterSeconds * 1000))
限流用于保护服务稳定性,并不代表任务失败或 Credits 已被扣除。只有业务接口明确返回任务已创建后,才应继续查询任务状态。