按 API Key 查询日志
若接入方只有 API Key、没有控制台登录态,可通过本接口查询当前 Key 自己的调用日志。
接口概览
| 项 | 说明 |
|---|---|
| 方法 | GET |
| 路径 | https://ai.feiluanai.com/api/log/token |
| 鉴权 | Authorization: Bearer sk-... |
| 类型 | 只读,不会修改任何日志数据 |
1. 接口用途
按 API Key 反查本 Key 的历史调用日志,适用于:
- 自动化脚本核对单次请求消耗
- 第三方系统对接时做用量审计
- 仅有
sk-...、无法登录控制台时的自助排查
控制台 用量 / 日志 页面展示的信息更完整;本接口面向 API 集成,且不返回源站、渠道等内部信息。
2. 认证规则
- 必须在请求头携带:
Authorization: Bearer sk-xxxxxx - 服务端从 Token 认证中间件读取当前
token_id,只查询该 Key 自己的日志 - 不支持通过 query 传入
token_id查询其他 Key - 即使 Key 已过期或额度用尽,在兼容接口开启时仍可能允许只读查询(与
/api/usage/token行为一致)
http
Authorization: Bearer sk-xxxxxx3. 查询参数
时间范围
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
start_timestamp | int | 否 | 开始时间(Unix 秒,含) |
end_timestamp | int | 否 | 结束时间(Unix 秒,含) |
created_time_start | int | 否 | start_timestamp 的兼容别名 |
created_time_end | int | 否 | end_timestamp 的兼容别名 |
- 主参数为
start_timestamp/end_timestamp - 若主参数未传,则回退读取
created_time_start/created_time_end - 筛选条件:
created_at >= start且created_at <= end
分页
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
p | int | 否 | 页码,默认 1 |
page_size | int | 否 | 每页条数,默认 10,最大 100 |
ps / size | int | 否 | page_size 的兼容别名 |
排序
默认按 created_at 降序(最新记录在前)。
4. 请求示例
bash
curl -G "https://ai.feiluanai.com/api/log/token" \
-H "Authorization: Bearer sk-xxxxxx" \
--data-urlencode "start_timestamp=1704067200" \
--data-urlencode "end_timestamp=1704153600" \
--data-urlencode "p=1" \
--data-urlencode "page_size=20"5. 响应格式
统一为 success / message / data 结构;data 为分页对象:
json
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 20,
"total": 2,
"items": [
{
"id": 10086,
"created_at": 1704100000,
"type": 2,
"content": "模型倍率 1.00,分组倍率 1.00",
"username": "user_a",
"token_name": "生产环境 Key",
"model_name": "gpt-4.1-mini",
"quota": 1200,
"prompt_tokens": 100,
"completion_tokens": 50,
"use_time": 2,
"is_stream": false,
"token_id": 42,
"request_id": "req_abc123",
"other": {
"model_price": 0,
"group_ratio": 1,
"model_ratio": 1
}
}
]
}
}失败示例
json
{
"success": false,
"message": "无效的令牌"
}6. 返回字段(脱敏后)
顶层日志字段
| 字段 | 说明 |
|---|---|
id | 日志 ID |
created_at | 创建时间(Unix 秒) |
type | 日志类型(如 2 为消费) |
content | 日志摘要文案 |
username | 所属用户名 |
token_name | 当前 Key 的展示名(非源站名、非渠道名) |
model_name | 请求的模型名 |
quota | 本次消耗额度 |
prompt_tokens | 提示 token 数 |
completion_tokens | 补全 token 数 |
use_time | 耗时(秒) |
is_stream | 是否流式 |
token_id | 令牌 ID(与当前 Key 一致) |
request_id | 请求 ID(若有) |
other | 计费扩展信息,仅白名单字段 |
不会返回的字段
以下字段不会出现在响应中(含 other 内同类信息):
channel/channel_name— 渠道信息group/group_name— 分组展示信息upstream_model_name— 上游模型名admin_info— 管理员调试信息stream_status— 流式内部状态request_conversion— 请求转换链claude等内部协议标记- 任何上游来源、渠道来源、内部调试字段
隐私说明
token_name 是你在控制台为 Key 设置的名称,用于区分不同令牌,不是源站或上游提供方的名称。
7. other 计费字段白名单
other 不做整包透传,只保留与计费相关的字段。历史记录若未写入某字段,则不返回、不伪造。
按量计费
| 字段 | 说明 |
|---|---|
model_price | 模型单价 |
group_ratio | 分组倍率 |
model_ratio | 模型倍率 |
按次计费
| 字段 | 说明 |
|---|---|
per_call_billing | 是否按次计费 |
billing_mode | 计费模式 |
视频 / Seedance 类
| 字段 | 说明 |
|---|---|
billing_family | 计费家族(如 video) |
video_pre_consumed_quota | 预扣额度 |
video_actual_quota | 实际结算额度 |
video_final_user_cost | 用户最终费用 |
video_actual_cost_usd | 实际成本(USD) |
video_refund_or_extra_charge | 退补差额 |
video_billing_phase | 计费阶段 |
按次计费响应示例
json
{
"id": 10087,
"created_at": 1704101000,
"type": 2,
"model_name": "nano_banana_2-异步",
"quota": 50000,
"token_name": "绘图 Key",
"other": {
"per_call_billing": true,
"billing_mode": "per_call"
}
}视频计费响应示例
json
{
"id": 10088,
"created_at": 1704102000,
"type": 2,
"model_name": "doubao-seedance-2.0",
"quota": 80000,
"other": {
"billing_family": "video",
"video_pre_consumed_quota": 80000,
"video_actual_quota": 75000,
"video_final_user_cost": 0.12,
"video_actual_cost_usd": 0.015,
"video_refund_or_extra_charge": -5000,
"video_billing_phase": "settled"
}
}8. 与控制台日志的区别
| 对比项 | 控制台用量日志 | GET /api/log/token |
|---|---|---|
| 鉴权 | 登录会话 | API Key |
| 可查范围 | 账户下多 Key | 仅当前 Key |
| 渠道/上游信息 | 管理员可见 | 不返回 |
| 适用场景 | 人工排查 | 程序集成、审计 |