Для AI-агентов: markdown этой страницы — /docs-content/ai.md индекс документации — /llms.txt

AI Router

Единый OpenAI-совместимый API для работы с языковыми моделями от разных провайдеров. Бесплатные модели Битрикс24 доступны сразу — для платных и для своих ключей провайдеров (BYOK) подключите учётные данные.

Это API, а не чат на портале. Диалогового окна для общения с моделью на портале Вайбкод нет — искать его не нужно. Запрос (промпт) вводится в вашем AI-инструменте, агенте или коде (Cursor, IDE-агент, библиотека openai, собственное приложение), который обращается к этому API по адресу ниже. Бесплатные модели Битрикс24 работают так же, как платные и BYOK, — через тот же API.

Скоуп: vibe:ai | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: заголовок X-Api-Key или Authorization: Bearer YOUR_API_KEY

Платить можно подпиской. Все модели роутера доступны не только с кошелька портала, но и по подписке Cowork/Code — в том числе из вашего собственного агента. Ключ подписки берётся на странице Cowork/Code, настройка популярных агентов — в разделе Свой агент на подписке.

Совместимость с 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/*) доступны всем без отдельных BYOK-ключей. Большинство из них бесплатны.

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
POST /v1/embeddings Векторные эмбеддинги текста
GET /v1/ai/usage Статистика использования AI по ключу
GET /v1/ai/quota Процент месячной AI-квоты и разбивка по моделям
GET /v1/off-peak Расписание выгодных часов 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"
  }
}

В V1-формате приходят штатные ошибки самих этих эндпоинтов. Непредвиденная ошибка сервера 5xx на любом маршруте /v1/ai/* возвращается в сыром OpenAI-формате. В обратную сторону это тоже работает: отказы по квоте и темпу запросов (402 ai_quota_exhausted, 429 ai_pacing_limited) на OpenAI-совместимых эндпоинтах приходят в конверте с success: false. Обработчик ошибок должен принимать оба конверта на любом из маршрутов.

Код HTTP Описание
scope_missing 403 API-ключу не хватает скоупа vibe:ai
invalid_request 400 Некорректные параметры запроса
no_default_model 400 У портала нет ни одной доступной для вызова модели
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_rejected 400 Провайдер отклонил сам запрос (ответ 400 или 422). Повторять его без изменений бесполезно
ai_provider_unavailable 502 Внешний провайдер вернул 401/403/5xx или сетевую ошибку
ai_provider_timeout 503 Апстрим не ответил вовремя: таймаут Whisper (15 минут), бюджет не-потокового запроса или ответ провайдера 408
ai_congested 429 Пул AI-кластера перегружен. Запрос не выполнялся, списания нет, повторите его по заголовку Retry-After
ai_provider_cooldown 429 Кластер моделей временно недоступен, платформа держит короткую паузу. Запрос не выполнялся, списания нет, повторите его по заголовку Retry-After. В отличие от соседних 429 у этого ответа нет ни X-RateLimit-Scope, ни X-AI-Admission
model_unavailable 503 Модель отключена и резервной нет

Whisper / /v1/audio/transcriptions: окно обработки — до 15 минут. Длинное / шумное аудио может занять несколько минут. Для аудио длиннее ~30 мин стоит делить на части.

Системные ошибки

Применимы к любому эндпоинту API Вайбкод, включая раздел AI Router:

Код HTTP Описание
MISSING_API_KEY 401 Не передан заголовок X-Api-Key или Authorization: Bearer
INVALID_API_KEY 401 Ключ не существует или отозван
RATE_LIMITED 429 Превышен общий лимит запросов V1-эндпоинта вне AI Router. Пауза перед повтором — в Retry-After
rate_limit_exceeded 429 Превышен минутный лимит AI Router по API-ключу или пользователю. Уровень — в error.scope и заголовке X-RateLimit-Scope, пауза перед повтором — в Retry-After
INTERNAL_ERROR 500 Внутренняя ошибка платформы. Повторите запрос, а если ошибка повторяется — отправьте заявку

Полный список общих ошибок 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 устаревшего эквивалента не имеют — это канонические пути.


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