For AI agents: markdown of this page — /docs-content-en/cowork/applications-defaults.md documentation index — /llms.txt

Application creation parameters

GET /v1/cowork/applications/defaults

Returns everything the application creation wizard needs before asking the user its first question: the available scope presets, the access mode for the new key, the remaining key quota, and the server parameters. This read-only endpoint has no side effects: it creates neither an application nor a key. Call it whenever the wizard opens and again before deployment to confirm the price.

Scope: vibe:cowork (Cowork/Code key) | Base URL: https://vibecode.bitrix24.com/v1 | Authorization: X-Api-Key

The server block contains the parameters to pass to POST /v1/infra/servers. Pass its values verbatim; no conversion is required.

Examples

This endpoint accepts only a Cowork/Code key, so only two examples are provided. A key without the vibe:cowork scope receives 403 INSUFFICIENT_SCOPE.

curl — Cowork/Code key

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

JavaScript — Cowork/Code key

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

if (!data.available) {
  // Application creation is disabled — hide the wizard entry point before the user reaches it
  return
}

// Render presets by their stable id and load labels from your own dictionaries
const presets = data.scopePresets.map(p => ({ id: p.id, scopes: p.b24Scopes }))

// Show the price only when it is available
const priceKnown = data.server.priceMonthly !== null

Response fields

Field Type Description
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata.available Typeboolean Descriptionfalse — application creation is disabled at the platform level. Hide the wizard entry point: POST /v1/cowork/applications returns 503 APP_CREATE_DISABLED. All other fields are still returned in full when it is false
Fielddata.scopePresets Typearray DescriptionScope presets for the step that asks which Bitrix24 account data the application needs
Fielddata.scopePresets[].id Typestring DescriptionStable preset identifier — crm, tasks, people. Use it to look up a label in your own dictionary: the platform returns no labels
Fielddata.scopePresets[].b24Scopes Typearray DescriptionThe Bitrix24 scopes the preset requests. This array is never empty. Pass these values in the b24Scopes field when creating an application
Fielddata.mode Typestring DescriptionAccess mode in which application creation will issue the key — READONLY or READWRITE. It is the narrowest of the mode the Bitrix24 account assigns to new keys, the mode of the calling Cowork/Code key and, if the key belongs to a subscription, the Cowork/Code subscription mode. The subscription is associated with an employee and a Bitrix24 account, and its access mode is shared across all of that employee’s devices. The exception is a calling key in read-only mode: the field is READONLY for it, but while the write block for such keys is in force (it is by default), no application can be created with such a key — creation returns 403 WRITE_BLOCKED_READONLY_KEY before the remaining checks and issues no key. The mode of the calling key is the data.accessMode field of the GET /v1/me response. In all other cases, show this value: under READONLY, an application that writes to CRM fails only after it is published
Fielddata.keyExpiresInDays Typenumber DescriptionLifetime of the new key in days, per the Bitrix24 account policy
Fielddata.quota.keysUsed Typenumber DescriptionNumber of key quota slots currently in use
Fielddata.quota.keysLimit Typenumber DescriptionPer-user key quota allowed by the Bitrix24 account administrator. The same quota values are included in the details of a 409 KEY_LIMIT_REACHED error when the per-user limit is reached. If application creation returns details.scope: "portal", the error is caused by a separate account-wide limit set by the platform, not by this field
Fielddata.server.placement Typestring DescriptionPlacement for the new server — galaxy, galaxy-preferred or standalone. These values are covered in "Known specifics"
Fielddata.server.serverWillLink Typeboolean DescriptionWhether the server you create will be linked to this application's card. This field is returned separately so clients do not have to derive it from placement
Fielddata.server.provider Typestring | null DescriptionProvider identifier for the provider field when creating a server. See GET /v1/infra/providers for available values
Fielddata.server.plan Typestring | null DescriptionPlan identifier for the plan field. See GET /v1/infra/providers/:providerId/plans for available values
Fielddata.server.region Typestring | null DescriptionRegion identifier for the region field. See GET /v1/infra/providers/:providerId/regions for available values
Fielddata.server.priceMonthly Typenumber | null DescriptionEffective price of the server per month for the payer, in currency units, including USER and PORTAL overrides. The adapter price is a fallback when no active price row exists. null means that no price was returned; it does not mean that the server is free
Fielddata.server.currency Typestring | null DescriptionUnit in which the price is expressed
Fielddata.warningCodes Typearray DescriptionWarning codes. The only code is SERVER_DEFAULTS_UNAVAILABLE: the provider catalog could not be retrieved, so the plan and price are unavailable. The placement and serverWillLink fields remain reliable because they are derived from the Bitrix24 account policy

Response example

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-small",
      "region": "bc-eu-central",
      "priceMonthly": 24,
      "currency": "Vibes"
    },
    "warningCodes": []
  }
}

Error response example

403 — no active Cowork/Code subscription:

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

Errors

HTTP Code Description
HTTP401 CodeMISSING_API_KEY DescriptionThe X-Api-Key header is missing
HTTP401 CodeINVALID_API_KEY DescriptionThe key is not recognized — no such key exists on the platform
HTTP401 CodeKEY_INACTIVE DescriptionThe key is disabled
HTTP401 CodeKEY_EXPIRED DescriptionThe key has expired
HTTP402 CodeACCOUNT_FROZEN DescriptionThe account balance is depleted — top it up. This read endpoint also returns the error; it is not exempt from the freeze
HTTP403 CodeINSUFFICIENT_SCOPE DescriptionThe key lacks the vibe:cowork scope
HTTP403 CodeCOWORK_HARNESS_KEY_FORBIDDEN DescriptionThe call was made with a third-party agent key issued for the subscription. The application creation wizard is unavailable to such a key — see Your own agent on the subscription
HTTP403 CodeCOWORK_NOT_ACTIVATED DescriptionNo active Cowork/Code subscription for the user and portal
HTTP429 CodeRATE_LIMITED DescriptionThe platform-wide limit is 30 requests per minute. The effective value for your key is returned in the x-ratelimit-limit header.
HTTP429 CodeQUOTA_EXCEEDED DescriptionThe daily free-call quota is exhausted while the prepaid balance is zero
HTTP503 CodeCOWORK_FEATURE_DISABLED DescriptionCowork/Code is disabled at the platform level. Disabling the wizard itself does not produce this error — it is reported as available: false with status 200

See Errors for the full list of common API errors.

Known specifics

Three placement values, not two. With standalone, the server is provisioned as a separate billable virtual machine, and the price in the server block refers to that machine. With galaxy, the server must be deployed as a container on a shared host. With galaxy-preferred, a container is preferred, but deployment uses a separate machine if container placement is unavailable. With container placement, the application starts only after it is first published, so the post-creation text says "created, now publish it" rather than "the server is starting".

A missing price with no warning is a normal response for container placement. SERVER_DEFAULTS_UNAVAILABLE appears only with placement: "standalone". With galaxy and galaxy-preferred, the plan, region, priceMonthly and currency fields may be null while warningCodes remains an empty array: no separate machine is created, so there is nothing to bill. Decide whether to show a price based on priceMonthly itself, not on the presence of a warning.

The fields in the server block do not necessarily become null together. provider is determined before the plan catalog is retrieved, so a response may include provider while plan, region, priceMonthly and currency are null. Check every field you pass when creating a server instead of treating one field as a proxy for the others.

The image field is intentionally absent from the server block — do not pass it. When the field is omitted, the platform automatically selects a current operating system image. No separate request to the image catalog or client-side check for an incomplete catalog is required.

Pass the values from the server block verbatim when creating a server. There is no conversion between this response and POST /v1/infra/servers: provider, plan and region are accepted exactly as returned.

The Cowork/Code desktop key does not consume a quota slot. quota.keysUsed counts the employee's personal keys and application keys on this Bitrix24 account, as well as agent keys and project deploy keys. A revoked key frees its slot; deleting it is unnecessary.

The warning fields of the two endpoints differ, and that is not a typo. Only warningCodes is returned here; the response has no warnings field, whereas creating an application returns both. A single type cannot represent both responses.

The set of scope presets may grow. Render only presets with recognized id values and skip unfamiliar ones; otherwise, a new preset will appear in the interface without a label. The contents of b24Scopes may change, but id may not because it is part of the contract.

See also