#Статистика использования
GET /v1/ai/usage
Возвращает агрегированную статистику использования AI для текущего API-ключа: общие показатели за период, разбивку по моделям, последние 10 вызовов и группировку по типу учётных данных (PLATFORM, PORTAL, USER).
#Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
days (query) |
number | нет | 30 |
Период в днях. Допустимый диапазон: 1..90. Значения вне диапазона автоматически приводятся к границам |
#Примеры
#curl — личный ключ
curl "https://vibecode.bitrix24.tech/v1/ai/usage?days=7" \
-H "X-Api-Key: YOUR_API_KEY"
#curl — OAuth-приложение
curl "https://vibecode.bitrix24.tech/v1/ai/usage?days=7" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/ai/usage?days=7', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
console.log(`За ${data.period.days} дней: ${data.totals.calls} вызовов, ${data.totals.totalTokens} токенов`)
data.byModel.forEach((m) => console.log(` ${m.modelId}: ${m.calls} запросов, ${m.cost} Вайбов`))
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/ai/usage?days=30', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
console.log('Стоимость за 30 дней:', data.totals.cost, 'Вайбов')
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data.period.days |
number | Фактический период в днях (после ограничения 1..90) |
data.period.since |
string | Начало периода в ISO 8601 |
data.totals.calls |
number | Общее количество вызовов за период (все статусы) |
data.totals.promptTokens |
number | Сумма токенов входа |
data.totals.completionTokens |
number | Сумма токенов ответа |
data.totals.totalTokens |
number | Сумма всех токенов |
data.totals.cost |
number | Общая стоимость в Вайбах |
data.byModel |
array | Разбивка успешных вызовов по моделям, сортировка по убыванию количества |
data.byModel[].modelId |
string | ID модели |
data.byModel[].calls |
number | Количество вызовов |
data.byModel[].promptTokens |
number | Токены входа |
data.byModel[].completionTokens |
number | Токены ответа |
data.byModel[].totalTokens |
number | Сумма токенов |
data.byModel[].cost |
number | Стоимость в Вайбах |
data.recentCalls |
array | Последние 10 вызовов любого статуса |
data.recentCalls[].modelId |
string | ID модели |
data.recentCalls[].promptTokens |
number | Токены входа |
data.recentCalls[].completionTokens |
number | Токены ответа |
data.recentCalls[].cost |
number | Стоимость вызова в Вайбах |
data.recentCalls[].status |
string | Статус: SUCCESS, ERROR, INCOMPLETE, FALLBACK_ORIGIN, DISABLED_REDIRECT |
data.recentCalls[].createdAt |
string | Время вызова в ISO 8601 |
data.byScope |
object | Разбивка по типу credential, ключи: PLATFORM, PORTAL, USER |
data.byScope.<scope>.calls |
number | Количество вызовов через этот тип credential |
data.byScope.<scope>.promptTokens |
number | Токены входа |
data.byScope.<scope>.completionTokens |
number | Токены ответа |
#Пример ответа
{
"success": true,
"data": {
"period": {
"days": 7,
"since": "2026-04-20T11:30:00.000Z"
},
"totals": {
"calls": 142,
"promptTokens": 45200,
"completionTokens": 18300,
"totalTokens": 63500,
"cost": 12.5
},
"byModel": [
{
"modelId": "bitrix/bitrixgpt-5.5",
"calls": 98,
"promptTokens": 28000,
"completionTokens": 11000,
"totalTokens": 39000,
"cost": 0
},
{
"modelId": "openai/gpt-4o",
"calls": 44,
"promptTokens": 17200,
"completionTokens": 7300,
"totalTokens": 24500,
"cost": 12.5
}
],
"recentCalls": [
{
"modelId": "bitrix/bitrixgpt-5.5",
"promptTokens": 120,
"completionTokens": 85,
"cost": 0,
"status": "SUCCESS",
"createdAt": "2026-04-27T11:30:00.000Z"
},
{
"modelId": "openai/gpt-4o",
"promptTokens": 350,
"completionTokens": 200,
"cost": 0.28,
"status": "SUCCESS",
"createdAt": "2026-04-27T09:45:00.000Z"
}
],
"byScope": {
"PLATFORM": {
"calls": 98,
"promptTokens": 28000,
"completionTokens": 11000
},
"USER": {
"calls": 44,
"promptTokens": 17200,
"completionTokens": 7300
}
}
}
}
#Пример ответа при ошибке
403 scope_missing — у API-ключа нет скоупа vibe:ai:
{
"error": {
"message": "API key does not have the vibe:ai scope required for AI endpoints. Add vibe:ai scope to your API key in portal settings.",
"type": "invalid_request_error",
"code": "scope_missing"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | no_api_key |
Запрос пришёл без идентификатора API-ключа |
| 403 | scope_missing |
API-ключу не хватает скоупа vibe:ai |
| 401 | MISSING_API_KEY |
Не передан заголовок X-Api-Key |
Полный список общих ошибок API — Ошибки.
#Известные особенности
Период ограничен 90 днями. Запрос с days=999 вернёт период 90 без ошибки — параметр приводится к границам диапазона 1..90. Минимум — 1 день.
recentCalls всегда содержит до 10 записей. Они не зависят от параметра days — это просто последние 10 вызовов независимо от того, попадают ли они в выбранный период.
byModel учитывает только SUCCESS. Разбивка по моделям не включает ошибочные вызовы. Общие счётчики totals — все вызовы (включая ERROR, INCOMPLETE).
Стоимость в Вайбах. Поле cost — это стоимость в Вайбах (внутренняя валюта платформы), не в рублях и не в долларах. Бесплатные модели (bitrix/*) и BYOK дают cost: 0. Для платных платформенных моделей цена берётся из тарифной таблицы AiModel.inputPriceVibes / AiModel.outputPriceVibes.
byScope.USER — это вызовы через ваш BYOK. Если вы используете подключённый BYOK-ключ — статистика попадает в byScope.USER. Платформенные модели — в byScope.PLATFORM. Если у портала настроены PORTAL-credentials — в byScope.PORTAL. Когда вызовов с каким-то scope не было — ключ просто отсутствует в объекте.
#Смотрите также
- Статистика по ключу — статистика по конкретному BYOK-ключу
- Список моделей — каталог моделей с ценами
pricing.prompt/pricing.completion - AI Router — обзор раздела