计费与限流
本页说明一次请求从发出到结算的扣费过程,以及出错、取消和限流等情况下是否计费。各类模型的单价和计价方式见模型定价。
什么时候扣费
Section titled “什么时候扣费”每次请求都会经过「预扣 → 结算」两步:
- 预扣:请求转发给上游前,先从密钥额度和账户余额中预扣一笔预估费用。任一不足,请求直接被拒绝,不会发往上游。
- 结算:请求完成后,按上游返回的真实用量计算实际费用。多扣的部分退回,少扣的部分补扣。
预估费用的计算方式:
| 模型类型 | 预估方式 |
|---|---|
| 按 token 计费 | 输入 token 数加上请求中的 max_tokens,按模型单价估算 |
| 阶梯价模型 | 按最高一档价格估算,结算时再按实际档位计费 |
| 按次或按张计费 | 直接预扣单次价格 |
| 异步任务(视频、音乐等) | 提交时预扣预估金额,任务结束后结算 |
出错是否计费
Section titled “出错是否计费”原则是:没有产生可计费用量就不计费,预扣金额全额退回。
| 场景 | 是否计费 |
|---|---|
| 密钥无效、过期,或余额、密钥额度不足 | 不计费,请求不会发往上游 |
| 请求参数错误、模型不可用、无可用渠道 | 不计费 |
被限流(429) | 不计费 |
| 上游返回错误(4xx / 5xx) | 不计费,预扣金额全额退回 |
| 上游返回成功,但用量为 0 | 不计费 |
| 流式输出过程中上游中断或超时 | 按已生成的内容计费 |
| 异步任务失败或超时(24 小时未完成) | 不计费,预扣金额全额退回 |
RouteAPI 在上游出错时会自动重试或切换到其他渠道。整个过程只预扣一次、结算一次,失败的尝试不计费,你只为最终成功的那一次付费。如果最终由回退模型完成请求,按实际服务该请求的模型价格计费。
流式请求一旦开始向你输出内容,就不会再重试。此时上游中断,按已生成的部分计费。
手动取消是否计费
Section titled “手动取消是否计费”| 场景 | 是否计费 |
|---|---|
| 非流式请求,在收到响应前断开连接 | 不计费,预扣金额全额退回 |
| 流式请求,在中途断开连接 | 计费,见下方说明 |
| 异步任务(视频、音乐、Midjourney) | 提交后不支持取消 |
流式请求中途断开时,上游通常已经在生成,并会继续生成到结束。RouteAPI 会继续读取上游的输出直到生成结束,并按上游实际生成的用量计费,而不只是你已经收到的部分。想控制这部分费用,请用 max_tokens 限制输出长度。
为保护平台和上游的稳定性,平台可能对每个账户的模型请求频率做限制。限制按账户统计,同一账户下的所有 API 密钥共享额度。
触发限流时返回 429 Too Many Requests,响应体与其他错误格式一致:
{ "error": { "message": "...(request id: ...)", "type": "error", "code": "" }}- 被限流的请求在预扣之前就被拒绝,不计费。
- 上游返回
429时,RouteAPI 会自动切换到其他渠道重试。重试后仍被限流,才会把429返回给你。 - 响应不带
Retry-After头。建议客户端使用指数退避重试,例如 1 秒、2 秒、4 秒,并加上随机抖动。 - 拆分多个 API 密钥不能提高限流额度。如需更高的请求频率,请联系我们。
开放平台 API(/api/open/v1)有单独的限流规则,见开放平台 API 错误与限制。
在使用日志中可以查看每次扣费请求的明细:
| 字段 | 说明 |
|---|---|
| 时间 | 请求时间 |
| 密钥 | 发起请求的 API 密钥名称 |
| 模型 | 实际计费的模型 |
| 用时 / 首字 | 总耗时;流式请求同时显示首字延迟 |
| 输入 | 输入 token 数,命中缓存时单独显示缓存读取和写入 |
| 输出 | 输出 token 数 |
| 花费 | 本次实际扣费金额 |
| 明细 | 单价、倍率和计费过程 |
接口响应的 usage 字段也会返回本次的 token 用量:
| 字段 | 说明 |
|---|---|
prompt_tokens | 输入 token |
completion_tokens | 输出 token,推理模型的推理 token 也计入这里 |
total_tokens | 输入与输出合计 |
prompt_tokens_details.cached_tokens | 命中缓存的输入 token |
如果账户享有专属折扣,日志中的花费已经是折扣后的金额。