Стоимость и статистика API
Итоговое списание, баланс и история использования.
Стоимость в inference-ответе
{
"usage": {
"prompt_tokens": 120,
"completion_tokens": 30,
"total_tokens": 150,
"cost": 0.000123
}
}usage.cost
Успешные Chat Completions, Responses и Messages запросы возвращают итоговую стоимость запроса в USD в числовом поле usage.cost.
В обычном JSON-ответе поле находится в usage; в streaming-ответе оно приходит в финальном usage-событии соответствующего API.
Это итоговое списание CloseRouter после завершения биллинга, а не предварительная оценка или внутренняя цена провайдера.
Получить запрос по request ID
Возьмите request ID из заголовка x-closerouter-request-id inference-ответа и подставьте его в URL. Не используйте для lookup верхнеуровневое поле id из тела ответа.
export REQUEST_ID="00000000-0000-0000-0000-000000000000"
curl https://api.closerouter.dev/v1/requests/$REQUEST_ID \
-H "Authorization: Bearer $CLOSEROUTER_API_KEY"Ответ о стоимости запроса
{
"data": {
"request_id": "00000000-0000-0000-0000-000000000000",
"external_user": null,
"status": "completed",
"model": "openai/gpt-5.4-mini",
"api_type": "chat",
"provider": "Provider 7",
"api_key_id": "11111111-1111-4111-8111-111111111111",
"streaming": false,
"latency_ms": 934,
"usage": {
"prompt_tokens": 120,
"completion_tokens": 30,
"total_tokens": 150,
"cache_creation_tokens": 0,
"cache_read_tokens": 0,
"cost": 0.000123
},
"created_at": "2026-08-21T10:00:00.000Z",
"completed_at": "2026-08-21T10:00:01.000Z"
}
}GET /requests/{request_id}
Endpoint возвращает status, model, api_type, токены, cache-токены, usage.cost и временные метки одного запроса.
Любой активный API-ключ аккаунта может получить запрос, созданный другим ключом того же аккаунта.
Для запроса в обработке usage равен null. Завершённые запросы имеют status completed, partial или failed; partial может содержать стоимость уже переданных данных.
Доступ и детализация
Чужой, отсутствующий или некорректный request ID возвращает 404.
Список последних запросов
Возвращает запросы аккаунта в порядке от новых к старым. limit от 1 до 100 (по умолчанию 20), постраничность через offset, has_more показывает, есть ли ещё страница. Доступны фильтры start_date, end_date, model, status и user.
curl -G https://api.closerouter.dev/v1/requests \
-H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
--data-urlencode "limit=20" \
--data-urlencode "status=failed"Статистика за период
Без дат берутся последние 30 дней; период не может быть больше 366 дней. group_by можно повторять, чтобы считать только нужные разрезы.
curl -G https://api.closerouter.dev/v1/usage \
-H "Authorization: Bearer $CLOSEROUTER_API_KEY" \
--data-urlencode "start_date=2026-08-01" \
--data-urlencode "end_date=2026-08-31" \
--data-urlencode "group_by=day" \
--data-urlencode "group_by=model"Ответ статистики
GET /usage
totals и каждая строка разреза содержат requests, failed_requests, prompt_tokens, completion_tokens, cache_creation_tokens, cache_read_tokens, total_tokens и списанную стоимость cost.
Доступные разрезы group_by: day, model, provider, api_key, api_type, status. Без параметра возвращаются все; невыбранные приходят пустыми массивами.
Фильтры start_date, end_date, model (можно повторять), api_key_id и timezone сужают период.
Доступ и детализация
Разрезы отсортированы по стоимости, кроме by_day — он идёт по датам.
Статистика охватывает все расходы аккаунта, включая дашборд и Telegram, поэтому сходится со страницей Usage в дашборде.
Провайдер называется тем же публичным именем, которое inference-ответы возвращают в поле provider.
Баланс
curl https://api.closerouter.dev/v1/credits \
-H "Authorization: Bearer $CLOSEROUTER_API_KEY"Ответ
total_credits: текущий доступный баланс.
total_usage: суммарное списание за использование API.
При недостаточном балансе API возвращает 402 insufficient_balance.
Доступ и детализация
Явно бесплатный запрос сохраняет обычную запись использования с нулевой стоимостью и не создает списание.