#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.

#Разделы документации


#Быстрый старт

#1. Сгенерируйте ответ бесплатной моделью

Terminal
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?"}]
  }'

Ответ:

JSON
{
  "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. Посмотрите доступные модели

Terminal
curl -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.tech/v1/models

Возвращает только те модели, для которых у портала настроены учётные данные провайдера. Бесплатные модели Битрикс24 (bitrix/*) доступны всем.

#3. Проверьте расход токенов

Terminal
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. Распознавание речи

Terminal
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"

Ответ:

JSON
{
  "text": "Здравствуйте, ООО Вектор. Хотим CRM на 50 пользователей, бюджет до 500 тысяч в месяц."
}

#Шаг 2. Классификация лида с гарантированным `JSON`

Terminal
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"}
  }'

Ответ:

JSON
{
  "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 и отправляем в таймлайн:

Terminal
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):

JSON
{
  "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):

JSON
{
  "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 устаревшего эквивалента не имеют — это канонические пути.


#Смотрите также