日志查询与导出
查询调用日志
你可以通过日志接口查看每次请求的模型、耗时、Token 消耗和状态码,用于排查线上问题或复盘使用情况。
GET /api/log/self?start_timestamp=1711929600&end_timestamp=1713830400按日查看用量
按日用量接口适合对接内部报表、财务对账或客户自助账单系统。接口按日期汇总成功消费和退款记录,返回请求数、Token 用量、原始额度 quota,以及按当前站点额度展示配置换算后的金额字段。
接口信息
GET /api/usage/daily
Authorization: Bearer YOUR_BILLING_READ_TOKEN鉴权方式
推荐对外接入使用账单只读令牌,令牌格式为 bill-...。用户可在控制台「个人设置」的「安全设置」中生成或重置账单只读令牌。一个用户只有一个账单只读令牌,重置后旧令牌立即失效。
账单只读令牌只能查询账单数据,不能调用 /v1/models、/v1/chat/completions 等模型接口。
也支持使用普通 API Key 查询当前 API Key 自己的日用量:
GET /api/usage/daily?start_timestamp=1711929600&end_timestamp=1713830400&timezone_offset=28800
Authorization: Bearer YOUR_API_KEY使用账单只读令牌查询用户整体日账单:
GET /api/usage/daily?scope=user&start_timestamp=1711929600&end_timestamp=1713830400&timezone_offset=28800
Authorization: Bearer YOUR_BILLING_READ_TOKEN使用账单只读令牌查询用户下某个 API Key 的日账单:
GET /api/usage/daily?scope=token&token_id=28&start_timestamp=1711929600&end_timestamp=1713830400&timezone_offset=28800
Authorization: Bearer YOUR_BILLING_READ_TOKEN请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
start_timestamp | integer | 否 | 开始时间,秒级 Unix 时间戳;不传时默认最近 30 天 |
end_timestamp | integer | 否 | 结束时间,秒级 Unix 时间戳;不传时默认当前时间 |
timezone_offset | integer | 否 | 日期分桶使用的时区偏移秒数,例如北京时间为 28800;允许范围为 -50400 到 50400 |
scope | string | 否 | 查询范围,支持 user 或 token;账单只读令牌默认是 user,普通 API Key 只能使用 token |
token_id | integer | 否 | 查询某个 API Key 的日账单。使用账单只读令牌且 scope=token 时必填,且必须属于当前用户 |
model_name | string | 否 | 按模型过滤,例如 gpt-4o-mini |
group_by_model | boolean | 否 | 设为 true 时按日期和模型拆分明细行;支持 true、1、yes |
单次查询时间跨度不能超过 366 天。
响应示例
{
"success": true,
"message": "",
"data": {
"object": "daily_usage",
"scope": "user",
"user_id": 1,
"token_id": 0,
"start_timestamp": 1711929600,
"end_timestamp": 1713830400,
"timezone_offset": 28800,
"billing_currency": "USD",
"quota_per_unit": 500000,
"data": [
{
"date": "2024-04-01",
"start_timestamp": 1711900800,
"end_timestamp": 1711987199,
"request_count": 10,
"prompt_tokens": 269,
"completion_tokens": 11645,
"token_used": 11914,
"quota": 657472,
"billing_amount": 1.314944,
"billing_currency": "USD"
}
]
}
}如果传入 group_by_model=true,明细行会额外返回 model_name:
{
"date": "2024-04-01",
"model_name": "gpt-4o-mini",
"request_count": 10,
"prompt_tokens": 269,
"completion_tokens": 11645,
"token_used": 11914,
"quota": 657472,
"billing_amount": 1.314944,
"billing_currency": "USD"
}字段说明
| 字段 | 说明 |
|---|---|
success | 请求是否成功 |
data.object | 固定为 daily_usage |
data.scope | 实际查询范围,user 表示用户整体,token 表示单个 API Key |
data.user_id | 当前用户 ID |
data.token_id | 查询单个 API Key 时为对应令牌 ID;用户整体查询时为 0 |
data.billing_currency | 当前站点展示币种或额度单位,例如 USD、CNY、TOKENS |
data.quota_per_unit | 原始 quota 与标准金额单位的换算基数。例如为 500000 时,657472 quota = 1.314944 USD |
data.data | 日账单明细数组 |
date | 账单日期,按 timezone_offset 分桶 |
request_count | 成功消费请求数;退款记录不会增加请求数 |
prompt_tokens | 输入 Token 合计 |
completion_tokens | 输出 Token 合计 |
token_used | prompt_tokens + completion_tokens |
quota | 平台原始额度用量净值,消费为正,退款为负 |
billing_amount | 按当前站点额度展示配置换算后的金额或额度值 |
billing_currency | 当前明细行的币种或额度单位 |
金额换算
quota 是平台内部用于精确计费和对账的原始额度值。对外展示时建议直接使用接口返回的 billing_amount 和 billing_currency,不要在客户端自行猜测汇率或换算规则。
当站点使用默认 USD 展示时:
billing_amount = quota / quota_per_unit例如 quota_per_unit = 500000,则 21301158 quota = 42.602316 USD。
如果站点配置为人民币、自定义币种或 Token 展示,接口会按照服务端当前配置返回对应的 billing_amount 和 billing_currency。
错误响应
{
"success": false,
"message": "token invalid"
}常见错误包括:
| HTTP 状态码 | 场景 |
|---|---|
401 | 未提供令牌、令牌无效、令牌已过期、账单只读令牌已被重置 |
403 | 用户被禁用 |
500 | 服务端或数据库异常 |
参数错误也会返回 success=false,例如 start_timestamp 大于 end_timestamp、查询跨度超过 366 天,或 timezone_offset 超出范围。
接入建议
- 对外账单系统优先使用账单只读令牌,不要使用普通 API Key。
- 服务端保存令牌时应按密钥处理,不要出现在前端页面源码、日志或公开文档中。
- 拉取月账单时建议传入明确的
start_timestamp、end_timestamp和timezone_offset,避免自然月边界偏移。 - 对账时使用
quota做精确校验,给用户展示时使用billing_amount和billing_currency。
导出用量数据
支持按模型、令牌和时间区间导出 CSV,便于和内部 BI、财务系统对账。日志查询与导出属于控制台管理接口,需要用户登录态;管理员可使用 /api/log/ 和 /api/log/export 查询或导出全量日志。
GET /api/log/self/export?start_timestamp=1711929600&end_timestamp=1713830400推荐做法
- 为不同业务线拆分项目和 API Key
- 定期导出月度用量数据
- 对
429和5xx请求单独做告警