# 查询消费用量
> 逐条返回每次调用的扣费明细
> 可下钻到模型、Key、请求 ID
> 汇总统计用 `/api/log/self/stat`
`GET /api/log/self`
## 认证
- `Authorization` (string / 必填) — 账户相关接口走 New-API 的管理通道，需要**系统访问令牌**，与调用模型的 API Key 不是一回事。 在控制台「个人设置 → 安全设置 → 系统访问令牌」生成，请求头写成 `Authorization: Bearer YOUR_ACCESS_TOKEN`。
- `New-Api-User` (string / 必填) — 当前登录用户的 ID。值必须与令牌所属用户一致，否则返回 401。
## 查询参数
- `p` (integer / 可选) — 页码，从 `1` 开始。
- `page_size` (integer / 可选) — 每页条数，超过 `100` 会被截为 `100`。
- `type` (integer / 可选) — 日志类型。`1` 充值、`2` 消费、`3` 管理、`4` 系统、`5` 退款。查消费明细传 `2`。
- `start_timestamp` (integer / 可选) — 开始时间，Unix 秒。普通用户的实际可查范围受实例配置限制。
- `end_timestamp` (integer / 可选) — 结束时间，Unix 秒。
- `model_name` (string / 可选) — 按模型名过滤，可下钻到单个模型。
- `token_name` (string / 可选) — 按 Key 名称过滤。
- `group` (string / 可选) — 按分组过滤。
- `request_id` (string / 可选) — 按请求 ID 精确定位一次调用。
## 响应
明细列表，每条记录对应一次调用：
```json
{
  "success": true,
  "message": "",
  "data": [
    {
      "id": 90210,
      "user_id": 1,
      "created_at": 1763088289,
      "type": 2,
      "content": "model=gpt-image-2.5-flare, quota=45000",
      "username": "alice",
      "token_name": "prod-key",
      "model_name": "gpt-image-2.5-flare",
      "quota": 45000,
      "prompt_tokens": 120,
      "completion_tokens": 0,
      "use_time": 42,
      "is_stream": false,
      "channel": 3,
      "token_id": 12,
      "group": "default",
      "ip": "203.0.113.24",
      "request_id": "20261114123abc"
    }
  ]
}
```
- `data[].quota` (integer) — 本次调用的扣费额度。
- `data[].model_name` (string) — 实际使用的模型。
- `data[].prompt_tokens` / `completion_tokens` (integer) — token 用量。
- `data[].use_time` (integer) — 耗时，秒。
- `data[].token_name` (string) — 发起调用的 Key 名称。
- `data[].created_at` (integer) — 发生时间，Unix 秒。
- `data[].request_id` (string) — 请求 ID，排查时用它对齐上游日志。
- `data[].channel` (integer) — 渠道 ID。
> **Note:** 
> `quota` 的换算比例由实例配置决定，New-API 默认 `500000` 额度 = `1` 美元。展示时用 `quota / 500000` 得到美元，具体数值以你所在实例的配置为准。
## 汇总统计
只想看总消耗与速率时用 `GET /api/log/self/stat`，参数与明细接口相同，返回一个汇总对象：
```json
{
  "success": true,
  "message": "",
  "data": {
    "quota": 789500,
    "rpm": 12,
    "tpm": 8400
  }
}
```
- `data.quota` (integer) — 时间窗口内的总扣费额度。
- `data.rpm` (integer) — 该窗口内的每分钟请求数。
- `data.tpm` (integer) — 该窗口内的每分钟 token 数。
## 时间范围说明
两个时间戳都用 Unix 秒（10 位）。普通用户的查询范围上限由实例的「最长日志时间范围」配置决定，默认 365 天；超出范围的请求会被截到允许区间。
日志是逐条明细，数据看板是按时间、模型、用户或渠道聚合后的统计。两者的筛选范围与刷新时机可能不同，新请求先出现在日志里，图表要等聚合后才更新。
## 错误码
| HTTP | 含义 |
|---|---|
| 200 | 请求成功。业务失败时 `success` 为 `false` |
| 401 | 令牌缺失、无效，或 `New-Api-User` 与令牌归属不一致 |
| 403 | 令牌无权访问该接口 |
更多状态码与重试建议见[错误码与限流](../../support/errors.html)，常见报错的排查步骤见[常见问题](../../support/faq.html)。
## 使用示例
### 按天取消费明细
把 `start_timestamp` 与 `end_timestamp` 设成某一天的首尾，再加 `type=2`，就得到当天的全部扣费记录。
### 按模型归因
加 `model_name` 过滤，可以算出单个模型的成本占比。
### 只取总量
换成 `/api/log/self/stat` 只返回一个汇总对象，适合做看板上的数字。
**查询消费用量{Query usage}::cURL**
```
curl --request GET \
  --url 'https://api.oairoute.com/api/log/self?p=1&page_size=20&type=2' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'New-Api-User: YOUR_USER_ID'
```
**查询消费用量{Query usage}::Python**
```
import requests

res = requests.get(
    "https://api.oairoute.com/api/log/self",
    params={"p": 1, "page_size": 20, "type": 2},
    headers={
        "Authorization": "Bearer YOUR_ACCESS_TOKEN",
        "New-Api-User": "YOUR_USER_ID",
    },
)
for row in res.json()["data"]:
    print(row["model_name"], "%.4f 美元" % (row["quota"] / 500000))
```
**查询消费用量{Query usage}::JavaScript**
```
const url = new URL("https://api.oairoute.com/api/log/self");
url.searchParams.set("p", "1");
url.searchParams.set("page_size", "20");
url.searchParams.set("type", "2");

const res = await fetch(url, {
  headers: {
    Authorization: "Bearer YOUR_ACCESS_TOKEN",
    "New-Api-User": "YOUR_USER_ID",
  },
});
const { data } = await res.json();
for (const row of data) {
  console.log(row.model_name, `$${(row.quota / 500000).toFixed(4)}`);
}
```
**200 查询消费用量{Query usage}**
```
{
  "success": true,
  "message": "",
  "data": [
    {
      "id": 90210,
      "user_id": 1,
      "created_at": 1763088289,
      "type": 2,
      "content": "model=gpt-image-2.5-flare, quota=45000",
      "username": "alice",
      "token_name": "prod-key",
      "model_name": "gpt-image-2.5-flare",
      "quota": 45000,
      "prompt_tokens": 120,
      "completion_tokens": 0,
      "use_time": 42,
      "is_stream": false,
      "channel": 3,
      "token_id": 12,
      "group": "default",
      "ip": "203.0.113.24",
      "request_id": "20261114123abc"
    }
  ]
}
```
