Получить сводку использования
Чтение данных своего аккаунта с системным токеном доступа
Для пользователей из материкового Китая: используйте 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"
}
}
}