Public API для биллинга

Запрашивайте баланс аккаунта, использование моделей и расходы из своих биллинговых инструментов

Public API для биллинга позволяет читать данные биллинга Atlas Cloud из скриптов, дашбордов и финансовых систем.

Base URL: https://api.atlascloud.ai/public/v1

Endpoints

EndpointОписание
GET /balanceТекущий баланс аккаунта и сводка кредитов
GET /model-usageДневные buckets использования моделей
GET /model-costsДневные buckets расходов по моделям

Полные схемы запросов и ответов доступны в API reference:

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

Передайте Atlas Cloud API Key в header Authorization:

Authorization: Bearer apikey-...

Создайте ключи в API Keys. Секретный ключ начинается с apikey-.

Некоторые ответы и фильтры используют public ID API Key вида ak_.... Этот ID можно показывать в отчетах, но он не является credential.

Права доступа

/model-usage и /model-costs по умолчанию используют scope=self и возвращают usage, связанный с аутентифицированным пользователем, включая принадлежащие ему API Keys.

Используйте scope=account, чтобы запросить использование и расходы всего аккаунта. Для этого нужна account-level model billing read permission. /balance всегда использует account scope и требует account balance read permission.

Владельцы персональных аккаунтов могут читать свои данные. Для team accounts используйте роль Account Admin или Finance.

Запрос Баланса

curl "https://api.atlascloud.ai/public/v1/balance" \
  -H "Authorization: Bearer apikey-..."

Денежные значения возвращаются строками с шестью знаками после запятой и валютой:

{
  "value": "125.500000",
  "currency": "usd"
}

Параметры Использования и Расходов

start_date и end_date обязательны, задаются в UTC и формате YYYY-MM-DD. end_date эксклюзивен, максимальный диапазон — 180 дней.

Общие query-параметры для /model-usage и /model-costs. Если не передавать group_by[], возвращаются дневные итоги:

ПараметрОписание
start_dateНачальная дата UTC включительно в формате YYYY-MM-DD
end_dateКонечная дата UTC не включается, формат YYYY-MM-DD; диапазон может охватывать максимум 180 дней
scopeself или account; по умолчанию self
group_by[]Необязательная группировка. Поддерживаемые наборы: model_type, model, api_key или model плюс api_key; для разбивки по моделям используйте group_by[]=model
model_types[]Повторяйте с text, image или video
model_ids[]Фильтр по ID моделей; максимум 100 значений
api_key_ids[]Фильтр по public IDs ak_...; максимум 100 значений
limitСтрок на страницу, от 1 до 1000; по умолчанию 100
pageНепрозрачный cursor из next_page

Для массивов используйте повторяющиеся параметры. Значения через запятую отклоняются.

Запрос Использования

Ответ по умолчанию возвращает дневные итоги использования.

curl "https://api.atlascloud.ai/public/v1/model-usage?start_date=2026-05-01&end_date=2026-05-08" \
  -H "Authorization: Bearer apikey-..."

Запрос Расходов

/model-costs принимает тот же диапазон дат, scope, фильтры, группировку и параметры пагинации, что и /model-usage. Если не передавать group_by[], возвращаются дневные итоги расходов.

curl "https://api.atlascloud.ai/public/v1/model-costs?start_date=2026-05-01&end_date=2026-05-08&scope=account&group_by[]=model&group_by[]=api_key" \
  -H "Authorization: Bearer apikey-..."

Пагинация

Когда has_more равно true, передайте next_page без изменений как query-параметр page. Cursor непрозрачен: не декодируйте его и не меняйте остальные параметры.

Ошибки и Лимиты

Ошибки используют стабильный envelope:

{
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_date",
    "message": "start_date must be YYYY-MM-DD",
    "param": "start_date"
  },
  "request_id": "req_..."
}

При rate limit возвращается 429 rate_limit_error; ответ может содержать header Retry-After.