unit 为准,不固定为 USD。| 控制台选项 | 接口中的设置值 | 允许查询的信息 |
|---|---|---|
| 关闭 | off | 不允许通过此 API Key 查询余额或累计消耗 |
| 令牌限额 | token | 当前 API Key 的剩余额度及累计消耗 |
| 用户总额度 | user | 所属账户当前剩余余额,以及当前 API Key 的累计消耗 |
off、token、user 是返回字段的取值,不是调用 /v1/usage 时需要传入的参数。403。{
"success": false,
"message": "该令牌未开启用量查询",
"error": {
"type": "usage_query_disabled",
"message": "该令牌未开启用量查询"
}
}quota。20,剩余额度 80,接口返回的额度汇总为:{
"limit": 100,
"used": 20,
"remaining": 80,
"unit": "CNY"
}limit 按“当前剩余额度 + 当前令牌累计消耗”计算。如果令牌额度曾经调整,不应把这个字段理解为首次创建令牌时填写的原始限额。remaining: 0;quota 对象。remaining: 0 是该查询模式的固定表示方式,不代表账户余额为零,也不代表令牌额度已经耗尽。账户当前剩余余额 = 当前充值余额 + 当前赠送余额| 项目 | 内容 |
|---|---|
| 请求方法 | GET |
| 请求路径 | /v1/usage |
| 完整地址示例 | https://api.example.com/v1/usage |
| 认证方式 | Bearer API Key |
| 路径参数 | 无 |
| Query 参数 | 无 |
| 请求体 | 无 |
| 成功响应类型 | application/json |
| 请求头 | 是否必填 | 示例 | 说明 |
|---|---|---|---|
Authorization | 是 | Bearer sk-your-api-key | 使用需要查询的 API Key 完整值 |
Accept | 否 | application/json | 声明期望返回 JSON |
Authorization 请求头传递 API Key。/v1 结尾:https://api.example.com/v1/usage:https://api.example.com/v1/usagehttps://api.example.com/v1/v1/usage200,JSON 对象直接位于响应根节点,没有统一的 data 包装层。| 字段 | 类型 | 说明 |
|---|---|---|
isValid | boolean | 成功时为 true,表示当前请求通过了用量查询校验 |
status | integer | 令牌当前保存的状态值 |
planName | string | 令牌限额模式下为令牌名称;用户总额度模式下为固定值「钱包余额」 |
mode | string | 兼容字段,取值见下方说明 |
usage_query_mode | string | 当前查询设置:token 或 user |
remaining | number | 按当前设置返回的剩余额度或账户剩余余额;不限额令牌在令牌限额模式下固定为 0 |
unit | string | 平台当前配置的货币或额度单位 |
expires_at | integer | 令牌过期时间,Unix 时间戳,单位为秒;0 表示没有设置过期时间 |
usage | object | 当前 API Key 的累计消耗数据 |
usage.total | object | 累计消耗汇总 |
usage.total.actual_cost | number | 当前 API Key 的累计消耗,单位与根节点 unit 一致 |
| 字段 | 类型 | 出现条件 | 说明 |
|---|---|---|---|
quota | object | token 模式且令牌有限额 | 当前令牌额度汇总 |
quota.limit | number | 存在 quota 时 | 当前剩余额度与当前令牌累计消耗之和 |
quota.used | number | 存在 quota 时 | 当前 API Key 的累计消耗 |
quota.remaining | number | 存在 quota 时 | 当前令牌剩余额度,与根节点 remaining 一致 |
quota.unit | string | 存在 quota 时 | 与根节点 unit 一致 |
balance | number | user 模式 | 账户当前合计剩余余额,与根节点 remaining 一致 |
quota 和 balance 都不是必然存在的字段。未出现时,不应自行补成 0 再据此判断余额状态。mode 与 usage_query_modeusage_query_mode | mode | 实际含义 |
|---|---|---|
token | quota_limited | 使用令牌额度查询规则,可能是有限额令牌,也可能是不限额令牌 |
user | unrestricted | 使用账户钱包余额查询规则 |
mode 判断令牌是否不限额。mode 是兼容字段:quota_limited 不保证一定返回 quota。unrestricted 不表示当前 API Key 的模型调用没有额度限制。usage_query_mode 为 token,并且响应中不存在 quota 对象status | 含义 | 是否允许用量查询 |
|---|---|---|
1 | 已启用 | 开启用量查询且通过其他校验时允许 |
2 | 已禁用 | 不允许,返回 HTTP 401 |
3 | 已过期 | 开启用量查询且通过其他校验时允许只读查询 |
4 | 额度耗尽 | 开启用量查询且通过其他校验时允许只读查询 |
status 是令牌保存的状态字段,本接口不会根据当前时间重新计算并更新该状态。需要判断到期时间时,可以同时读取 expires_at。isValid: true 只表示本次用量查询成功,不保证 当前令牌仍能调用模型。过期、额度耗尽等情况仍可能允许查询。CNY。实际接入请始终读取返回的 unit。20 CNY,剩余 80 CNY:{
"isValid": true,
"status": 1,
"planName": "生产环境调用令牌",
"mode": "quota_limited",
"usage_query_mode": "token",
"remaining": 80,
"unit": "CNY",
"expires_at": 0,
"usage": {
"total": {
"actual_cost": 20
}
},
"quota": {
"limit": 100,
"used": 20,
"remaining": 80,
"unit": "CNY"
}
}已用:20 CNY
剩余:80 CNY20 CNY:{
"isValid": true,
"status": 1,
"planName": "开发测试令牌",
"mode": "quota_limited",
"usage_query_mode": "token",
"remaining": 0,
"unit": "CNY",
"expires_at": 0,
"usage": {
"total": {
"actual_cost": 20
}
}
}已用:20 CNYquota,客户端不应将其显示为“余额耗尽”。80 CNY,赠送余额为 20 CNY,当前 API Key 累计消耗为 12 CNY:{
"isValid": true,
"status": 1,
"planName": "钱包余额",
"mode": "unrestricted",
"usage_query_mode": "user",
"remaining": 100,
"balance": 100,
"unit": "CNY",
"expires_at": 0,
"usage": {
"total": {
"actual_cost": 12
}
}
}当前 API Key 已用:12 CNY
账户剩余:100 CNY100 - 12 = 88。 100 已经是账户当前剩余余额。remaining + actual_cost 也不能作为账户历史总额度,因为两者的统计范围不同。{
"isValid": true,
"status": 4,
"planName": "临时体验令牌",
"mode": "quota_limited",
"usage_query_mode": "token",
"remaining": 0,
"unit": "CNY",
"expires_at": 0,
"usage": {
"total": {
"actual_cost": 10
}
},
"quota": {
"limit": 10,
"used": 10,
"remaining": 0,
"unit": "CNY"
}
}quota,因此可以与不限额令牌区分。已用:10 CNY
剩余:0 CNY| 系统额度显示设置 | unit 示例 | 数值含义 |
|---|---|---|
| 美元 | USD | 已换算为美元 |
| 人民币 | CNY | 已按系统配置换算为人民币 |
| 自定义货币或额度单位 | 如 积分、点 | 已按系统配置换算为相应单位 |
| TOKENS | TOKENS | 平台内部额度计量值,不等同于模型输入、输出 Token 数量 |
unit,不要再应用平台内部额度比例或汇率进行换算。number 返回。0 返回。remaining: 0,且不返回 quota。usage.total.actual_cost| 变量 | 示例值 | 说明 |
|---|---|---|
baseUrl | https://api.example.com | 平台根地址,不包含末尾 /v1 |
apiKey | sk-your-api-key | 完整 API Key |
baseUrl 不包含末尾 /v1。请求方法:GET
请求地址:{{baseUrl}}/v1/usage{{apiKey}}Authorization: Bearer {{apiKey}}
Accept: application/jsonAuthorization。isValid
status
planName
mode
usage_query_mode
remaining
unit
expires_at
usage
usage.total
usage.total.actual_costquota
quota.limit
quota.used
quota.remaining
quota.unit
balancequota 配置为所有成功响应都必填,否则不限额令牌和用户总额度模式会被错误地判定为响应校验失败 。200。usage_query_mode 是否与控制台设置一致。unit 是否符合平台当前单位设置。fetch 的服务端 JavaScript 环境。令牌限额 + 有限额:显示已用和剩余
令牌限额 + 不限额:只显示已用
用户总额度:显示当前 API Key 已用和账户剩余error.message
messageerror.type,也不要假设所有错误都会返回 isValid: false。| HTTP 状态码 | 场景 | 典型信息 | 处理方式 |
|---|---|---|---|
401 | 未提供认证请求头 | 未提供 Authorization 请求头 | 添加 Bearer API Key |
401 | API Key 无效、已删除或不正确 | 无效的令牌 | 检查完整密钥及目标平台 地址 |
401 | 令牌被禁用 | 令牌已禁用 | 通过控制台启用令牌 |
403 | 未开启用量查询 | 该令牌未开启用量查询 | 编辑令牌,开启相应查询模式 |
403 | 来源 IP 不在允许范围内 | 您的 IP 不在令牌允许访问的列表中 | 核对查询服务的出口 IP 和令牌 IP 限制 |
403 | 所属用户已被封禁 | 用户已被封禁 | 联系平台管理员 |
429 | 请求触发平台限流 | 响应体可能为空 | 降低频率并延迟重试 |
500 | 获取用户或账户余额等服务异常 | 如:获取账户余额失败 | 稍后重试,持续失败时联系平台 |
{
"success": false,
"message": "未提供 Authorization 请求头"
}{
"success": false,
"message": "无效的令牌"
}{
"success": false,
"message": "令牌已禁用"
}{
"success": false,
"message": "该令牌未开启用量查询",
"error": {
"type": "usage_query_disabled",
"message": "该令牌未开启用量查询"
}
}{
"success": false,
"message": "您的 IP 不在令牌允许访问的列表中"
}{
"error": {
"type": "api_error",
"message": "获取账户余额失败"
}
}| 展示内容 | 字段 |
|---|---|
| 当前 API Key 累计已用 | usage.total.actual_cost |
| 剩余额度或账户余额 | remaining |
| 单位 | unit |
| 余额范围 | usage_query_mode |
| 是否为令牌不限额场景 | usage_query_mode === "token" 且没有 quota |
remaining === 0
mode === "unrestricted"remaining: 0。mode 是 unrestricted,但其账户余额仍需要展示。401 或 403 时提示用户修正配置,不持续快速重试;429 或暂时性 5xx 时延迟重试,可采用逐步延长间隔的方式;0。remaining: 0,且不返回 quota。客户端应只显示已用,不将其解释为余额耗尽。