用量

每一次调用花了多少 token、缓存有没有命中、余额还剩多少。

响应里报告了什么

每个响应都带一个 usage 块:

"usage": {
  "input_tokens": 24,
  "output_tokens": 4,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 0
}

计费按 input_tokens 与 output_tokens, 缓存 token 单独计价,见下。

流式请求怎么读

流式响应把用量分两处上报:message_start 事件里带输入侧的数字, message_delta 事件里带最终的 output_tokens。 两个都要读,只读其一会漏。

区分缓存命中和缓存写入

在稳定前缀上打一个缓存断点:

"messages": [{"role": "user", "content": [
  {"type": "text", "text": "<你的长而稳定的前缀>",
   "cache_control": {"type": "ephemeral"}},
  {"type": "text", "text": "<变化的部分>"}
]}]

然后读回这两个数:

各模型的计量差异

claude-opus-5 使用与其他六个模型不同的容量,因此计量方式也不同。

它对输入 token 的计数更宽松。英文散文实测约为你预期的 1.67 倍,另外每个请求还有大约 530 token 的固定开销。中文和代码我们测到的单位计数更高, 但还没有定出确切比例,请按至少 1.67 倍估算,并用你自己的真实流量去测。

查询余额

金额统一为美元,保留六位小数,不再换汇。这里的余额与 Console 一致:账户充值减去文字和视频已扣费用,可以为负数。可用余额是余额再减去占款。可用余额不足时,新的付费请求会被拒绝,查询和充值仍可使用。spend_usd 和 balance_usd 从旧版的单密钥统计改为账户统计;limit_usd、key_spend_usd、key_remaining_usd 仍表示当前密钥的额度、已扣费用和未扣占款的剩余额度。密钥额度只限制文字请求,视频使用账户可用余额。未设置有效的文字额度时,limit_usd 和 key_remaining_usd 为 null,仍可正常查询余额。旧版 *_cny 字段和 fx 对象已移除。

curl https://api.nightferry.io/v1/usage -H "x-api-key: $NIGHTFERRY_KEY"

{"currency": "USD", "spend_usd": "0.180000", "balance_usd": "14.650000",
 "text_spend_usd": "0.042697", "video_spend_usd": "0.137303",
 "held_usd": "0.171631", "available_usd": "14.478369",
 "limit_usd": "14.830000", "key_spend_usd": "0.180000",
 "key_remaining_usd": "14.650000", "models": ["..."]}

models 是这个密钥被授权调用的模型清单。 它与我们此刻实际能提供的服务不完全等同 —— 清单上的模型仍可能返回无可用容量错误。

我们不提供什么

/v1/messages/count_tokens 在 Anthropic API 里存在, 但这里不提供。我们不服务该接口,而且我们能返回的数字会忽略你的 tools 和 system 块 —— 在真实的 agent 负载上,误差超过三十倍。 一个看起来对、实际错的数字比没有数字更糟,所以它返回 404。

要在发送前估算 prompt 大小,就把它发出去,然后读回 usage。 失败的请求不计费 —— 见错误。