Skip to main content

概览

GET /v1/usage 返回调用方自身的消耗情况和限额,无需管理员权限。一次调用即可回答三个问题:
  • 我已经用了多少(请求数、Token 数、预估成本)?
  • 我还剩多少预算,何时重置?
  • 哪些速率限制适用于我,还剩多少余量?
所有数据都限定在调用方生效的用户路径范围内,因此持有托管 API 密钥的工具(例如 OpenCode 插件、CLI 或状态小组件)可以使用其已用于推理的密钥轮询此接口。轮询不会消耗速率限制配额。

快速示例

您看到的是谁的用量

  • 托管 API 密钥:使用该密钥绑定的 user_path。无需任何参数,密钥持有者无法读取其自身子树之外的数据。
  • 主密钥(或不安全模式):传入 X-GoModel-User-Path 来选择路径,省略时查看 /(全部):

响应字段

usage

基于日期窗口内被追踪的请求汇总,Token 和预估成本的语义与控制台相同。如果匹配的请求都没有定价信息,成本字段为 null。如果没有存储后端记录用量(USAGE_ENABLED=false 或未配置数据库),整个块为 null。

budgets

覆盖该路径的每个预算各占一项,包括从祖先路径(例如 /)继承的预算。remaining 可能为负数,usage_ratio 也可能大于 1,两者都表示预算已被超支;exceeded 与实际执行状态一致,当其为 true 时,请求会被拒绝,直到 period_end(period_seconds 为 2592000 是表示自然月的特殊值,而不是字面意义上的 30 天)。resets_in_seconds 以 server_time 为基准倒计时至 period_end,因此可以直接展示,无需担心客户端时钟偏差。

rate_limits

覆盖该路径的每条用户路径速率限制规则的实时计数器。max_tokens/tokens_remaining/tokens_usage_ratio 仅出现在带有 Token 限制的规则上;period_label 为 concurrent 表示并发上限,此时 in_flight 为当前并发数(并用于计算 requests_usage_ratio)。*_usage_ratio 字段为各维度的已用量/限额,不做截断,Token 窗口可能超过 1。当任一维度用尽时,exhausted 为 true;resets_in_seconds 以 server_time 为基准倒计时至 window_end(并发规则没有窗口,因此省略该字段)。提供商和模型作用域的规则不会列出:它们描述的是共享基础设施的容量,而不是调用方。
速率限制计数器保存在每个网关实例的内存中:重启后会重置,如果有 N 个副本,每个副本各自维护计数器。预算才是持久化的、跨实例的数据。

日期窗口

usage 块默认统计最近 30 天(按 UTC 日边界)。可以通过查询参数缩小范围:使用 days,或显式指定 start_date/end_date(YYYY-MM-DD,最长 365 天):
预算和速率限制始终按各自的实时周期报告;日期窗口只影响 usage。

缓存模式

usage 块默认只统计发往提供商的请求,因此与预算和成本保持一致。响应缓存命中同样会被记录,可通过 cache_mode 查看:
将 cached 与默认值对比,是了解缓存吸收了多少流量的最快方式。无法识别的值会回退为 uncached。cache_mode 只影响 usage:预算和速率限制从不统计缓存命中,因为命中既不产生支出,也不消耗配额。

错误

最后修改于 2026年10月24日