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

Снять с публикации

POST /v1/apps/:id/unpublish

Переводит опубликованное приложение в UNPUBLISHED и запускает отвязку мест встраивания от портала. Сбой отвязки не отменяет снятие с публикации.

Параметры

Параметр Тип Обяз. Описание
Параметрid (path) Типstring Обяз.да ОписаниеИдентификатор приложения в статусе PUBLISHED. Список: GET /v1/apps

Тело запроса не требуется — пустое тело допустимо.

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/apps/YOUR_APP_ID/unpublish" \
  -H "X-Api-Key: YOUR_API_KEY"

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/apps/YOUR_APP_ID/unpublish" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

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

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/apps/YOUR_APP_ID/unpublish',
  {
    method: 'POST',
    headers: { 'X-Api-Key': 'YOUR_API_KEY' },
  }
)
const body = await res.json()
if (!body.success) throw new Error(body.error.code)
console.log(body.data.placements)

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

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/apps/YOUR_APP_ID/unpublish',
  {
    method: 'POST',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
    },
  }
)
const body = await res.json()
if (!body.success) throw new Error(body.error.code)
console.log(body.data.placements)

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean Описаниеtrue при успешном снятии с публикации
Полеdata Типobject ОписаниеПриложение после снятия — тот же набор полей, что отдаёт данные приложения
Полеdata.placements Типstring[] ОписаниеМеста встраивания, снятие которых не подтверждено. Что означает пустой массив, зависит от раскатки — разбор во врезке ниже
Полеdata.catalogStatus Типstring ОписаниеПосле снятия — UNPUBLISHED
Полеdata.publishedAt Типstring | null ОписаниеДата последней публикации сохраняется — снятие её не сбрасывает
Полеwarnings Типstring[] ОписаниеПояснения по ходу снятия. Поле лежит рядом с data, а не внутри него. Набор строк открытый — разбор под врезкой ниже

Проверка снятия на стороне аккаунта сейчас раскатывается по аккаунтам, поэтому вариантов два:

  • Пока возможность не включена на аккаунте — снятие идёт без ожидания результата по каждому коду, placements всегда приходит пустым массивом, а warnings не приходит вовсе. Пустой список здесь не означает ни «аккаунт подтвердил снятие», ни «отвязка отправлена»: список очищается независимо от исхода. Доступного транспорта отвязки может не быть вовсе — например, когда аккаунт переподключили, токен приложения отозвали или обновить его не удалось, — тогда отвязка не отправляется, и привязка переживает снятие с публикации.
  • После включения — платформа дожидается ответа аккаунта. В placements остаются коды, снять которые не удалось, а в warnings приходят пояснения. После успешных проверок доступа и статуса приложения операция возвращает 200, даже если места снять не удалось. Результат отвязки определяйте по пустоте placements, а не по статусу 200 или наличию warnings.

Непустой warnings сам по себе не означает отказ. Строки бывают четырёх сортов, и два из них описывают успех: снятие подтверждено единственным доступным транспортом, снятие прошло при отказе одного из двух транспортов, код снять не удалось, снимать было нечем. На аккаунте с одним доступным транспортом — например, на облачном аккаунте без ключа разработчика — своя строка приходит на КАЖДОЕ штатно снятое место. Разбирать их в коде не нужно, они для человека.

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

Поле data повторяет объект приложения с пустым массивом placements — что означает пустой массив, сказано во врезке выше:

JSON
{
  "success": true,
  "data": {
    "id": "33c4d5e6-f7a8-49b0-1234-5c6d7e8f9012",
    "title": "Дашборд продаж",
    "description": null,
    "scopes": ["crm", "user", "placement"],
    "handlerUrl": "https://vibecode.bitrix24.tech/v1/bitrix-handler",
    "appUrl": "https://app-abc12345.vibecode.bitrix24.tech",
    "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",
    "authorBitrixUserId": 42,
    "authorBitrixUserIdSource": "member",
    "portalId": "8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
    "createdAt": "2026-06-24T09:12:45.781Z",
    "updatedAt": "2026-06-24T12:47:05.930Z",
    "placements": [],
    "catalogStatus": "UNPUBLISHED",
    "publishedAt": "2026-06-24T10:03:18.204Z"
  }
}

Снятие подтверждено единственным доступным способом. Мест не осталось, но warnings присутствует. Показаны основные поля, полный состав объекта data — Данные приложения:

JSON
{
  "success": true,
  "data": {
    "id": "f928148c-ad20-496c-a144-8420c5322353",
    "title": "Дашборд продаж",
    "placements": [],
    "catalogStatus": "UNPUBLISHED",
    "publishedAt": "2026-10-06T11:11:35.325Z"
  },
  "warnings": [
    "LEFT_MENU: verified via devkey transport only"
  ]
}

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

404 — приложение не опубликовано:

JSON
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Published app not found"
  }
}

Ошибки

HTTP Код Описание
HTTP403 КодINFRA_FORBIDDEN_FOR_COWORK_KEY ОписаниеВызов сделан ключом Cowork/Code — такой ключ работает только с данными, изменяющие операции ему закрыты. Что делать — Проектный ключ для деплоя
HTTP404 КодNOT_FOUND ОписаниеПриложение не существует, принадлежит другому порталу или не находится в статусе PUBLISHED
HTTP403 КодFORBIDDEN ОписаниеВызов сделан ключом авторизации vibe_app_…, выписанным на другое приложение. Таким ключом снимают с публикации только своё приложение, даже если оба приложения создал один автор
HTTP403 КодFORBIDDEN ОписаниеЗапрос не от автора приложения и не от администратора портала
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч не меняет данные Битрикс24, а приложение для него не своё. Своим считается приложение, созданное этим же ключом, для ключей места Коворка — любым ключом того же места, для ключа авторизации — его собственное приложение. Приложение, созданное в кабинете, такому ключу не своё
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч не меняет данные Битрикс24, а среди привязанных мест приложения есть место в рабочем экране сотрудников или места привязаны к обработчику, который не является обработчиком платформы. Снятие с публикации снимает все привязанные места. Приложение, у которого привязан только пункт левого меню на обработчике платформы, снимается без отказа

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

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

  • Возврат в UNPUBLISHED, а не в PRIVATE. Метаданные каталога — название, описание, иконка — сохраняются, поэтому повторная публикация с пустым телом восстанавливает приложение без повторного заполнения.

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