[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-ai\u002Fconsumption\u002Fusage":3,"docs-tabs-ai\u002Fconsumption\u002Fusage":6},{"content":4,"lastmod":5},"\n## Статистика использования\n\n`GET \u002Fv1\u002Fai\u002Fusage`\n\nВозвращает агрегированную статистику использования AI для текущего API-ключа: общие показатели за период, разбивку по моделям, последние 10 вызовов и группировку по типу учётных данных (`PLATFORM`, `PORTAL`, `USER`).\n\n## Параметры\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|----------|\n| `days` (query) | number | нет | `30` | Период в днях. Допустимый диапазон: `1..90`. Значения вне диапазона автоматически приводятся к границам |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fusage?days=7\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fusage?days=7\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fusage?days=7', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\n\nconst { data } = await res.json()\nconsole.log(`За ${data.period.days} дней: ${data.totals.calls} вызовов, ${data.totals.totalTokens} токенов`)\ndata.byModel.forEach((m) => console.log(`  ${m.modelId}: ${m.calls} запросов, ${m.cost} Вайбов`))\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fai\u002Fusage?days=30', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { data } = await res.json()\nconsole.log('Стоимость за 30 дней:', data.totals.cost, 'Вайбов')\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.period.days` | number | Фактический период в днях (после ограничения 1..90) |\n| `data.period.since` | string | Начало периода в `ISO 8601` |\n| `data.totals.calls` | number | Общее количество вызовов за период (все статусы) |\n| `data.totals.promptTokens` | number | Сумма токенов входа |\n| `data.totals.completionTokens` | number | Сумма токенов ответа |\n| `data.totals.totalTokens` | number | Сумма всех токенов |\n| `data.totals.cost` | number | Общая стоимость в Вайбах |\n| `data.byModel` | array | Разбивка успешных вызовов по моделям, сортировка по убыванию количества |\n| `data.byModel[].modelId` | string | ID модели |\n| `data.byModel[].calls` | number | Количество вызовов |\n| `data.byModel[].promptTokens` | number | Токены входа |\n| `data.byModel[].completionTokens` | number | Токены ответа |\n| `data.byModel[].totalTokens` | number | Сумма токенов |\n| `data.byModel[].cost` | number | Стоимость в Вайбах |\n| `data.byModel[].audioSeconds` | number | Секунды расшифрованного аудио (Whisper). Для текстовых моделей — `0` |\n| `data.recentCalls` | array | Последние 10 вызовов любого статуса |\n| `data.recentCalls[].modelId` | string | ID модели |\n| `data.recentCalls[].promptTokens` | number | Токены входа |\n| `data.recentCalls[].completionTokens` | number | Токены ответа |\n| `data.recentCalls[].cost` | number | Стоимость вызова в Вайбах |\n| `data.recentCalls[].status` | string | Статус: `SUCCESS`, `ERROR`, `INCOMPLETE`, `FALLBACK_ORIGIN`, `DISABLED_REDIRECT` |\n| `data.recentCalls[].createdAt` | string | Время вызова в `ISO 8601` |\n| `data.byScope` | object | Разбивка по типу учётных данных провайдера, ключи: `PLATFORM`, `PORTAL`, `USER` |\n| `data.byScope.\u003Cscope>.calls` | number | Количество вызовов через этот тип учётных данных |\n| `data.byScope.\u003Cscope>.promptTokens` | number | Токены входа |\n| `data.byScope.\u003Cscope>.completionTokens` | number | Токены ответа |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"period\": {\n      \"days\": 7,\n      \"since\": \"2026-04-20T11:30:00.000Z\"\n    },\n    \"totals\": {\n      \"calls\": 142,\n      \"promptTokens\": 45200,\n      \"completionTokens\": 18300,\n      \"totalTokens\": 63500,\n      \"cost\": 12.5\n    },\n    \"byModel\": [\n      {\n        \"modelId\": \"bitrix\u002Fbitrixgpt-5.5\",\n        \"calls\": 98,\n        \"promptTokens\": 28000,\n        \"completionTokens\": 11000,\n        \"totalTokens\": 39000,\n        \"cost\": 0\n      },\n      {\n        \"modelId\": \"openai\u002Fgpt-4o\",\n        \"calls\": 44,\n        \"promptTokens\": 17200,\n        \"completionTokens\": 7300,\n        \"totalTokens\": 24500,\n        \"cost\": 12.5\n      }\n    ],\n    \"recentCalls\": [\n      {\n        \"modelId\": \"bitrix\u002Fbitrixgpt-5.5\",\n        \"promptTokens\": 120,\n        \"completionTokens\": 85,\n        \"cost\": 0,\n        \"status\": \"SUCCESS\",\n        \"createdAt\": \"2026-04-27T11:30:00.000Z\"\n      },\n      {\n        \"modelId\": \"openai\u002Fgpt-4o\",\n        \"promptTokens\": 350,\n        \"completionTokens\": 200,\n        \"cost\": 0.28,\n        \"status\": \"SUCCESS\",\n        \"createdAt\": \"2026-04-27T09:45:00.000Z\"\n      }\n    ],\n    \"byScope\": {\n      \"PLATFORM\": {\n        \"calls\": 98,\n        \"promptTokens\": 28000,\n        \"completionTokens\": 11000\n      },\n      \"USER\": {\n        \"calls\": 44,\n        \"promptTokens\": 17200,\n        \"completionTokens\": 7300\n      }\n    }\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n`403 scope_missing` — у API-ключа нет скоупа `vibe:ai`:\n\n```json\n{\n  \"error\": {\n    \"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.\",\n    \"type\": \"invalid_request_error\",\n    \"code\": \"scope_missing\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 400 | `no_api_key` | Запрос пришёл без идентификатора API-ключа |\n| 403 | `scope_missing` | API-ключу не хватает скоупа `vibe:ai` |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**`recentCalls` всегда содержит до 10 записей.** Они не зависят от параметра `days` — это просто последние 10 вызовов независимо от того, попадают ли они в выбранный период.\n\n**`byModel` учитывает только `SUCCESS`.** Разбивка по моделям не включает ошибочные вызовы. Общие счётчики `totals` — все вызовы (включая `ERROR`, `INCOMPLETE`).\n\n**Стоимость в Вайбах.** Поле `cost` — это стоимость в Вайбах (внутренняя валюта платформы), не в рублях и не в долларах. Модели с нулевой ценой в каталоге (большинство `bitrix\u002F*`) и BYOK дают `cost: 0`. Часть платформенных моделей платная — цена берётся из тарифной таблицы `AiModel.inputPriceVibes` \u002F `AiModel.outputPriceVibes`, посмотреть её можно в [`GET \u002Fv1\u002Fmodels`](\u002Fdocs\u002Fai\u002Fmodels\u002Flist).\n\n**`byScope.USER` — это вызовы через ваш BYOK.** Если вы используете подключённый BYOK-ключ — статистика попадает в `byScope.USER`. Платформенные модели — в `byScope.PLATFORM`. Если у портала настроены PORTAL-credentials — в `byScope.PORTAL`. Когда вызовов с каким-то scope не было — ключ просто отсутствует в объекте.\n\n## Смотрите также\n\n- [Статистика по ключу](\u002Fdocs\u002Fai\u002Fcredentials\u002Fusage)\n- [Список моделей](\u002Fdocs\u002Fai\u002Fmodels\u002Flist)\n- [AI Router](\u002Fdocs\u002Fai)\n","2026-07-10",{}]