错误码与计费

错误响应格式

所有错误统一为:

{ "error": { "type": "...", "code": "...", "message": "..." } }
HTTPtypecode含义
401auth_errormissing_or_malformed缺少或格式错误的 Authorization 头
401auth_errorinvalid_api_keyKey 无效
401auth_errorkey_revoked_or_disabledKey 已撤销 / 禁用
400invalid_request_errorunknown_model未知模型名
402insufficient_funds_errorstrict_reserve_failedStrict 模式余额不足以预扣本次请求
402insufficient_funds_errorflex_threshold_breachedFlex 模式余额低于阈值
503upstream_unavailableno_route该模型暂无可用上游
503upstream_unavailablecredential_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 对比

FlexStrict
检查时机请求前检查余额是否高于阈值请求前按预估上限预扣
拒绝条件余额低于阈值(默认 $100)余额不足以覆盖预扣金额
结算方式请求结束按实际用量直接扣账请求结束按实际用量结算,多退少补
适用场景余额充足时的常规使用,开销小余额接近耗尽时的兜底,防止透支

余额与充值

余额属于组织级共享余额池,组织内所有成员的 Key 消耗同一份余额。在 /account/billing 可查看当前余额并通过 Stripe 充值。

错误处理建议

错误建议
401 auth_error检查 Key 是否正确、是否已撤销,以及是否通过 Authorization: Bearerx-api-key 头发送。
402 insufficient_funds_error前往 /account/billing 充值。充值到账后立即恢复:Strict 模式只要余额足够覆盖预扣、Flex 模式只要余额回到阈值以上,请求即放行,无需等待模式回切。
503 upstream_unavailable上游暂时不可用,稍后重试或换用其它模型(可调用模型见 /models)。
5xx / 超时失败请求不会扣费,可放心安全重试。