#AI Router
Единый OpenAI-совместимый API для работы с языковыми моделями от разных провайдеров. Бесплатные модели Битрикс24 доступны сразу — для платных и для своих ключей провайдеров (BYOK) подключите учётные данные.
Скоуп: vibe:ai (добавляется автоматически ко всем API-ключам) | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: заголовок X-Api-Key или Authorization: Bearer YOUR_API_KEY
#Совместимость с OpenAI SDK
Все ответы возвращаются в сыром OpenAI-формате. Подключите любой OpenAI-совместимый инструмент (Cursor, IDE-агенты, библиотека openai) через стандартные настройки:
Base URL: https://vibecode.bitrix24.tech/v1
API Key: ваш ключ vibe_api_... или vibe_app_...
SDK по умолчанию передаёт ключ в заголовке Authorization: Bearer — Вайбкод принимает оба варианта (X-Api-Key и Authorization: Bearer). Параметры запроса (model, messages, temperature, tools, stream, response_format) и поля ответа (id, choices, usage) соответствуют контракту POST /v1/chat/completions из OpenAI API.
#Разделы документации
- Чат-комплишены — генерация ответов модели в синхронном или потоковом режиме (
Server-Sent Events) - Модели — список доступных моделей и детали отдельной модели
- Распознавание речи — преобразование аудио в текст через Whisper Large v3 Turbo
- Свои ключи (BYOK) — подключение собственных ключей провайдеров
- Список провайдеров — справочник провайдеров для подключения BYOK
- Статистика использования — расход токенов и стоимость по API-ключу
- Совместимость с OpenAI SDK — настройка Cursor, IDE-агентов и любых OpenAI-совместимых клиентов
- Жизненный цикл моделей — поведение
ACTIVE/DEPRECATED/DISABLEDи связанные заголовки - Миграция со старых маршрутов — для проектов, где остались вызовы
/v1/ai/chat/completionsи аналогичных
#Быстрый старт
#1. Сгенерируйте ответ бесплатной моделью
curl -X POST https://vibecode.bitrix24.tech/v1/chat/completions \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bitrix/bitrixgpt-5.5",
"messages": [{"role": "user", "content": "Что такое CRM?"}]
}'
Ответ:
{
"id": "chatcmpl-a1a73c6eb3f180fd",
"object": "chat.completion",
"created": 1777289339,
"model": "bitrix/bitrixgpt-5.5",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "CRM — это система управления взаимоотношениями с клиентами."
}
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 18,
"total_tokens": 30
}
}
#2. Посмотрите доступные модели
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.tech/v1/models
Возвращает только те модели, для которых у портала настроены учётные данные провайдера. Бесплатные модели Битрикс24 (bitrix/*) доступны всем.
#3. Проверьте расход токенов
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://vibecode.bitrix24.tech/v1/ai/usage?days=7"
#Типовые сценарии использования
- Классификация лидов: запросите лиды через `GET /v1/leads`, пропустите через чат-комплишен с
response_format: json_object, обновите CRM-поля через `PATCH /v1/leads/:id`. - Генерация контента: прочитайте товары через `GET /v1/products`, сгенерируйте описания, обновите карточки в каталоге.
- Извлечение данных: возьмите комментарии из `GET /v1/timeline-logs`, извлеките телефон / email / название компании, запишите в CRM.
- Чат-бот: зарегистрируйте бота через `POST /v1/bots`, получайте события через `GET /v1/bots/:botId/events`, генерируйте ответ AI, отправляйте через `POST /v1/bots/:botId/messages`.
- Отчёты: соберите данные через `POST /v1/batch`, сгенерируйте сводку, отправьте уведомление.
#Полный пример: распознавание звонка → классификация → запись в таймлайн
Сценарий: получить аудиозапись звонка, расшифровать через Whisper, классифицировать качество лида через JSON-ответ модели, записать результат в таймлайн сделки.
#Шаг 1. Распознавание речи
curl -X POST https://vibecode.bitrix24.tech/v1/audio/transcriptions \
-H "X-Api-Key: YOUR_API_KEY" \
-F "file=@call-recording.mp3" \
-F "language=ru" \
-F "response_format=json"
Ответ:
{
"text": "Здравствуйте, ООО Вектор. Хотим CRM на 50 пользователей, бюджет до 500 тысяч в месяц."
}
#Шаг 2. Классификация лида с гарантированным `JSON`
curl -X POST https://vibecode.bitrix24.tech/v1/chat/completions \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bitrix/bitrixgpt-5.5",
"messages": [
{
"role": "system",
"content": "Классифицируй лид по тексту звонка. Верни JSON: {\"quality\": \"high|medium|low\", \"score\": 0-100, \"reason\": \"...\"}."
},
{
"role": "user",
"content": "ООО Вектор. CRM на 50 пользователей, бюджет до 500 тысяч в месяц."
}
],
"response_format": {"type": "json_object"}
}'
Ответ:
{
"id": "chatcmpl-acdb112cf9cdf9f9",
"object": "chat.completion",
"model": "bitrix/bitrixgpt-5.5",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "{\"quality\":\"high\",\"score\":88,\"reason\":\"Юрлицо, конкретный объём (50 пользователей) и бюджет 500 тысяч в месяц.\"}"
}
}
],
"usage": {"prompt_tokens": 92, "completion_tokens": 36, "total_tokens": 128}
}
#Шаг 3. Запись результата в таймлайн сделки
Парсим choices[0].message.content как JSON и отправляем в таймлайн:
curl -X POST https://vibecode.bitrix24.tech/v1/timeline-logs \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityType": "deal",
"entityId": 1234,
"title": "Классификация AI: high (88/100)",
"text": "Юрлицо, конкретный объём (50 пользователей) и бюджет 500 тысяч в месяц."
}'
Все три эндпоинта живут в одном API-ключе и одной авторизации — отдельных интеграций не требуется.
#Справочник эндпоинтов
| Метод | Путь | Описание |
|---|---|---|
| POST | `/v1/chat/completions` | Генерация ответа модели — синхронно или потоком |
| GET | `/v1/models` | Список доступных моделей |
| GET | `/v1/models/:modelId` | Детали конкретной модели |
| POST | `/v1/audio/transcriptions` | Распознавание речи через Whisper |
| GET | `/v1/ai/usage` | Статистика использования AI по ключу |
| GET | `/v1/ai/providers` | Список провайдеров для BYOK |
| GET | `/v1/ai/credentials` | Список собственных ключей провайдеров |
| POST | `/v1/ai/credentials` | Подключить ключ провайдера (с верификацией) |
| PATCH | `/v1/ai/credentials/:id` | Обновить ключ провайдера |
| DELETE | `/v1/ai/credentials/:id` | Удалить ключ провайдера |
| POST | `/v1/ai/credentials/:id/test` | Проверить ключ провайдера |
| GET | `/v1/ai/credentials/:id/usage` | Статистика использования по ключу |
| POST | `/v1/ai/credentials/:id/fetch-models` | Загрузить каталог моделей у Custom-провайдера |
| GET | `/v1/ai/credentials/:id/models` | Список моделей, привязанных к ключу |
| POST | `/v1/ai/credentials/:id/models` | Добавить модель к ключу вручную |
| DELETE | `/v1/ai/credentials/:credId/models/:modelRowId` | Удалить модель, привязанную к ключу |
#Коды ошибок
Эндпоинты делятся на две группы по формату ответа об ошибке:
Сырой OpenAI-формат (/v1/chat/completions, /v1/models, /v1/audio/transcriptions):
{
"error": {
"message": "...",
"type": "invalid_request_error",
"code": "ai_model_not_found"
}
}
type принимает значения: invalid_request_error (4xx), insufficient_quota (402), service_unavailable (503), server_error (5xx). code всегда в нижнем регистре.
V1-формат (/v1/ai/usage, /v1/ai/credentials/*, /v1/ai/providers):
{
"success": false,
"error": {
"code": "not_found",
"message": "Credential not found"
}
}
| Код | HTTP | Описание |
|---|---|---|
scope_missing |
403 | API-ключу не хватает скоупа vibe:ai |
invalid_request |
400 | Некорректные параметры запроса |
no_default_model |
400 | Модель по умолчанию не настроена — укажите model явно |
invalid_image_payload |
400 | Некорректный image_url в массиве content |
invalid_language |
400 | Код языка не соответствует ISO 639 |
no_file |
400 | Аудиофайл не передан |
empty_file |
400 | Файл в multipart присутствует, но тело — 0 байт (часто причина: curl -F "file=path" без @) |
ai_model_not_found |
404 | Модель не найдена или отключена |
not_found |
404 | Сущность (BYOK-ключ, модель) не найдена |
provider_not_found |
404 | Провайдер не найден или отключён |
ai_credentials_not_configured |
402 | Для модели нет учётных данных провайдера — подключите BYOK |
insufficient_balance |
402 | Недостаточно средств для платной модели |
credential_invalid |
422 | Ключ провайдера не прошёл верификацию |
already_exists |
409 | Ключ для этого провайдера уже существует |
base_url_invalid |
400 | baseUrl Custom-провайдера должен использовать http или https |
base_url_private |
400 | baseUrl указывает на приватную сеть или не разрешается в IP-адрес через DNS |
not_custom_provider |
400 | Ручная регистрация моделей разрешена только для Custom-провайдера |
provider_list_models_unavailable |
200 | Custom-провайдер не поддерживает GET /v1/models — добавьте модели вручную |
ai_provider_unavailable |
502 | Внешний провайдер вернул не-2xx или сетевую ошибку (не таймаут) |
ai_provider_timeout |
504 | Апстрим Whisper не ответил за 15 минут |
model_unavailable |
503 | Модель отключена и резервной нет |
Whisper /
/v1/audio/transcriptions: окно обработки — до 15 минут. Длинное / шумное аудио может занять несколько минут. Для аудио длиннее ~30 мин стоит делить на части.
#Системные ошибки
Применимы к любому эндпоинту Vibe API, включая раздел AI Router:
| Код | HTTP | Описание |
|---|---|---|
MISSING_API_KEY |
401 | Не передан заголовок X-Api-Key или Authorization: Bearer |
INVALID_API_KEY |
401 | Ключ не существует или отозван |
RATE_LIMIT_EXCEEDED |
429 | Превышен лимит запросов в секунду по API-ключу. Повторите запрос через X-RateLimit-Reset секунд |
INTERNAL_ERROR |
500 | Внутренняя ошибка платформы — повторите запрос; если повторяется, отправьте feedback-тикет |
Полный список общих ошибок API — Ошибки.
#Миграция со старых маршрутов
Если в коде остались вызовы вида /v1/ai/chat/completions, /v1/ai/models, /v1/ai/audio/transcriptions — они продолжают работать в режиме обратной совместимости. В заголовках ответа приходит:
Deprecation: true
X-Deprecated-Use: /v1/chat/completions
X-Deprecated-Use подсказывает канонический путь. Перенесите вызовы на канонические маршруты — это снимает заголовок Deprecation и убирает риск удаления старого пути в будущем.
| Устаревший путь | Канонический путь |
|---|---|
POST /v1/ai/chat/completions |
`POST /v1/chat/completions` |
GET /v1/ai/models |
`GET /v1/models` |
GET /v1/ai/models/:modelId |
`GET /v1/models/:modelId` |
POST /v1/ai/audio/transcriptions |
`POST /v1/audio/transcriptions` |
Маршруты /v1/ai/usage, /v1/ai/credentials/*, /v1/ai/providers устаревшего эквивалента не имеют — это канонические пути.
#Смотрите также
- Лимиты и оптимизация — общие rate-limits Vibe API
- Управление ключами — создание API-ключей и работа со скоупами
- Comментарии таймлайна — запись результатов AI-обработки в карточку CRM
- Бот-платформа — отправка ответов AI в чаты Битрикс24