Skip to main content

接口概述

日志查询接口返回你账号下每一次 API 调用的明细记录,包括调用的模型、实际扣费、耗时、 是否流式、以及失败时的错误码。 它和余额查询 API 是互补的:余额查询告诉你「现在还剩多少钱」, 日志查询告诉你「钱花在哪了」。 三类典型用途:

自动对账

按时间段、按模型统计实际消费,与自己的业务账单核对

故障自查

查失败请求的错误码,定位是参数问题还是上游问题

报障提工单

拿到 request_id 给客服,能精确定位到那一次调用
控制台也能看日志(「日志」页面)。本接口是同一份数据的程序化入口,适合需要自动化对账、 定时导出、或接入自己监控系统的场景。手动查看请直接用控制台,见 如何查看我的调用记录

如何获取系统令牌

日志接口用系统令牌认证,与 API Key 不是一回事(详见文末注意事项)。
1

访问控制台

访问 api.apiyi.com/account/profile 个人中心页面
2

找到系统令牌

在页面最下方找到「账号选项 - 系统令牌」部分
3

生成 AccessToken

输入当前的账户密码后,会得到一个 AccessToken,该密钥可用于后续接口的查询数据
获取系统令牌

接口信息

请求说明

请求 Headers

查询参数

page_size 的实际上限是 10。page_size=100 也只会返回 10 条 —— 这不是报错, 很容易被误认为「我这段时间只有 10 次调用」。拉取任何有意义的时间段都必须翻页, 翻到返回空数组为止。下方的 Python 与 Node.js 示例已经处理好翻页。

日志类型 type

统计花费时务必带上 type=2 不传 type 会把充值、系统赠送记录一起返回, 这些记录的 quota 虽然是 0,但 model_nametoken_name 也是空的, 直接遍历求和或按模型分组会得到错误结果。

响应说明

成功响应示例

关键响应字段

other 字段存的是一段 JSON 字符串而不是嵌套对象,取用前需要再解析一次 (Python 用 json.loads(),JavaScript 用 JSON.parse())。里面包含 billing_type(计费方式)、request_path(实际调用的端点)、group_ratio(分组倍率)、 model_ratio(模型倍率)、usage(用量明细)等。

额度换算

换算规则

500,000 额度 = $1.00 美金 (USD)
计算公式: 美金金额 = quota ÷ 500,000 示例:
  • quota: 7500 → $0.015 USD
  • quota: 22500 → $0.045 USD
  • quota: 18 → $0.000036 USD
这与余额查询 API 是同一套换算口径,可以直接对齐。

错误响应

HTTP 401 - 认证失败

原因: 系统令牌无效、已过期,或误把 API Key(sk- 开头)当成系统令牌使用。 解决方法: 回控制台重新生成系统令牌,确认 Authorization 里填的是不带 Bearer 前缀的裸值。

代码示例

cURL 示例(单页,快速验证)

必须添加 --compressed 选项,因为 API 返回的是 gzip 压缩内容,否则会得到乱码。
这条命令只能拿到 10 条。真正对账请用下面带翻页的完整版。

Python 示例(带翻页,可直接运行)

输出示例:

Node.js 示例(带翻页)

fetch 会自动处理 gzip 解压,Node.js 侧无需额外配置(Python 的 requests 同理)。 只有 curl 需要显式加 --compressed

典型场景

场景一:统计某段时间的花费

用上面的 Python 示例,关键是type=2 并把 quota 求和后除以 500,000。 如果只想看某个模型,加 model_name 参数即可。

场景二:找出失败的调用

被网关拒绝的请求(参数错误等)quota 为 0,不产生扣费。日志里能看到 error_code, 方便你区分「调用失败了」和「调用成功但结果不满意」。

场景三:报障时提供 request_id

在日志里定位到出问题的那次调用,把 request_id 提供给客服,可以精确查到该次请求的 完整链路。这比描述「大概几点调用 xx 模型失败了」高效得多。

常见问题

page_size 的服务端上限就是 10,传更大的值不会报错但也不会生效。 需要拉更多数据必须翻页(p=0p=1p=2 …),翻到返回空数组为止。 上面的 Python 与 Node.js 示例已经封装好这个逻辑。
不是。部分字段属于平台内部信息,普通账号视角下为空或 0,属正常现象, 不影响对账与排障需要的字段(quotamodel_nameerror_coderequest_id 等都是完整的)。
接口返回的是分组的标识符,控制台显示的是分组的展示名,两者可能不同。 例如接口返回 default,控制台显示「Default」。完整的对应关系可以从公开接口 https://api.apiyi.com/api/pricingusable_group 字段获取,它是一个「标识符 → 展示名」的映射表。如果你要让自己的报表和控制台显示一致, 需要自己做一次映射。
quota 为准。quota 是本次调用实际扣除的额度,是唯一可用于对账的字段。 响应体里的 token 数在部分按次计费的模型(如出图、视频类)上可能是占位值, 不参与计价 —— 这类模型的计价方式在 other.billing_type 里会标为 by_count
通过 start_timestamp / end_timestamp 指定时间范围即可。 具体的历史数据保留期请咨询客服。建议对账数据定期导出留存,不要长期依赖接口回查。
原因: API 返回的是 gzip 压缩内容(Content-Encoding: gzip),curl 没有自动解压。解决方案: 添加 --compressed 选项:
Python 的 requests 与 Node.js 的 fetch 会自动解压,无需额外配置。
不会。日志查询接口不消耗任何配额。

注意事项

系统令牌不是 API Key,两者不能互换
  • API Keysk- 开头)用于 /v1/* 推理端点,拿去调 /api/log/self 会返回 401
  • 系统令牌(一串不带前缀的字符)用于 /api/* 管理端点,拿去调 /v1/chat/completions 会返回 Invalid token
系统令牌的权限范围覆盖整个账号,请像保管账号密码一样保管它:存进密钥管理工具而不是代码, 不要提交进代码仓库,定期轮换。
日志响应里含有你自己的 API Key 明文日志记录会返回发起该次调用的令牌信息。不要把日志的原始响应直接贴到公开场合、 截图发群、或转交给第三方,导出前先剔除敏感字段。特别提醒:这段明文不带 sk- 前缀,常见的密钥扫描工具可能扫不出来, 不要依赖自动化检查兜底。
请求限制
  • 建议查询间隔不少于 1 秒,避免频繁请求触发限流
  • 建议设置合理的请求超时时间(推荐 30 秒)
  • 大范围时间段的拉取请做好翻页与重试处理

相关文档