ToAPIsToAPIs
Запросы аккаунтаИспользование

Получить сводку использования

Чтение данных своего аккаунта с системным токеном доступа

GET
/api/v1/account/usage/summary

Для пользователей из материкового Китая: используйте https://toapis.cn в качестве эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn во всех примерах этого документа.

Аутентификация, пагинация и ошибки описаны в разделе Начало работы.

Поведение

Максимальный диапазон 31 день. Записи сортируются по времени создания и ID убывающе. Сводка: день по возрастанию, модель по байтам UTF-8 или группа ключей null, затем числовые ID по возрастанию. Каждая группа содержит только соответствующее поле day, model или api_key_id. record_count считает строки, а не полное число запросов. billing_phase: pre_consumed, settled, unknown, это не окончательный расчет задачи. trace относится к исходному запросу. Необязательные трассировки и суммарные token провайдера могут быть null, не обнуляя стоимость и входные/выходные token. records_mutable=true, refund_accounting=not_complete, consistency=eventual. Расчеты и возвраты меняют старые строки; пустой результат не доказывает нулевые расходы. Односторонняя синхронизация не гарантирует получение обновлений.

Аутентификация

Authorizationstringзаголовокобязательно

Используйте Bearer YOUR_SYSTEM_ACCESS_TOKEN. API-ключ модели не подходит. Заголовок X-User-Id не требуется.

Параметры

fromstringзапрособязательно

Начало диапазона включительно, RFC 3339 с часовым поясом. Передавайте вместе с to.

Ограничения: date-time.

tostringзапрособязательно

Конец диапазона не включается, RFC 3339 с часовым поясом. Должен быть позже from.

Ограничения: date-time.

api_key_idstringзапрос

Десятичный строковый ID собственного ключа модели. Чужой ключ возвращает 404. Удаленный ключ позволяет фильтровать собственную историю.

Ограничения: pattern=^[1-9][0-9]*$.

modelstringзапрос

Точное совпадение идентификатора модели. Для использования пустая строка соответствует пустому имени модели.

Ограничения: maxLength=255.

limitintegerзапроспо умолчанию: 50

Максимальное число элементов на странице.

Ограничения: minimum=1; maximum=100; По умолчанию: 50.

cursorstringзапрос

Передавайте предыдущий next_cursor без изменений и сохраняйте фильтры. При изменении условий начните заново.

Ограничения: maxLength=2048.

group_bystringзапроспо умолчанию: day

Группировка по дню, модели или API-ключу.

Ограничения: day, model, api_key; По умолчанию: day.

timezonestringзапроспо умолчанию: UTC

Допустим только при group_by=day. Другие группировки возвращают meta.timezone=null.

Ограничения: UTC, Asia/Shanghai; По умолчанию: UTC.

Пример запроса

curl --request GET \
  --url 'https://toapis.com/api/v1/account/usage/summary?from=2026-11-01T00:00:00Z&to=2026-11-02T00:00:00Z&group_by=day&timezone=UTC' \
  --header 'Authorization: Bearer YOUR_SYSTEM_ACCESS_TOKEN'
import requests

response = requests.get(
    "https://toapis.com/api/v1/account/usage/summary",
    headers={"Authorization": "Bearer YOUR_SYSTEM_ACCESS_TOKEN"},
    params={
        "from": "2026-11-01T00:00:00Z",
        "to": "2026-11-02T00:00:00Z",
        "group_by": "day",
        "timezone": "UTC"
    },
    timeout=30,
)
response.raise_for_status()
print(response.json())
const url = new URL("https://toapis.com/api/v1/account/usage/summary");
url.search = new URLSearchParams({
  "from": "2026-11-01T00:00:00Z",
  "to": "2026-11-02T00:00:00Z",
  "group_by": "day",
  "timezone": "UTC"
}).toString();

const response = await fetch(url, {
  headers: { Authorization: "Bearer YOUR_SYSTEM_ACCESS_TOKEN" },
  signal: AbortSignal.timeout(30_000),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
console.log(await response.json());

Поля ответа

Данные примеров вымышлены и предполагают credits_per_usd="100". Используйте коэффициент из ответа API.

Результаты находятся в data.items. Используйте has_more и next_cursor для пагинации. Последний курсор равен null. Общее число записей не возвращается.

codeinteger

Числовой код результата; 0 означает успех.

messagestring

Сообщение ответа; пустое при успехе. Сообщения об ошибках локализуются.

dataobject

Объект результата текущего запроса.

data.itemsobject[]

Записи текущей страницы; [] при отсутствии результатов.

data.items[].daystring

Дата группы, только при group_by=day, с учетом запрошенного timezone. Формат: YYYY-MM-DD.

data.items[].modelstring

Группа модели, только при group_by=model.

data.items[].api_key_idstring | null

Группа ключа только при group_by=api_key. Записи без ключа относятся к группе null.

data.items[].record_countinteger

Число строк потребления в группе, не гарантированное полное число запросов.

data.items[].recorded_cost_usdstring

Сумма текущих затрат группы в USD, не чистые расходы с полным учетом возвратов. Десятичная строка для сохранения точности.

data.items[].recorded_creditsstring

Сумма текущих credits журнала в группе. Десятичная строка для сохранения точности.

data.items[].input_tokensinteger

Сумма входных token журнала в группе.

data.items[].output_tokensinteger

Сумма выходных token журнала в группе.

data.items[].unknown_phase_record_countinteger

Число строк группы с неизвестным этапом начисления.

data.has_moreboolean

Есть ли следующая страница.

data.next_cursorstring | null

Передавайте без изменений как cursor с теми же фильтрами. На последней странице равен null.

data.metaobject

Метаданные об источнике, диапазоне и принципах учета.

data.meta.scopestring

Область владельца данных: сам аутентифицированный аккаунт. Фиксированное значение: "self".

data.meta.fromstring

Начало временного диапазона включительно. Время в RFC 3339 с часовым поясом.

data.meta.tostring

Конец временного диапазона не включается. Время в RFC 3339 с часовым поясом.

data.meta.time_basisstring

Фильтрация времени и группировка по дате используют время создания записи потребления. Фиксированное значение: "record_created_at".

data.meta.cost_basisstring

Суммы берутся из текущих строк потребления, не из зафиксированного итогового счета. Фиксированное значение: "current_consume_log_amount".

data.meta.refund_accountingstring

Полнота учета возвратов. not_complete означает, что это не полный реестр чистых расходов. Фиксированное значение: "not_complete".

data.meta.records_mutableboolean

Могут ли расчеты и возвраты менять записи. Сейчас true.

data.meta.consistencystring

Модель согласованности. eventual означает, что записи могут обновляться позже. Фиксированное значение: "eventual".

data.meta.consume_logging_enabledboolean

Включен ли журнал потребления. Отсутствие записей не доказывает отсутствие списаний.

data.meta.credits_per_usdstring

Число credits за 1 USD. Используйте этот коэффициент. Десятичная строка для сохранения точности.

data.meta.group_bystring

Измерение группировки текущей сводки.

data.meta.timezonestring | null

Часовой пояс дневной группировки; null при группировке по модели или API-ключу.

Пример ответа

{
  "code": 0,
  "message": "",
  "data": {
    "items": [
      {
        "day": "2026-11-01",
        "record_count": 2,
        "recorded_cost_usd": "0.04",
        "recorded_credits": "4",
        "input_tokens": 2000,
        "output_tokens": 400,
        "unknown_phase_record_count": 0
      }
    ],
    "has_more": false,
    "next_cursor": null,
    "meta": {
      "scope": "self",
      "from": "2026-11-01T00:00:00Z",
      "to": "2026-11-02T00:00:00Z",
      "time_basis": "record_created_at",
      "cost_basis": "current_consume_log_amount",
      "refund_accounting": "not_complete",
      "records_mutable": true,
      "consistency": "eventual",
      "consume_logging_enabled": true,
      "credits_per_usd": "100",
      "group_by": "day",
      "timezone": "UTC"
    }
  }
}