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

Обновить приложение

PATCH /v1/apps/:id

Изменяет свойства приложения. Передавайте только те поля, которые нужно изменить.

Параметры

Параметр Тип Обяз. Описание
id (path) string да Идентификатор приложения из создания или списка

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

Поле Тип Описание
title string Название, от 1 до 255 символов. У приложения в каталоге предел — 100 символов
description string | null Описание, до 2000 символов
appUrl string Адрес приложения, только http:// или https://. Пустая строка сохраняется как null
scopes array Набор скоупов приложения, минимум один. Изменение платформенных скоупов vibe:* переносится в активные ключи приложения — см. «Известные особенности»
redirectUris array Адреса перенаправления для OAuth
placements array Места встраивания. Список кодов — Доступные места. Привязать или снять место по одному, не публикуя приложение заново, — Места встраивания
placementResizeEnabled boolean Подстраивать высоту iframe встройки под контент приложения. Значение по умолчанию — false. Перед включением разрешите источник платформы в своей директиве frame-ancestors — условие описано в разделе Приложение в Битрикс24

handlerUrl менять нельзя — поле в теле приводит к 400 HANDLER_URL_READONLY.

Примеры

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/apps/APP_ID \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "appUrl": "https://app-abc12345.vibecode.bitrix24.tech/dashboard" }'

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/apps/APP_ID \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "appUrl": "https://app-abc12345.vibecode.bitrix24.tech/dashboard" }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/apps/APP_ID', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    appUrl: 'https://app-abc12345.vibecode.bitrix24.tech/dashboard',
  }),
})

const { data } = await res.json()

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/apps/APP_ID', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    appUrl: 'https://app-abc12345.vibecode.bitrix24.tech/dashboard',
  }),
})

const { data } = await res.json()

Поля ответа

Поле Тип Описание
data object Приложение после обновления. Набор полей совпадает с ответом создания, без rawKey
data.updatedAt string Дата изменения, ISO 8601
warnings array Появляется при частичной синхронизации мест встраивания: коды, которые не удалось привязать

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

JSON
{
  "success": true,
  "data": {
    "id": "33c4d5e6-f7a8-49b0-1234-5c6d7e8f9012",
    "title": "Дашборд продаж",
    "description": "Обновлено",
    "scopes": ["crm", "user", "placement"],
    "handlerUrl": "https://vibecode.bitrix24.tech/v1/bitrix-handler",
    "appUrl": "https://app-abc12345.vibecode.bitrix24.tech/dashboard",
    "redirectUris": [
      "https://vibecode.bitrix24.tech/oauth/complete",
      "http://localhost"
    ],
    "bitrixClientId": "local.7c3d4e5f6a7b80.55556666",
    "prefix": "vibe_app_local_7c3",
    "suffix": "6666",
    "authorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
    "createdAt": "2026-06-24T09:12:45.781Z",
    "updatedAt": "2026-06-24T09:13:36.974Z",
    "placements": []
  }
}

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

404 — приложение не найдено:

JSON
{
  "success": false,
  "error": {
    "code": "APP_NOT_FOUND",
    "message": "Application not found"
  }
}

Ошибки

HTTP Код Описание
400 HANDLER_URL_READONLY В теле передан handlerUrl — поле задаёт платформа и менять его нельзя
400 NO_USER_TOKEN Смена placements или переименование опубликованного приложения без токена пользователя на облачном портале
400 TITLE_TOO_LONG_FOR_CATALOG Новое название длиннее 100 символов у приложения, добавленного в каталог
403 UNAUTHORIZED Ключ не принадлежит автору или владельцу приложения
403 WRITE_BLOCKED_READONLY_KEY Запрос меняет scopes, а идёт ключом в режиме «только чтение». Остальные поля такой ключ менять может. Подробнее — Режим доступа
403 SCOPE_GRANT_REQUIRES_CONSENT Запрос идёт ключом с зафиксированным при выдаче набором прав — партнёрским или проектным ключом Cowork — и добавляет в scopes платформенный скоуп vibe:*, которого у самого вызывающего ключа нет. Список таких скоупов приходит в error.details.unconsented. Снятие скоупов проходит всегда, а добавление — только в пределах прав, подтверждённых партнёрскому ключу на странице согласия. Личного ключа и ключа авторизации из кабинета эта проверка не касается
404 APP_NOT_FOUND Приложения с указанным id нет
502 BITRIX_PARTIAL_REBIND Битрикс24 отклонил перепривязку места встраивания при переименовании. Новое название не записано — повторите запрос

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

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

  • Переименование приложения в каталоге меняет и подписи на портале. Новое title уходит в карточку каталога (поле catalogTitle пишется вместе с title) и в места встраивания — пункт левого меню и вкладки CRM. Поэтому переименование обращается к Битрикс24 и может вернуть 400 NO_USER_TOKEN или 502 BITRIX_PARTIAL_REBIND. При отказе название не записывается, повтор запроса чинит состояние. Портал кэширует левое меню — новое имя видно после перезагрузки страницы с очисткой кэша. У приложения вне каталога переименование меняет только title.
  • Смена scopes переносит платформенные скоупы vibe:* в ключи приложения. Обновление сравнивает старый и новый набор и применяет разницу по vibe:* ко всем активным ключам приложения — добавленный vibe:ai появляется у ключей, снятый vibe:infra у них снимается. Скоупы портала Битрикс24 (crm, user и прочие) в ключи не переносятся: их набор фиксируется при выпуске ключа и меняется только перевыпуском.
  • Расхождение между скоупами приложения и его ключа чинится двумя запросами. У приложения, созданного до появления переноса, в scopes может стоять vibe:infra, которого у ключа нет — ключ отвечает 403 на создание сервера. Снимите vibe:infra из scopes первым запросом и верните вторым: перенос применяет именно разницу, поэтому вторая правка добавляет скоуп в ключ. Итоговый набор ключа показывает GET /v1/me в поле data.scopes, вызванный этим ключом.
  • Смена placements у опубликованного приложения запускает синхронизацию мест встраивания на портале. Привязка и отвязка проходят прямо на портале Битрикс24, и часть кодов может не привязаться — тогда ответ несёт warnings со списком таких кодов. На облачном портале без токена пользователя синхронизация невозможна, запрос возвращает 400 NO_USER_TOKEN. У приложения в статусе PRIVATE placements пишутся в базу без обращения к порталу.
  • Правка appUrl доезжает до карточки приложения в каталоге Битрикс24 сама. Карточка ставится в очередь на обновление этим же запросом, отдельного вызова не нужно. Открывается она по полному адресу приложения вместе с подпутём, параметрами запроса и якорем, когда адрес указывает на тот же поддомен Black Hole, что и сервер карточки. В остальных случаях карточка открывает корень сервера — в том числе при другом поддомене, своём домене, другой схеме, пустом или неразбираемом адресе, имени пользователя перед хостом и адресе длиннее 512 символов, куда засчитываются и параметры запроса. Отдельно от карточки действует ограничение шлюза: на первом заходе за сессию посетитель приземляется в корень поддомена независимо от адреса карточки — Деплой приложения.
  • Кириллица в title из Windows PowerShell. Отправленная без явной сериализации в UTF-8, она сохраняется знаками вопроса (?): байты теряются на стороне клиента, до отправки запроса. Готовый вызов с UTF8.GetBytesWindows / PowerShell и UTF-8.

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