错误码与计费
错误响应格式
所有错误统一为:
{ "error": { "type": "...", "code": "...", "message": "..." } }| HTTP | type | code | 含义 |
|---|---|---|---|
| 401 | auth_error | missing_or_malformed | 缺少或格式错误的 Authorization 头 |
| 401 | auth_error | invalid_api_key | Key 无效 |
| 401 | auth_error | key_revoked_or_disabled | Key 已撤销 / 禁用 |
| 400 | invalid_request_error | unknown_model | 未知模型名 |
| 402 | insufficient_funds_error | strict_reserve_failed | Strict 模式余额不足以预扣本次请求 |
| 402 | insufficient_funds_error | flex_threshold_breached | Flex 模式余额低于阈值 |
| 503 | upstream_unavailable | no_route | 该模型暂无可用上游 |
| 503 | upstream_unavailable | credential_error | 上游凭证不可用 |
上游服务自身返回的错误会以 upstream_error 类型透传,不会被网关改写。
402 响应示例
Strict 模式预扣失败时,error 对象内额外带 requiredUsd 字段,表示本次请求需要预留的金额(美元):
{
"error": {
"type": "insufficient_funds_error",
"code": "strict_reserve_failed",
"message": "Insufficient balance to reserve for this request.",
"requiredUsd": 1.25
}
}Flex 模式的 flex_threshold_breached 响应为标准 error 对象,不带额外字段。
计费规则
按 token 计费
每次成功请求按四类 token 分别计费,各模型费率见定价:
| Token 类型 | 说明 |
|---|---|
| 输入(input) | 请求中发送的 prompt token |
| 输出(output) | 模型生成的 token |
| 缓存读(cache read) | 命中 prompt 缓存读取的 token |
| 缓存写(cache write) | 写入 prompt 缓存的 token |
reasoning(thinking)token 计入输出 token,按输出价计费。开启深度思考的请求输出 token 数会显著增加。
不计费的请求
- 失败请求:4xx / 5xx / 超时(网关默认上限 300s)一律不扣费。
POST /v1/messages/count_tokens:token 估算端点,不计费。GET /v1/models:模型列表端点,不计费。
流式中断
流式请求中断时,若已观测到至少一帧输出,则按已观测到的 token 数计费,并在用量记录中标记 estimated。若中断前没有任何输出,按失败请求处理,不扣费。
余额模式
组织有两种计费模式:
- Flex(弹性):余额高于阈值时正常放行,低于阈值(默认 $100)拒绝新请求(402
flex_threshold_breached)。 - Strict(严格):每次请求前按预估上限预扣,余额不足直接拒绝(402
strict_reserve_failed);请求结束按实际用量结算多退少补。
余额跌破阈值会自动从 Flex 切到 Strict;回升到阈值的 1.2 倍以上再切回,避免来回抖动。
Flex vs Strict 对比
| Flex | Strict | |
|---|---|---|
| 检查时机 | 请求前检查余额是否高于阈值 | 请求前按预估上限预扣 |
| 拒绝条件 | 余额低于阈值(默认 $100) | 余额不足以覆盖预扣金额 |
| 结算方式 | 请求结束按实际用量直接扣账 | 请求结束按实际用量结算,多退少补 |
| 适用场景 | 余额充足时的常规使用,开销小 | 余额接近耗尽时的兜底,防止透支 |
余额与充值
余额属于组织级共享余额池,组织内所有成员的 Key 消耗同一份余额。在 /account/billing 可查看当前余额并通过 Stripe 充值。
错误处理建议
| 错误 | 建议 |
|---|---|
401 auth_error | 检查 Key 是否正确、是否已撤销,以及是否通过 Authorization: Bearer 或 x-api-key 头发送。 |
402 insufficient_funds_error | 前往 /account/billing 充值。充值到账后立即恢复:Strict 模式只要余额足够覆盖预扣、Flex 模式只要余额回到阈值以上,请求即放行,无需等待模式回切。 |
503 upstream_unavailable | 上游暂时不可用,稍后重试或换用其它模型(可调用模型见 /models)。 |
| 5xx / 超时 | 失败请求不会扣费,可放心安全重试。 |