Управление ботами

Зарегистрируйте бота на портале Битрикс24, получайте и обновляйте его данные, восстанавливайте доступ при сбоях авторизации и удаляйте бота, когда он больше не нужен.

Скоуп: imbot | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key

Зарегистрировать бота

POST /v1/bots

Регистрирует нового бота на портале Битрикс24. Операция идемпотентна по code — повторный вызов с тем же кодом вернёт 409 BOT_ALREADY_EXISTS с данными существующего бота.

Поля запроса (body)

Параметр Тип Обяз. По умолч. Описание
code string да Уникальный код бота (латиница, цифры, подчёркивание)
name string да Отображаемое имя бота
type string нет bot Тип бота: bot, personal, supervisor, openline. Нельзя изменить после регистрации
eventMode string нет fetch Режим событий: fetch (polling) или webhook (push)
webhookUrl string нет URL для push-уведомлений (только при eventMode: "webhook")
lastName string нет Фамилия бота
workPosition string нет Должность бота (отображается под именем)
color string нет Цвет аватара: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND, MARENGO, GRAY, GRAPHITE
gender string нет Пол: M или F
avatar string нет Аватар бота: PNG или JPEG как base64-строка без префикса data:image/...;base64,, до ~50 КБ. См. «Формат аватара» в «Известных особенностях»
isHidden boolean нет false Скрыть бота из списка контактов
isReactionsEnabled boolean нет true Разрешить реакции на сообщения бота
backgroundId string нет Фон чата: azure, mint, steel, slate, teal, cornflower, sky, peach, frost
isSupportOpenline boolean нет false Поддержка открытых линий (только для type: "openline")

Типы ботов

Тип Описание
bot Стандартный бот — реагирует на @упоминание и личные сообщения
personal AI-ассистент — получает все сообщения без @упоминания. Доступны Message.get и Message.getContext
supervisor Системный наблюдатель — получает все сообщения в чатах, где состоит
openline Бот для открытых линий. Требует isSupportOpenline: true

personal и supervisor — привилегированные типы: они получают все сообщения в чатах, где состоят, даже без @упоминания бота. Используйте их осознанно. Регистрация через POST /v1/bots разрешена и не требует админ-роли на стороне Битрикс24 — ограничение задаётся правами вашего webhook/OAuth-токена.

Доступные цвета

Используются в параметре color при создании и обновлении бота:

RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK,
LIME, BROWN, AZURE, KHAKI, SAND, MARENGO, GRAY, GRAPHITE

Примеры

curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/bots \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "support_bot",
    "name": "Техподдержка",
    "type": "bot",
    "eventMode": "fetch",
    "color": "AZURE",
    "workPosition": "Помощник по техническим вопросам"
  }'

curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/bots \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "support_bot",
    "name": "Техподдержка",
    "type": "bot",
    "eventMode": "fetch",
    "color": "AZURE",
    "workPosition": "Помощник по техническим вопросам"
  }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/bots', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    code: 'support_bot',
    name: 'Техподдержка',
    type: 'bot',
    eventMode: 'fetch',
    color: 'AZURE',
    workPosition: 'Помощник по техническим вопросам',
  }),
})

const { success, data } = await res.json()
// `data.botId` зеркалит ответ 409 BOT_ALREADY_EXISTS — один и тот же путь для
// success и conflict. `data.bot.id` оставлен для обратной совместимости.
console.log('Bot ID:', data.botId)

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/bots', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    code: 'support_bot',
    name: 'Техподдержка',
    type: 'bot',
    eventMode: 'fetch',
    color: 'AZURE',
    workPosition: 'Помощник по техническим вопросам',
  }),
})

const { success, data } = await res.json()

Поля ответа

Поле Тип Описание
botId number ID бота на портале Битрикс24. Зеркалит data.botId из 409-ответа — один и тот же путь для success и conflict
bot.id number Дубликат botId для обратной совместимости. ID бота на портале Битрикс24
bot.code string Уникальный код бота
bot.type string Тип бота
bot.eventMode string Режим событий: fetch или webhook
bot.isHidden boolean Скрыт из списка контактов
bot.isReactionsEnabled boolean Разрешены реакции
users array Массив пользователей Битрикс24, созданных для бота

Пример ответа

JSON
{
  "success": true,
  "data": {
    "botId": 42,
    "bot": {
      "id": 42,
      "code": "support_bot",
      "type": "bot",
      "eventMode": "fetch",
      "isHidden": false,
      "isReactionsEnabled": true
    },
    "users": [
      {
        "id": 42,
        "name": "Техподдержка",
        "active": true,
        "bot": true
      }
    ]
  }
}

Пример ответа при ошибке

409 — бот с таким кодом уже существует:

JSON
{
  "success": false,
  "error": {
    "code": "BOT_ALREADY_EXISTS",
    "message": "Bot with this code already exists"
  },
  "data": {
    "botId": 42,
    "code": "support_bot",
    "name": "Техподдержка"
  }
}

В поле data возвращаются botId, code и name уже зарегистрированного бота — это идемпотентный путь восстановления записи в базе Вайбкод после рассинхронизации.

Ошибки

HTTP Код Описание
400 CODE_REQUIRED Не передан параметр code
400 NAME_REQUIRED Не передан параметр name
409 BOT_ALREADY_EXISTS Бот с таким code уже зарегистрирован. Ответ содержит data с botId
422 BITRIX_ERROR Битрикс24 вернул ошибку при регистрации (текст ошибки в message)
502 REGISTRATION_FAILED Битрикс24 не вернул ID бота
403 SCOPE_DENIED API-ключ не имеет скоупа imbot
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

Полный список общих ошибок API — Ошибки.

Известные особенности

Тип нельзя изменить: после регистрации type фиксируется. PATCH /v1/bots/:botId не принимает это поле.

Восстановление при рассинхронизации: если бот существует на портале Битрикс24, но отсутствует в базе Вайбкод (после сбоя), повторный POST с тем же code восстановит запись в базе.

Формат body отличается от PATCH: при создании поля передаются плоско (code, name, color). При обновлении — вложенная структура { fields: { properties: { name, color } } }.

Формат аватара. Поле avatar принимает изображение PNG или JPEG в виде base64-строки без префикса data:image/...;base64, — передавайте только сами base64-данные. URL изображения или строка с префиксом data: приводят к ответу 422 BITRIX_ERROR. Размер — до ~50 КБ: при превышении запрос завершается успешно, но аватар не сохраняется и остаётся пустым.

Идемпотентность по code: если бот с таким кодом уже есть и в базе Вайбкод, и на портале Битрикс24, вернётся 409 BOT_ALREADY_EXISTS с data: { botId, code, name } существующего бота. Подходит для перезапуска скриптов и проверки факта регистрации без обработки 200/400 раздельно.

Жизненный цикл бота. Бот существует ровно столько, сколько существует локальное приложение, через которое он зарегистрирован. Удаление приложения с портала удаляет и бота.

Операции с ботом — тем же ключом. Бот привязан к API-ключу, которым зарегистрирован. Получение событий, отправка сообщений и обновление выполняются тем же ключом — запрос с другого ключа вернёт 403 BOT_ACCESS_DENIED. Передать бота на активный ключ того же пользователя — или силами администратора аккаунта — можно через `POST /v1/bots/:botId/transfer`.

Режим webhook требует публичного webhookUrl. При eventMode: "webhook" Битрикс24 отправляет события напрямую на webhookUrl, поэтому адрес должен быть публично достижим. Сервер Black Hole с политикой OWNER_ONLY такой запрос не принимает — подробности и решение в разделе Диагностика проблем.

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