# Get account dashboard consumption statistics

Get account dashboard consumption statistics. Returns data visible to the current account.

## Endpoint and authentication

`GET https://api.tu-zi.com/api/data/dashboard_consumption_stats`

Transport: json

Use an account system token and New-Api-User (account ID), or a valid site login session. Manage system tokens in account settings. Inference API keys are not substitutes.

```http
Authorization: Bearer YOUR_SYSTEM_TOKEN
New-Api-User: YOUR_USER_ID
```

## Query parameters

| Field | Type | Required | Description / constraints |
| --- | --- | --- | --- |
| start_time | integer | Yes | Start time in Unix seconds. Example: 1793491200 |
| end_time | integer | Yes | End time in Unix seconds, after the start. Example: 1793577600 |
| interval_seconds | integer | No | Aggregation interval in seconds; 0 uses server aggregation behavior. Values: 0, 300, 600, 900, 1800, 3600, 18000, 36000, 43200, 86400, 604800 Example: 3600 |
| self | boolean | No | Use true to force the current account, including when using an admin credential. Example: true |

## Before running

Replace https://api.tu-zi.com with this site origin (do not append /v1 twice), and YOUR_MODEL with the exact marketplace model ID. Install requests for Python; use Node.js 20+ and save JavaScript as .mjs. WebSocket samples list their own dependencies.

Set SYSTEM_TOKEN and USER_ID in the environment; keep system tokens out of frontend code. Replace YOUR_SYSTEM_TOKEN and YOUR_USER_ID in cURL.

Start with a minimal request, then read the result using the response fields below. For async APIs, a returned task ID requires polling; acceptance does not mean generation has finished.

## Code examples

### curl

```bash
curl --request GET 'https://api.tu-zi.com/api/data/dashboard_consumption_stats?start_time=1793491200&end_time=1793577600&interval_seconds=3600&self=true' \
  --header 'Authorization: Bearer YOUR_SYSTEM_TOKEN' \
  --header 'New-Api-User: YOUR_USER_ID'
```

### python

```python
import json
import os
import requests

url = "https://api.tu-zi.com/api/data/dashboard_consumption_stats?start_time=1793491200&end_time=1793577600&interval_seconds=3600&self=true"
headers = json.loads("{\"Authorization\":\"Bearer YOUR_SYSTEM_TOKEN\",\"New-Api-User\":\"YOUR_USER_ID\"}")
headers["Authorization"] = "Bearer " + os.environ["SYSTEM_TOKEN"]
headers["New-Api-User"] = os.environ["USER_ID"]
response = requests.request("GET", url, headers=headers, timeout=120)
response.raise_for_status()
result = response.json()
if isinstance(result, dict) and (result.get("success") is False or result.get("error")):
    raise RuntimeError(json.dumps(result, ensure_ascii=False))
print(result)  # Also inspect protocol-specific status/code fields.
```

### javascript

```javascript
// Node.js 20+
const url = "https://api.tu-zi.com/api/data/dashboard_consumption_stats?start_time=1793491200&end_time=1793577600&interval_seconds=3600&self=true";
const headers = {
  "Authorization": "Bearer YOUR_SYSTEM_TOKEN",
  "New-Api-User": "YOUR_USER_ID"
};
headers.Authorization = 'Bearer ' + process.env.SYSTEM_TOKEN;
headers['New-Api-User'] = process.env.USER_ID;
const response = await fetch(url, { method: "GET", headers });
if (!response.ok) throw new Error(await response.text());
const result = await response.json();
if (result?.success === false || result?.error) throw new Error(JSON.stringify(result));
console.log(result); // Also inspect protocol-specific status/code fields.
```

## Response fields

| Field | Type | Description / constraints |
| --- | --- | --- |
| success | boolean | Business success; do not rely only on HTTP status. |
| message | string | Result or error message. |
| data.chart | array \| null | Chart rows, possibly empty or null. |
| data.table | array \| null | Table rows, possibly empty or null. |
| data.chart[].bucket_start | integer | Bucket start in Unix seconds. |
| data.table[].bucket_start | integer | Bucket start in Unix seconds. |
| data.chart[].bucket_end | integer | Bucket end in Unix seconds. |
| data.table[].bucket_end | integer | Bucket end in Unix seconds. |
| data.chart[].model_name | string | Model name. |
| data.table[].model_name | string | Model name. |
| data.chart[].user_id | integer | Account ID. |
| data.table[].user_id | integer | Account ID. |
| data.chart[].call_count | integer | Call count. |
| data.table[].call_count | integer | Call count. |
| data.chart[].prompt_tokens | integer | Input tokens. |
| data.table[].prompt_tokens | integer | Input tokens. |
| data.chart[].completion_tokens | integer | Output tokens. |
| data.table[].completion_tokens | integer | Output tokens. |
| data.chart[].total_tokens | integer | Total tokens. |
| data.table[].total_tokens | integer | Total tokens. |
| data.chart[].quota | integer | Consumed quota in internal units. |
| data.table[].quota | integer | Consumed quota in internal units. |
| data.chart[].amount | number | Amount converted using site quota settings. |
| data.table[].amount | number | Amount converted using site quota settings. |
| data.generated_at | integer | Result generation time in Unix seconds. |
| data.start_time | integer | Start time. |
| data.end_time | integer | End time. |
| data.interval_seconds | integer | Effective interval. |
| data.table[].source | string | usage, mj or task. |

Illustrative response; some endpoints show essential fields only. Optional fields may be absent.

```json
{
  "success": true,
  "data": {
    "chart": [],
    "table": [],
    "generated_at": 1793577600,
    "start_time": 1793491200,
    "end_time": 1793577600,
    "interval_seconds": 3600
  }
}
```

## Errors and retries

Check HTTP status and success. Business validation errors may return HTTP 200 with {"success":false,"message":"..."}; some include error.code. Authentication may return 401/403 and rate limiting 429. HTTP 200 alone does not guarantee success.

Use bounded exponential backoff for reads. Do not blindly retry task creation, generation, or key mutations, to avoid duplicate billing or execution.

## Constraints

Start must be nonnegative, end must be later, and the range must not exceed 31 days. Default interval is 3600 seconds. Ordinary users are scoped to self; admins should explicitly use self=true.

## Documentation source

Definition version: 1

Reviewed: 2026-11-02

Source: https://api.tu-zi.com/en/docs/api/reference-usage-dashboard-stats

This export contains documentation and examples only, without real credentials, account data or user requests.
