Получить записи использования
Чтение данных своего аккаунта с системным токеном доступа
Для пользователей из материкового Китая: используйте 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.
Пример запроса
curl --request GET \
--url 'https://toapis.com/api/v1/account/usage/records?from=2026-11-01T00:00:00Z&to=2026-11-02T00:00:00Z&api_key_id=42&limit=20' \
--header 'Authorization: Bearer YOUR_SYSTEM_ACCESS_TOKEN'import requests
response = requests.get(
"https://toapis.com/api/v1/account/usage/records",
headers={"Authorization": "Bearer YOUR_SYSTEM_ACCESS_TOKEN"},
params={
"from": "2026-11-01T00:00:00Z",
"to": "2026-11-02T00:00:00Z",
"api_key_id": "42",
"limit": "20"
},
timeout=30,
)
response.raise_for_status()
print(response.json())const url = new URL("https://toapis.com/api/v1/account/usage/records");
url.search = new URLSearchParams({
"from": "2026-11-01T00:00:00Z",
"to": "2026-11-02T00:00:00Z",
"api_key_id": "42",
"limit": "20"
}).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[].idstringID записи журнала потребления. Возвращается как десятичная строка ID.
data.items[].created_atstring | nullВремя создания. Время в RFC 3339 с часовым поясом. null, если значение неизвестно или неприменимо.
data.items[].api_key_idstring | nullID связанного ключа модели; null без связи.
data.items[].key_namestring | nullИмя API-ключа, записанное в журнале. null, если значение неизвестно или неприменимо.
data.items[].modelstringИдентификатор модели.
data.items[].task_idstring | nullID связанной задачи платформы. null, если значение неизвестно или неприменимо.
data.items[].recorded_cost_usdstringТекущая стоимость журнала в USD, не чистые расходы с полным учетом возвратов. Десятичная строка для сохранения точности.
data.items[].recorded_creditsstringТекущее потребление по журналу в credits. Десятичная строка для сохранения точности.
data.items[].billing_phasestringЭтап начисления в журнале, не окончательное состояние расчета задачи. Значения: pre_consumed, settled, unknown.
data.items[].usageobjectЧисло входных, выходных и заявленных провайдером token.
data.items[].usage.input_tokensintegerЧисло входных token по журналу.
data.items[].usage.output_tokensintegerЧисло выходных token по журналу.
data.items[].usage.reported_total_tokensinteger | nullОбщее число token по данным провайдера; null, если неизвестно, без подстановки суммы входных и выходных.
data.items[].traceobject | nullТрассировка исходной генерации, а не ID текущего запроса. null, если значение неизвестно или неприменимо.
data.items[].trace.request_idstring | nullID трассировки исходной генерации на платформе. null, если значение неизвестно или неприменимо.
data.items[].trace.client_request_idstring | nullКлиентский ID, записанный для исходной генерации. null, если значение неизвестно или неприменимо.
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. Используйте этот коэффициент. Десятичная строка для сохранения точности.
Пример ответа
{
"code": 0,
"message": "",
"data": {
"items": [
{
"id": "9001",
"created_at": "2026-11-01T08:00:00Z",
"api_key_id": "42",
"key_name": "Example Key",
"model": "example-text-model",
"task_id": null,
"recorded_cost_usd": "0.02",
"recorded_credits": "2",
"billing_phase": "settled",
"usage": {
"input_tokens": 1000,
"output_tokens": 200,
"reported_total_tokens": 1200
},
"trace": {
"request_id": "request_example_01",
"client_request_id": "client_example_01"
}
}
],
"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"
}
}
}