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
success boolean Always true on success
data.available boolean false — 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
data.scopePresets array Scope presets for the step that asks which Bitrix24 account data the application needs
data.scopePresets[].id string Stable preset identifier — crm, tasks, people. Use it to look up a label in your own dictionary: the platform returns no labels
data.scopePresets[].b24Scopes array The Bitrix24 scopes the preset requests. This array is never empty. Pass these values in the b24Scopes field when creating an application
data.mode string The access mode the Bitrix24 account assigns to new keys — READONLY or READWRITE. Show this value: on a Bitrix24 account in READONLY mode, an application that writes to CRM fails only after it is published
data.keyExpiresInDays number Lifetime of the new key in days, per the Bitrix24 account policy
data.quota.keysUsed number Number of key quota slots currently in use
data.quota.keysLimit number Maximum number of keys allowed by the Bitrix24 account administrator. The same quota values are included in the details of a 409 KEY_LIMIT_REACHED refusal
data.server.placement string Placement for the new server — galaxy, galaxy-preferred or standalone. These values are covered in "Known specifics"
data.server.serverWillLink boolean Whether 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
data.server.provider string | null Provider identifier for the provider field when creating a server. See GET /v1/infra/providers for available values
data.server.plan string | null Plan identifier for the plan field. See GET /v1/infra/providers/:providerId/plans for available values
data.server.region string | null Region identifier for the region field. See GET /v1/infra/providers/:providerId/regions for available values
data.server.priceMonthly number | null Catalog price of the server per month, in currency units. Actual charges for a given Bitrix24 account may differ. null means that no price was returned; it does not mean that the server is free
data.server.currency string | null Unit in which the price is expressed
data.warningCodes array Warning 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
401 MISSING_API_KEY The X-Api-Key header is missing
401 INVALID_API_KEY The key was not found or was revoked
401 KEY_INACTIVE The key is disabled
401 KEY_EXPIRED The key has expired
402 ACCOUNT_FROZEN The account balance is depleted — top it up. This read endpoint also returns the error; it is not exempt from the freeze
403 INSUFFICIENT_SCOPE The key lacks the vibe:cowork scope
403 COWORK_HARNESS_KEY_FORBIDDEN The 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
403 COWORK_NOT_ACTIVATED No active Cowork/Code subscription for the user and portal
429 RATE_LIMITED The platform-wide limit is 30 requests per minute. The effective value for your key is returned in the x-ratelimit-limit header. It is lower than the platform-wide limit because that limit is divided across replicas
429 QUOTA_EXCEEDED The daily free-call quota is exhausted while the prepaid balance is zero
503 COWORK_FEATURE_DISABLED Cowork/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