Skip to content

日志查询与导出

查询调用日志

你可以通过日志接口查看每次请求的模型、耗时、Token 消耗和状态码,用于排查线上问题或复盘使用情况。

http
GET /api/log/self?start_timestamp=1711929600&end_timestamp=1713830400

按日查看用量

按日用量接口适合对接内部报表、财务对账或客户自助账单系统。接口按日期汇总成功消费和退款记录,返回请求数、Token 用量、原始额度 quota,以及按当前站点额度展示配置换算后的金额字段。

接口信息

http
GET /api/usage/daily
Authorization: Bearer YOUR_BILLING_READ_TOKEN

鉴权方式

推荐对外接入使用账单只读令牌,令牌格式为 bill-...。用户可在控制台「个人设置」的「安全设置」中生成或重置账单只读令牌。一个用户只有一个账单只读令牌,重置后旧令牌立即失效。

账单只读令牌只能查询账单数据,不能调用 /v1/models/v1/chat/completions 等模型接口。

也支持使用普通 API Key 查询当前 API Key 自己的日用量:

http
GET /api/usage/daily?start_timestamp=1711929600&end_timestamp=1713830400&timezone_offset=28800
Authorization: Bearer YOUR_API_KEY

使用账单只读令牌查询用户整体日账单:

http
GET /api/usage/daily?scope=user&start_timestamp=1711929600&end_timestamp=1713830400&timezone_offset=28800
Authorization: Bearer YOUR_BILLING_READ_TOKEN

使用账单只读令牌查询用户下某个 API Key 的日账单:

http
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_timestampinteger开始时间,秒级 Unix 时间戳;不传时默认最近 30 天
end_timestampinteger结束时间,秒级 Unix 时间戳;不传时默认当前时间
timezone_offsetinteger日期分桶使用的时区偏移秒数,例如北京时间为 28800;允许范围为 -5040050400
scopestring查询范围,支持 usertoken;账单只读令牌默认是 user,普通 API Key 只能使用 token
token_idinteger查询某个 API Key 的日账单。使用账单只读令牌且 scope=token 时必填,且必须属于当前用户
model_namestring按模型过滤,例如 gpt-4o-mini
group_by_modelboolean设为 true 时按日期和模型拆分明细行;支持 true1yes

单次查询时间跨度不能超过 366 天。

响应示例

json
{
  "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

json
{
  "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当前站点展示币种或额度单位,例如 USDCNYTOKENS
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_usedprompt_tokens + completion_tokens
quota平台原始额度用量净值,消费为正,退款为负
billing_amount按当前站点额度展示配置换算后的金额或额度值
billing_currency当前明细行的币种或额度单位

金额换算

quota 是平台内部用于精确计费和对账的原始额度值。对外展示时建议直接使用接口返回的 billing_amountbilling_currency,不要在客户端自行猜测汇率或换算规则。

当站点使用默认 USD 展示时:

text
billing_amount = quota / quota_per_unit

例如 quota_per_unit = 500000,则 21301158 quota = 42.602316 USD

如果站点配置为人民币、自定义币种或 Token 展示,接口会按照服务端当前配置返回对应的 billing_amountbilling_currency

错误响应

json
{
  "success": false,
  "message": "token invalid"
}

常见错误包括:

HTTP 状态码场景
401未提供令牌、令牌无效、令牌已过期、账单只读令牌已被重置
403用户被禁用
500服务端或数据库异常

参数错误也会返回 success=false,例如 start_timestamp 大于 end_timestamp、查询跨度超过 366 天,或 timezone_offset 超出范围。

接入建议

  • 对外账单系统优先使用账单只读令牌,不要使用普通 API Key。
  • 服务端保存令牌时应按密钥处理,不要出现在前端页面源码、日志或公开文档中。
  • 拉取月账单时建议传入明确的 start_timestampend_timestamptimezone_offset,避免自然月边界偏移。
  • 对账时使用 quota 做精确校验,给用户展示时使用 billing_amountbilling_currency

导出用量数据

支持按模型、令牌和时间区间导出 CSV,便于和内部 BI、财务系统对账。日志查询与导出属于控制台管理接口,需要用户登录态;管理员可使用 /api/log//api/log/export 查询或导出全量日志。

http
GET /api/log/self/export?start_timestamp=1711929600&end_timestamp=1713830400

推荐做法

  • 为不同业务线拆分项目和 API Key
  • 定期导出月度用量数据
  • 4295xx 请求单独做告警