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

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

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

GET
/api/v1/account/usage/records

Для пользователей из материкового Китая: используйте 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[].idstring

ID записи журнала потребления. Возвращается как десятичная строка ID.

data.items[].created_atstring | null

Время создания. Время в RFC 3339 с часовым поясом. null, если значение неизвестно или неприменимо.

data.items[].api_key_idstring | null

ID связанного ключа модели; null без связи.

data.items[].key_namestring | null

Имя API-ключа, записанное в журнале. null, если значение неизвестно или неприменимо.

data.items[].modelstring

Идентификатор модели.

data.items[].task_idstring | null

ID связанной задачи платформы. 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 | null

ID трассировки исходной генерации на платформе. 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"
    }
  }
}