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

Привязать место встраивания

POST /v1/placements/bind

Регистрирует приложение в выбранной точке интерфейса Битрикс24 на аккаунте — вкладке карточки, пункте меню, панели чата. После вызова точка появляется в интерфейсе с той подписью, которая передана в запросе.

Предусловия вызова — что нужно до привязки.

На облачном аккаунте платформа сначала использует выбранный для него транспорт. Если ключ разработчика отклонён с HTTP 401 только из-за учётных данных и вместе с ключом приложения передан действующий Authorization: Bearer, привязка автоматически повторяется по OAuth. Явный код подписочного гейта остаётся окончательным при любом HTTP-статусе и никогда не повторяется по OAuth. Успешный ответ означает, что один из этих независимых каналов подтвердил запись.

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

Поле Тип Обяз. Описание
Полеplacement Типstring Обяз.да ОписаниеКод места встраивания. Перечень кодов, доступных аккаунту — Доступные места
Полеhandler Типstring Обяз.да ОписаниеАбсолютный адрес страницы приложения, которая откроется в этом месте
Полеtitle Типstring Обяз.да ОписаниеПодпись места в интерфейсе аккаунта, от 1 до 255 символов, не только из пробелов
Полеoptions Типobject Обяз.нет ОписаниеНастройки места встраивания. Кроме перечисленных ниже полей принимаются любые другие — например context, role, extranet у чат-виджетов. Значение каждого поля — строка, число или логическое значение, вложенные объекты и массивы не принимаются
Полеoptions.iconName Типstring Обяз.нет ОписаниеИмя значка из набора Font Awesome с префиксом fa- — например fa-comment. Битрикс24 отклоняет имя длиннее 50 символов. Перечень имён — галерея Font Awesome 6. Значок требуется местам IM_SIDEBAR, IM_NAVIGATION, IM_TEXTAREA, но платформа подставляет его сама, если поле не передано, и сообщает об этом полем optionsDefaulted в ответе. Своё значение всегда важнее подставленного. Месту IM_CONTEXT_MENU значок не нужен
Полеoptions.errorHandlerUrl Типstring Обяз.нет ОписаниеАдрес страницы ошибки для места PAGE_BACKGROUND_WORKER. Если поле не передано, платформа подставляет действующий адрес обработчика
Полеoptions.iconSvg Типstring Обяз.нет ОписаниеЗначок в формате SVG, до 10 000 символов
Полеoptions.width Типnumber Обяз.нет ОписаниеШирина панели места IM_TEXTAREA в пикселях. Целое положительное число
Полеoptions.height Типnumber Обяз.нет ОписаниеВысота панели места IM_TEXTAREA в пикселях. Целое положительное число
Полеoptions.color Типstring Обяз.нет ОписаниеЦвет значка мест IM_TEXTAREA и IM_SIDEBAR из палитры чата Битрикс24: RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND, ORANGE, MARENGO, GRAY, GRAPHITE. Не шестнадцатеричный код

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/placements/bind \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "placement": "CRM_DEAL_DETAIL_TAB",
    "handler": "https://example.com/deal-tab",
    "title": "Аналитика по сделке"
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/placements/bind', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    placement: 'CRM_DEAL_DETAIL_TAB',
    handler: 'https://example.com/deal-tab',
    title: 'Аналитика по сделке',
  }),
})

const { data } = await res.json()
console.log('Зарегистрированный адрес обработчика:', data.handler)

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean Описаниеtrue при успешной привязке
Полеdata.placement Типstring ОписаниеКод привязанного места встраивания
Полеdata.handler Типstring ОписаниеАдрес обработчика, зарегистрированный на аккаунте
Полеdata.title Типstring ОписаниеПодпись места в интерфейсе аккаунта
Полеdata.options Типobject ОписаниеДействующий набор настроек места. Приходит, когда настройки переданы в запросе или подставлены платформой
Полеdata.alreadyBound Типboolean Описаниеtrue, когда место уже числилось привязанным и регистрация выполнена заново
Полеdata.handlerRewritten Типboolean Описаниеtrue, когда переданный адрес обработчика заменён на платформенный
Полеdata.requestedHandler Типstring ОписаниеАдрес обработчика из запроса. Приходит вместе с handlerRewritten

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

Переданный адрес обработчика заменён на платформенный:

JSON
{
  "success": true,
  "data": {
    "placement": "CRM_DEAL_DETAIL_TAB",
    "handler": "https://vibecode.bitrix24.tech/v1/bitrix-handler",
    "title": "Аналитика по сделке",
    "requestedHandler": "https://app-a1b2c3d4.vibecode.bitrix24.tech/deal-tab",
    "handlerRewritten": true
  }
}

Повторная привязка того же кода:

JSON
{
  "success": true,
  "data": {
    "placement": "CRM_DEAL_DETAIL_TAB",
    "handler": "https://example.com/deal-tab",
    "title": "Сделка: сводка",
    "alreadyBound": true
  }
}

Привязка места PAGE_BACKGROUND_WORKER без options — платформа подставила адрес страницы ошибки:

JSON
{
  "success": true,
  "data": {
    "placement": "PAGE_BACKGROUND_WORKER",
    "handler": "https://example.com/worker",
    "title": "Фоновый сценарий",
    "options": {
      "errorHandlerUrl": "https://example.com/worker"
    }
  }
}

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

400 — в теле запроса нет обязательного поля:

JSON
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "title: Required"
  }
}

Ошибки

HTTP Код Описание
HTTP400 КодOAUTH_APP_REQUIRED ОписаниеВызов сделан личным ключом. Привязка работает только с ключом авторизации приложения
HTTP400 КодVALIDATION_ERROR ОписаниеТело запроса не прошло проверку — пропущено обязательное поле, title состоит из одних пробелов или код места не входит в перечень допустимых
HTTP400 КодPLATFORM_HANDLER_UNRESOLVABLE ОписаниеПереданный адрес указывает на технический адрес сервера приложения, а платформенный обработчик определить не удалось. Место не зарегистрировано
HTTP400 КодAPP_NOT_REGISTERED ОписаниеУ приложения нет идентификатора приложения Битрикс24
HTTP400 КодBOX_NO_DEVELOPER_KEY ОписаниеУ автора приложения не настроен ключ разработчика
HTTP401 КодSESSION_REQUIRED ОписаниеНе передан заголовок Authorization: Bearer с токеном сессии
HTTP403 КодPLACEMENT_SCOPE_MISSING ОписаниеУ ключа нет скоупа placement
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч работает в режиме только чтения. Откройте в кабинете платформы Вайбкод страницу по пути из error.details.switchUrl и переключите там режим на чтение и запись. Куда ведёт путь у каждого вида ключа — Режим доступа
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч не меняет данные Битрикс24, а привязываемое место встраивается в рабочий экран сотрудников, или его обработчик после замены адреса Black Hole — не обработчик платформы
HTTP403 КодBOX_WEBHOOK_NOT_DEVELOPER_KEY ОписаниеКлюч разработчика, которым идёт привязка, не имеет права rest.developer. Права ключа фиксируются при выписке — переподключите аккаунт, чтобы ключ выписался заново. Отдаётся до проверки подписки: нехватка права — не вопрос подписки
HTTP403 КодSESSION_REQUIRES_ADMIN ОписаниеКлюч разработчика принадлежит пользователю без прав администратора аккаунта
HTTP403 КодPLACEMENT_APP_GRANT_MISSING ОписаниеМесто недоступно приложению Битрикс24: у приложения нет нужного права. В details приходят требуемое право requiredScope, места, которые приложению доступны (availablePlacements, availablePlacementsTotal), и путь расширения прав в remediation. Права приложения фиксируются при установке — расширить их можно только перевыпуском ключа авторизации или созданием приложения, запрашивающего право сразу. Права ключа платформы Вайбкод на это не влияют
HTTP400 КодPLACEMENT_OPTIONS_REQUIRED ОписаниеУ места есть обязательная настройка, которой нет в запросе и которую платформа не смогла подставить. В details приходит missing — список таких полей
HTTP400 КодPLACEMENT_NOT_REST_BINDABLE ОписаниеМесто нельзя привязать через API: Битрикс24 не объявляет его точкой встраивания. Выберите другой код из доступных мест — там такие места отмечены полем restBindable: false
HTTP403 КодB24_MARKET_SUBSCRIPTION_REQUIRED ОписаниеНужна активная подписка BitrixGPT + Маркетплейс. Ссылка на оформление — в error.details.upgradeUrl
HTTP403 КодB24_MARKET_TRIAL_USED ОписаниеПробный период подписки BitrixGPT + Маркетплейс уже использован — нужна платная подписка. Ссылка на оформление — в error.details.upgradeUrl
HTTP403 КодB24_EMBEDDING_INSTALL_DENIED ОписаниеБитрикс24 отказал в установке встройки при действующей подписке: у пользователя, чьим ключом разработчика идёт вызов, нет права ставить локальные приложения и/или нет доступа к самому приложению. Подписка считается действующей в двух случаях — её подтвердил Битрикс24 либо проверку выполнить не удалось, а аккаунт уже числится подписанным в Вайбкод. Если действующей подписки нет ни по одному из источников, тот же отказ приходит как 502
HTTP403 КодB24_ACCESS_DENIED ОписаниеБитрикс24 отклонил ключ разработчика с HTTP 401, а переданной OAuth-сессии не было либо повтор по ней тоже не удался. Это отказ учётных данных, а не тарифный пейвол. Безопасные поля error.details описаны ниже; исходный текст ответа и адрес ключа не возвращаются
HTTP403 КодINT_TARIFF_REQUIRED ОписаниеАккаунт получает доступ по тарифу Битрикс24, а не по подписке — нужен коммерческий тариф. Приходит вместо двух кодов выше. error.details.upgradeUrl не передаётся
HTTP404 КодAPP_NOT_FOUND ОписаниеК ключу не привязано приложение
HTTP404 КодB24_EMBEDDING_APP_NOT_FOUND ОписаниеБитрикс24 не знает идентификатор приложения: локальное приложение на аккаунте удалили или переустановили. Создайте локальное приложение заново и вызовите POST /v1/apps/:id/relink-oauth с новыми bitrixClientId и bitrixClientSecret. Не путать с APP_NOT_FOUND — тот про связку ключа и приложения на стороне платформы Вайбкод
HTTP413 КодPAYLOAD_TOO_LARGE ОписаниеТело отправлено не как JSON и длиннее одного байта. Укажите заголовок Content-Type: application/json
HTTP415 КодFST_ERR_CTP_INVALID_MEDIA_TYPE ОписаниеТело отправлено не как JSON и равно одному байту — та же причина, другая ветка проверки
HTTP422 КодAPP_HOST_NOT_ALLOWED_HERE Описаниеhandler или options.errorHandlerUrl указывает на адрес с именем в домене приложений платформы (<имя>.<домен>, а не app-…), и это имя не закреплено за сервером вашего аккаунта Битрикс24. Ничего не сохраняется, Битрикс24 не вызывается. Имя вашего сервера принимается и сохраняется как адрес app-… этого сервера
HTTP502 КодBITRIX_UNAVAILABLE ОписаниеБитрикс24 отклонил регистрацию места, и причину назвать не удалось. Код и статус ответа Битрикс24 приходят в details. Там же placementInAppList, если место приложению доступно, и diagnostics — "placement_list_skipped", если уточнить причину у аккаунта не получилось, либо "placement_list_empty", если аккаунт ответил пустым списком и ответ ничего не доказывает
HTTP503 КодNETWORK_DEVKEY_REQUIRED ОписаниеКлюч разработчика для автора приложения ещё не выдан

Поля `B24_ACCESS_DENIED`

Поле Тип Описание
Полеerror.details.bitrixCode Типstring ОписаниеБезопасный машинный код отказа ключа разработчика
Полеerror.details.bitrixStatus Типnumber ОписаниеHTTP-статус ответа Битрикс24
Полеerror.details.oauthFallback Типstring Описаниеunavailable, если OAuth-сессии не было, или failed, если повтор по OAuth тоже не удался
Полеerror.details.oauthCode Типstring ОписаниеНеобязательный безопасный машинный код отказа OAuth-повтора
Полеerror.details.oauthStatus Типnumber ОписаниеНеобязательный HTTP-статус OAuth-повтора

Эти поля нужны для диагностики, а не для выбора клиентом следующего транспорта: платформа уже выполнила или отклонила OAuth fallback. Клиент ветвится по внешнему error.code; набор внутренних кодов Битрикс24 не является стабильным API-enum.

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

Таблица ошибок сегментная: она описывает коды этой площадки. На международной площадке отказ доступа аккаунта выражается кодом INT_TARIFF_REQUIRED; переносить коды между площадками и строить по ним общий клиентский enum не следует.

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

  • Место может требовать права у приложения Битрикс24, а не у ключа. Битрикс24 предлагает точку встраивания только приложениям, чьи права покрывают нужный модуль: вкладки задач требуют право задач, пункты профиля — право пользователей, и так далее. Требуемое право по каждому коду приходит в доступных местах полем requiredScope, а сводка гейтов — в самоописании ключа блоком placements.bindPrerequisite. Права приложения фиксируются при установке: изменить их у живого приложения нельзя, нужен перевыпуск ключа авторизации.
  • Обязательные настройки места платформа подставляет сама. Значок чат-виджета и адрес страницы ошибки фонового обработчика подставляются, если вы их не передали. Список подставленных полей приходит в ответе полем optionsDefaulted.
  • Повторная привязка перерегистрирует место. Вызов для уже привязанного кода не отклоняется: платформа снимает прежнюю регистрацию и привязывает место заново, поэтому новые адрес обработчика и подпись вступают в силу. Это единственный способ изменить подпись уже привязанного места.
  • LEFT_MENU добавляет второй пункт меню. Приложение стоит в меню аккаунта с момента создания. Привязка LEFT_MENU добавляет к нему ещё один пункт со своим адресом, а не заменяет первый. Снять лишний пункт — отвязать код LEFT_MENU, пункт, появившийся при создании, при этом остаётся.
  • HTTP 401 ключа разработчика, вызванный только учётными данными, не означает, что нужен другой тариф. Это отказ конкретного канала учётных данных. С действующей OAuth-сессией платформа пробует второй канал; без неё возвращает B24_ACCESS_DENIED, сохраняя машинный код и статус Битрикс24. Явные неавторизационные причины, включая подписочный гейт и нехватку прав, окончательны при любом HTTP-статусе и в OAuth fallback не попадают.
  • Технический адрес сервера приложения заменяется платформенным. Если handler указывает на технический адрес сервера приложения, на аккаунте регистрируется платформенный обработчик приложения. Внешние адреса регистрируются без изменений.
  • Битрикс24 дополняет options своими значениями. Для виджетов чата аккаунт хранит рядом с переданными настройками собственные — область показа, роль и признак экстранета. Они приходят в привязанных местах даже тогда, когда вы их не передавали.
  • Подпись одна для всех языков интерфейса. Значение title уходит на аккаунт единственной подписью, отдельный перевод этим вызовом не задаётся. В привязанных местах поле langAll возвращает эту же подпись для каждого языка.
  • Успешный ответ означает, что аккаунт принял запись, а не что она осталась на месте. Фактическое состояние аккаунта на любой момент после привязки проверяется полем portalSync в привязанных местах: ok — аккаунт вернул код, drift — код числится в Вайбкод и на аккаунте его нет.
  • Одно место может занимать несколько приложений. Битрикс24 различает регистрации по приложению, поэтому привязка того же кода вторым приложением аккаунта не отклоняется и первую регистрацию не снимает. Общий адрес платформенного обработчика у разных приложений этому не мешает.

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