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

Параметры создания приложения

GET /v1/cowork/applications/defaults

Возвращает всё, что мастеру создания приложения нужно узнать до первого вопроса человеку: наборы прав на выбор, режим доступа будущего ключа, остаток квоты ключей и параметры сервера. Читающий эндпоинт без побочных эффектов — ни приложения, ни ключа он не создаёт, поэтому его можно звать при каждом открытии мастера и перед деплоем, чтобы подтвердить цену.

Скоуп: vibe:cowork (ключ Cowork/Code) | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key

Блок server описывает параметры, которые вы передадите в свой POST /v1/infra/servers. Значения из него идут туда дословно — преобразовывать их не нужно.

Примеры

Эндпоинт принимает только ключ Cowork/Code, поэтому примеров два: ключ без скоупа vibe:cowork получает 403 INSUFFICIENT_SCOPE.

curl — ключ Cowork/Code

Terminal
curl https://vibecode.bitrix24.tech/v1/cowork/applications/defaults \
  -H "X-Api-Key: YOUR_COWORK_KEY"

JavaScript — ключ Cowork/Code

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/cowork/applications/defaults', {
  headers: { 'X-Api-Key': 'YOUR_COWORK_KEY' },
})
const { data } = await res.json()

if (!data.available) {
  // Создание приложений отключено — пункт мастера лучше скрыть заранее
  return
}

// Наборы прав рисуем по стабильному id, подписи берём из своих словарей
const presets = data.scopePresets.map(p => ({ id: p.id, scopes: p.b24Scopes }))

// Цену показываем, только когда она пришла
const priceKnown = data.server.priceMonthly !== null

Поля ответа

Поле Тип Описание
Полеsuccess Типboolean ОписаниеВсегда true при успехе
Полеdata.available Типboolean Описаниеfalse — создание приложений выключено на уровне платформы. Скройте пункт мастера: POST /v1/cowork/applications ответит 503 APP_CREATE_DISABLED. Остальные поля приходят полностью и при false
Полеdata.scopePresets Типarray ОписаниеНаборы прав для шага «какие данные портала нужны приложению»
Полеdata.scopePresets[].id Типstring ОписаниеСтабильный идентификатор набора — crm, tasks, people. По нему подставляйте свою подпись: платформа подписей не отдаёт
Полеdata.scopePresets[].b24Scopes Типarray ОписаниеПрава Битрикс24, которые запрашивает набор. Непустой всегда. Эти значения передаются в поле b24Scopes при создании приложения
Полеdata.mode Типstring ОписаниеРежим доступа, в котором создание приложения выдаст ключ, — READONLY или READWRITE. Это самый узкий из режима, который аккаунт назначает новым ключам, режима вызывающего ключа Cowork/Code и режима места Cowork/Code, если ключ принадлежит месту. Место — это пара «сотрудник и портал», его режим общий для всех устройств сотрудника. Исключение — вызывающий ключ в режиме «только чтение»: поле для него равно READONLY, но, пока включён запрет записи для таких ключей (по умолчанию он включён), создать приложение с таким ключом нельзя — создание отвечает 403 WRITE_BLOCKED_READONLY_KEY раньше остальных проверок и ключа не выдаёт. Режим вызывающего ключа — поле data.accessMode ответа GET /v1/me. В остальных случаях покажите значение: при READONLY приложение, пишущее в CRM, откажет уже после публикации
Полеdata.keyExpiresInDays Типnumber ОписаниеСрок жизни нового ключа в днях по политике аккаунта
Полеdata.quota.keysUsed Типnumber ОписаниеСколько мест квоты ключей занято сейчас
Полеdata.quota.keysLimit Типnumber ОписаниеПользовательская квота ключей, которую разрешил администратор аккаунта. Те же значения приходят в details отказа 409 KEY_LIMIT_REACHED, когда сработал лимит пользователя. Если при создании приложения приходит details.scope: "portal", отказ вызвал отдельный портальный потолок платформы, а не это поле
Полеdata.server.placement Типstring ОписаниеКуда встанет будущий сервер — galaxy, galaxy-preferred или standalone. Значения разобраны в «Известных особенностях»
Полеdata.server.serverWillLink Типboolean ОписаниеПривяжется ли созданный вами сервер к карточке этого приложения. Поле отдаётся отдельно, чтобы вам не выводить это из placement
Полеdata.server.provider Типstring | null ОписаниеИдентификатор провайдера для поля provider при создании сервера. Список: GET /v1/infra/providers
Полеdata.server.plan Типstring | null ОписаниеИдентификатор тарифа для поля plan. Список: GET /v1/infra/providers/:providerId/plans
Полеdata.server.region Типstring | null ОписаниеИдентификатор региона для поля region. Список: GET /v1/infra/providers/:providerId/regions
Полеdata.server.priceMonthly Типnumber | null ОписаниеСтоимость сервера за месяц в единицах currency. null означает «цена не прочитана», а не «бесплатно»
Полеdata.server.currency Типstring | null ОписаниеЕдиница измерения цены
Полеdata.warningCodes Типarray ОписаниеКоды предупреждений. Единственный код — SERVER_DEFAULTS_UNAVAILABLE: каталог провайдера прочитать не удалось, поэтому тариф и цена отсутствуют. Поля placement и serverWillLink остаются достоверными, они считаются из политики аккаунта

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

JSON
{
  "success": true,
  "data": {
    "available": true,
    "scopePresets": [
      { "id": "crm", "b24Scopes": ["crm"] },
      { "id": "tasks", "b24Scopes": ["task", "tasks"] },
      { "id": "people", "b24Scopes": ["user_brief", "department"] }
    ],
    "mode": "READWRITE",
    "keyExpiresInDays": 90,
    "quota": { "keysUsed": 1, "keysLimit": 10 },
    "server": {
      "placement": "standalone",
      "serverWillLink": true,
      "provider": "bitrix-cloud",
      "plan": "bc-micro",
      "region": "ru-central1-b",
      "priceMonthly": 600,
      "currency": "Vibes"
    },
    "warningCodes": []
  }
}

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

403 — нет активной подписки Cowork/Code:

JSON
{
  "success": false,
  "error": {
    "code": "COWORK_NOT_ACTIVATED",
    "message": "No active Cowork/Code subscription for this user+portal — an application cannot be created."
  }
}

Ошибки

HTTP Код Описание
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP401 КодINVALID_API_KEY ОписаниеКлюч не опознан: такой строки на платформе нет
HTTP401 КодKEY_INACTIVE ОписаниеКлюч выключен
HTTP401 КодKEY_EXPIRED ОписаниеСрок действия ключа истёк
HTTP402 КодACCOUNT_FROZEN ОписаниеБаланс аккаунта исчерпан — пополните счёт. Отказ приходит и на этот читающий эндпоинт: из-под заморозки он не выведен
HTTP403 КодINSUFFICIENT_SCOPE ОписаниеУ ключа нет скоупа vibe:cowork
HTTP403 КодCOWORK_HARNESS_KEY_FORBIDDEN ОписаниеВызов сделан ключом стороннего агента, выписанным на подписку. Мастер создания приложений такому ключу недоступен — см. Свой агент на подписке
HTTP403 КодCOWORK_NOT_ACTIVATED ОписаниеНет активной подписки Cowork/Code для пары сотрудник и аккаунт
HTTP429 КодRATE_LIMITED ОписаниеСуммарный лимит платформы — 30 запросов в минуту. Действующее для вашего ключа значение приходит в заголовке x-ratelimit-limit
HTTP429 КодQUOTA_EXCEEDED ОписаниеИсчерпана суточная бесплатная квота вызовов при нулевом балансе на предоплате
HTTP503 КодCOWORK_FEATURE_DISABLED ОписаниеCowork/Code отключён на уровне платформы. Отключение самого мастера сюда НЕ попадает — оно приходит полем available: false со статусом 200

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

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

Три значения placement, а не два. standalone — сервер поднимается отдельной виртуальной машиной, она тарифицируется, и цена в блоке server относится именно к ней. galaxy — сервер обязан встать контейнером внутри общего хоста. galaxy-preferred — контейнер предпочтителен, но при невозможности деплой уходит на отдельную машину. На контейнерном размещении деплой даёт приложение, которое запускается только после первой публикации, поэтому текст после создания говорит «создано, теперь опубликуйте», а не «сервер запускается».

Пустая цена без предупреждения — нормальный ответ на контейнерном размещении. SERVER_DEFAULTS_UNAVAILABLE появляется только при placement: "standalone". При galaxy и galaxy-preferred поля plan, region, priceMonthly и currency могут прийти пустыми, а warningCodes останется пустым массивом: отдельная машина там не создаётся, и тарифицировать нечего. Поэтому решение «показывать цену» принимайте по самому priceMonthly, а не по наличию предупреждения.

Поля блока server пустеют не все сразу. provider определяется раньше, чем читается каталог тарифов, поэтому встречается ответ, где provider заполнен, а plan, region, priceMonthly и currency пусты. Проверяйте каждое поле, которое подставляете в создание сервера, а не одно из них как признак остальных.

Поле image в блоке server отсутствует намеренно — его не нужно передавать. При создании сервера платформа сама подбирает свежий образ операционной системы, если поле не задано. Отдельный запрос к каталогу образов ради этого не нужен, и проверка «каталог неполон» на стороне клиента здесь не требуется.

Значения блока server идут в создание сервера дословно. Преобразования между этим ответом и POST /v1/infra/servers нет: provider, plan и region принимаются в том же виде, в каком пришли.

Ключ десктопа Cowork/Code место в квоте не занимает. В quota.keysUsed идут личные ключи сотрудника и ключи приложений на этом аккаунте, а также ключи агентов и проектные ключи деплоя. Отозванный ключ место освобождает — удалять его не обязательно, достаточно отозвать.

Поля предупреждений у двух ручек разные, и это не опечатка. Здесь приходит только warningCodes, поля warnings в ответе нет вовсе, а у создания приложения есть оба. Один тип под оба ответа не подойдёт.

Состав наборов прав может пополняться. Рисуйте только те id, которые знаете, а незнакомые пропускайте: иначе новый набор появится в интерфейсе строкой без подписи. Состав b24Scopes внутри набора мы можем менять, а id — нет, он часть контракта.

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