> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toapis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 查詢令牌用量

> 查詢名下所有 API Key 的逐請求 Token 消耗與費用

* 查詢名下**所有** API Key 的逐請求 Token 消耗與費用，也可按單個 Key 過濾
* 輸入、輸出、快取命中 Token 分別統計
* 彙總介面按 Key 聚合總量
* 游標分頁，時間窗口最長 31 天

這兩個介面讀取計費日誌，回傳每筆計費請求的 Token 明細與費用，以及按 Key 的彙總。與只能查詢單個 Key 總額度的 [查詢令牌餘額](https://docs.toapis.com/docs/zh-Hant/api-reference/account/token-balance.md) 介面互補。

## 認證方式

**Authorization** `string` *required*

本介面以**使用者帳號**身分認證，不使用 `sk-` API Key。

1. 開啟 [帳戶設定頁](https://toapis.com/dashboard/settings)，在「系統存取令牌」卡片點擊產生，取得存取令牌（不是 `sk-` key）。重新產生會使舊令牌失效。
2. 請求時同時攜帶存取令牌與使用者 ID：

```
Authorization: Bearer YOUR_ACCESS_TOKEN
X-User-Id: YOUR_USER_ID
```

數字形式的使用者 ID 顯示在同一設定頁。

**X-User-Id** `string` *required*

數字形式的使用者 ID，必須與存取令牌一起提供。

## 介面位址

```
GET /api/usage/tokens/requests   # 逐請求明細
GET /api/usage/tokens/summary    # 按 Key 彙總
```

## 查詢參數

兩個介面參數相同。出現未定義或重複的參數會回傳 `422`。

**start\_timestamp** `integer` *required*

時間窗口起點，Unix 秒時間戳（含該時刻）。

**end\_timestamp** `integer` *required*

時間窗口終點，Unix 秒時間戳（不含該時刻）。必須大於 `start_timestamp`，窗口最長 31 天。

**token\_id** `integer`

選填。按數字 ID 過濾為單個 API Key，不傳則包含所有 Key。

**page\_size** `integer` (default: 50)

每頁行數，`1`–`100`。

**cursor** `string`

上一次回應中 `meta.next_cursor` 回傳的分頁游標。僅對產生它的同一介面、同一時間窗口與相同 `token_id` 過濾條件有效。

## 回應說明

`GET /api/usage/tokens/requests` 每筆計費請求回傳一列，按時間倒序排列。

**log\_id** `integer`

請求對應的內部日誌 ID，在回應內唯一。

**created\_at** `integer`

請求計費時間，Unix 秒時間戳。

**token\_id** `integer`

發起請求的 API Key ID。

**token\_name** `string`

API Key 名稱。

**model\_name** `string`

實際服務的模型。

**task\_id** `string`

非同步請求（圖片/影片生成）的任務 ID；同步請求為空。

**prompt\_tokens** `integer`

計費的輸入 Token 數。

**completion\_tokens** `integer`

計費的輸出 Token 數。

**cache\_tokens** `integer | null`

命中的快取輸入 Token 數（快取讀取）。上游未回報時為 `null`。

**cache\_creation\_tokens** `integer | null`

寫入快取的 Token 數，未回報時為 `null`。

**reported\_total\_tokens** `integer | null`

上游服務商回報的總 Token 數（如有）。

**total\_tokens** `integer`

`prompt_tokens + completion_tokens`。

**billing\_phase** `string`

`pre_consumed`、`settled`，或對早期缺少計費元資料的日誌回傳 `unknown`。

**quota** `integer`

消耗的額度，平台內部單位。

**cost\_usd** `string`

折算後的美元費用，計算方式 `quota / quota_per_usd`（見 `meta`）。以字串回傳以保持精度。

`GET /api/usage/tokens/summary` 每個 API Key 回傳一列，按 `token_id` 升序。

**token\_id** `integer`

API Key ID。

**request\_count** `integer`

窗口內計費請求數。

**prompt\_tokens** `integer`

該 Key 的輸入 Token 總量。

**completion\_tokens** `integer`

該 Key 的輸出 Token 總量。

**total\_tokens** `integer`

`prompt_tokens + completion_tokens`。

**quota** `integer`

該 Key 消耗的額度總量。

**cost\_usd** `string`

該 Key 的美元總費用。

### Meta

**meta.has\_more** `boolean`

是否還有下一頁。

**meta.next\_cursor** `string`

作為 `cursor` 參數傳回即可取得下一頁；`has_more` 為 `false` 時為空。

**meta.quota\_per\_usd** `string`

`cost_usd` 折算使用的內部額度/美元比率。

**meta.consume\_logging\_enabled** `boolean`

消費日誌開關是否開啟；關閉時回傳資料可能為空。

**meta.refunds\_included** `boolean`

目前恆為 `false`，退款金額不做扣減。

```bash cURL — 逐請求明細 theme={null}
curl --request GET \
  --url 'https://toapis.com/api/usage/tokens/requests?start_timestamp=1759708800&end_timestamp=1760313600&page_size=100' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'X-User-Id: YOUR_USER_ID'
```

```bash cURL — 按 Key 彙總 theme={null}
curl --request GET \
  --url 'https://toapis.com/api/usage/tokens/summary?start_timestamp=1759708800&end_timestamp=1760313600&token_id=45' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'X-User-Id: YOUR_USER_ID'
```

```python Python — 遍歷全部頁 theme={null}
import requests

API_BASE = 'https://toapis.com'
headers = {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
    'X-User-Id': 'YOUR_USER_ID',
}
params = {
    'start_timestamp': 1759708800,
    'end_timestamp': 1760313600,
    'page_size': 100,
}

while True:
    r = requests.get(f'{API_BASE}/api/usage/tokens/requests',
                     headers=headers, params=params)
    body = r.json()
    for row in body['data']:
        print(row['created_at'], row['token_name'], row['model_name'],
              row['prompt_tokens'], row['completion_tokens'],
              row['cache_tokens'], row['cost_usd'])
    if not body['meta']['has_more']:
        break
    params['cursor'] = body['meta']['next_cursor']
```

```json 200 - requests theme={null}
{
  "success": true,
  "data": [
    {
      "log_id": 10241024,
      "created_at": 1760001234,
      "token_id": 45,
      "token_name": "prod-backend",
      "model_name": "gpt-5.1",
      "task_id": "",
      "prompt_tokens": 148320,
      "completion_tokens": 2198,
      "cache_tokens": 96000,
      "cache_creation_tokens": 0,
      "reported_total_tokens": 150518,
      "total_tokens": 150518,
      "billing_phase": "settled",
      "quota": 7839,
      "cost_usd": "0.015678"
    }
  ],
  "meta": {
    "start_timestamp": 1759708800,
    "end_timestamp": 1760313600,
    "page_size": 100,
    "has_more": true,
    "next_cursor": "eyJraW5kIjoicmVxdWVzdHMiLC4uLn0",
    "cost_basis": "consume_log_quota",
    "currency": "USD",
    "quota_per_usd": "500000",
    "consume_logging_enabled": true,
    "refunds_included": false,
    "total_tokens_basis": "logged_prompt_plus_completion"
  }
}
```

```json 200 - summary theme={null}
{
  "success": true,
  "data": [
    {
      "token_id": 45,
      "request_count": 87,
      "prompt_tokens": 3200400,
      "completion_tokens": 150220,
      "total_tokens": 3350620,
      "quota": 401234,
      "cost_usd": "0.802468"
    }
  ],
  "meta": {
    "start_timestamp": 1759708800,
    "end_timestamp": 1760313600,
    "page_size": 50,
    "has_more": false,
    "next_cursor": "",
    "cost_basis": "consume_log_quota",
    "currency": "USD",
    "quota_per_usd": "500000",
    "consume_logging_enabled": true,
    "refunds_included": false,
    "total_tokens_basis": "logged_prompt_plus_completion"
  }
}
```

```json 401 theme={null}
{
  "success": false,
  "error": {
    "code": "unauthorized",
    "message": "user authentication is required"
  }
}
```

```json 422 theme={null}
{
  "success": false,
  "error": {
    "code": "invalid_query",
    "message": "time range must be positive and no longer than 31 days"
  }
}
```

```json 503 theme={null}
{
  "success": false,
  "error": {
    "code": "query_timeout",
    "message": "usage query exceeded the time limit; use a shorter time range"
  }
}
```

## 注意事項

* 僅列出**已計費**的請求。未計費的失敗請求不會出現在結果中，回應中也不包含逐請求的成功標記。
* 費用按計費時記錄的額度折算，不按目前目錄價重算，且不扣減退款。
* 介面不會暴露原始 Key、渠道、IP 及請求/回應內容。
* `cursor` 與介面、時間窗口、`token_id` 過濾條件綁定，不同查詢之間不能複用。
* 查詢逾時時間較短；如收到 `query_timeout`，請縮短時間窗口後重試。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.