Skip to content

Usage

Query Usage Details

Query token usage records within a specified time range using a Management API Key.

Authentication

Management API Key authentication is required.

Authorization: Bearer <management_api_key>

Request

GET /management/usage

Query Parameters

ParameterTypeRequiredDescription
start_timeint64YesStart time as Unix timestamp
end_timeint64YesEnd time as Unix timestamp
modelstringNoFilter by model
token_idstringNoFilter by token ID
user_idstringNoOrganization admins can filter by member
pageuint64NoDefault is 1
pagesizeuint64NoDefault is 20

Time Range Constraints

  • start_time and end_time must both be greater than 0
  • start_time must be less than end_time
  • A single query cannot exceed a 31-day time range

Request Examples

cURL

curl -X GET "https://portal-api.uuroute.ai/api/v1/portal/management/usage?start_time=1735689600&end_time=1736294400&page=1&pagesize=20" \
  -H "Authorization: Bearer sk_mg_xxxxxxxxxxxxxxxxxx"

JavaScript (Fetch)

const response = await fetch('https://portal-api.uuroute.ai/api/v1/portal/management/usage?start_time=1735689600&end_time=1736294400&page=1&pagesize=20', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer sk_mg_xxxxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log(data);

Python (requests)

import requests

url = "https://portal-api.uuroute.ai/api/v1/portal/management/usage"
params = {
    "start_time": 1735689600,
    "end_time": 1736294400,
    "page": 1,
    "pagesize": 20
}
headers = {
    "Authorization": "Bearer sk_mg_xxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json"
}

response = requests.get(url, params=params, headers=headers)
data = response.json()
print(data)

Response Schema

FieldTypeRequiredDescription
metaobjectYesResponse metadata
meta.codeintegerYesStatus code (0 for success)
meta.messagestringYesResponse message
meta.request_idstringYesRequest identifier
dataobjectYesUsage data
data.listarrayYesUsage records list
data.list[].idstringYesRecord ID
data.list[].request_timeint64YesRequest timestamp
data.list[].user_idstringYesUser ID
data.list[].custom_user_idstringYesCustom user ID
data.list[].token_idstringYesToken ID
data.list[].modelstringYesModel name
data.list[].model_typeintegerYesModel type
data.list[].input_tokenintegerYesInput token count
data.list[].output_tokenintegerYesOutput token count
data.list[].input_pricenumberYesInput price
data.list[].output_pricenumberYesOutput price
data.list[].cached_tokenintegerYesCached token count
data.list[].cached_pricenumberYesCached price
data.list[].total_amountnumberYesTotal amount
data.list[].discount_amountnumberYesDiscount amount
data.list[].amountnumberYesFinal amount
data.list[].channel_idintegerYesChannel ID
data.list[].user_namestringYesUser name
data.totalintegerYesTotal number of records

Response Example

{
  "meta": {
    "code": 0,
    "message": "success",
    "request_id": "xxx"
  },
  "data": {
    "list": [
      {
        "id": "1912345678901234567",
        "request_time": 1710000000,
        "user_id": "10001",
        "custom_user_id": "ext-user-01",
        "token_id": "tk_xxx",
        "model": "gpt-4.1",
        "model_type": 1,
        "input_token": 1024,
        "output_token": 256,
        "input_price": 0.01,
        "output_price": 0.02,
        "cached_token": 0,
        "cached_price": 0,
        "total_amount": 0.03,
        "discount_amount": 0,
        "amount": 0.03,
        "channel_id": 12,
        "user_name": "alice"
      }
    ],
    "total": 1
  }
}

Organization Admin Notes

  • If the API Key belongs to an organization admin context, user_id can be provided to query a specific member.
  • In that case, the server ignores the token_id filter.

Common Errors

ScenarioTypical Error
Missing authentication infounauthorized
Time range exceeds 31 daystime range must not exceed 31 days
  • Overview - Learn about Manager API authentication and basic information
  • API Keys - Manage API Keys
  • Balance - Retrieve current account balance information