For AI agents: markdown of this page — /docs-content-en/entities/crm-forms/activate.md documentation index — /llms.txt

Activate a form

POST /v1/crm-forms/:id/activate

Activates a CRM form by ID after checking its configuration and the account's active-form limit.

Parameters

Parameter Type Required Description
Parameterid (path) Typeinteger Requiredyes DescriptionForm ID. List: GET /v1/crm-forms

The method takes no query string parameters: any such parameter returns 400 INVALID_PARAMS.

Request fields (body)

The body can be omitted or passed as an empty object {}. Any field other than updatedTime returns 400 INVALID_PARAMS.

Field Type Required Description
FieldupdatedTime Typestring Requiredno DescriptionLast modification time of the form from GET /v1/crm-forms/:id. If the form was modified after this time, activation is rejected with 409 CRM_FORM_VERSION_MISMATCH. Without the field, no version check is performed

Examples

curl — personal key

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/crm-forms/75/activate" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

curl — OAuth application

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/crm-forms/75/activate" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/crm-forms/75/activate', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const { data } = await res.json()
console.log(data.active, data.updatedTime)

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/crm-forms/75/activate', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const { data } = await res.json()
console.log(data.active, data.updatedTime)

Bitrix24 validates the type and value of updatedTime.

Response fields

Field Type Description
Fieldsuccess Typeboolean Descriptiontrue on successful activation
Fielddata.active Typeboolean DescriptionForm state after the call
Fielddata.updatedTime Typestring DescriptionLast modification time of the form after activation, ISO 8601 with a time zone offset. Pass it in the next write request

Response example

JSON
{
  "success": true,
  "data": {
    "active": true,
    "updatedTime": "2026-11-05T08:25:33Z"
  }
}

Error response example

409 — the form was modified after the time passed in updatedTime:

JSON
{
  "success": false,
  "error": {
    "code": "CRM_FORM_VERSION_MISMATCH",
    "message": "The CRM form version is outdated. Changes were not saved. Get the form again and retry the request",
    "b24Code": "CRM_FORM_VERSION_MISMATCH",
    "currentUpdatedTime": "2026-11-05T08:25:30Z"
  }
}

Errors

HTTP Code Description
HTTP400 CodeINVALID_PARAMS Descriptionid is not a positive integer, a query string parameter is passed, the body is not a JSON object, or the body contains a field other than updatedTime
HTTP402 CodeCRM_FORM_ACTIVATION_LIMIT_REACHED DescriptionThe account's active-form limit has been reached
HTTP402 CodeCRM_FORM_WRITE_RESTRICTED DescriptionThe Bitrix24 plan does not allow writing CRM forms. Writes are not performed on free and demo plans
HTTP403 CodeCRM_FORM_SYSTEM_IMMUTABLE DescriptionThe form is a system form — system: true in the form list
HTTP404 CodeENTITY_NOT_FOUND DescriptionNo form with this id
HTTP409 CodeCRM_FORM_VERSION_MISMATCH DescriptionThe form was modified after the passed updatedTime. The current modification time is in error.currentUpdatedTime
HTTP403 CodeBITRIX_INSUFFICIENT_SCOPE DescriptionThe Bitrix24 token lacks the required scope
HTTP409 CodeCRM_FORM_REST_NOT_ENABLED DescriptionThe CRM form methods are disabled on the Bitrix24 account
HTTP403 CodeBITRIX_ACCESS_DENIED DescriptionBitrix24 denied access to the form for the key's user
HTTP422 CodeBITRIX_ERROR DescriptionAny other Bitrix24 refusal. The refusal text is in error.message
HTTP500 CodeCRM_FORM_SIDE_EFFECT_FAILED DescriptionThe change is already saved, but the operation completed with an error. Re-read the form via GET /v1/crm-forms/:id before retrying
HTTP502 CodeBITRIX_UNAVAILABLE DescriptionBitrix24 is unavailable or returned a response of an unexpected shape. Re-read the form before retrying
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY DescriptionThe key is read-only
HTTP403 CodeSCOPE_DENIED DescriptionThe key lacks the crm scope
HTTP401 CodeMISSING_API_KEY DescriptionX-Api-Key is not passed
HTTP401 CodeTOKEN_MISSING DescriptionThe key has no valid Bitrix24 authorization

Bitrix24 errors include the original code in error.b24Code and field violations in error.validation when provided. CRM_FORM_* codes retain their HTTP status, code and message. 429 and 503 responses are described in Limits and optimization. For the full list of common API errors, see Errors.

Known specifics

  • The active-form limit can be checked in advance. The account's current number of active forms is limits.activeForms.current, and the ceiling is limits.activeForms.maximum in the builder configuration. When the ceiling is reached, free up a slot by deactivating another form.
  • A repeated call does not return an error. Activating an already active form returns 200 with active: true, and updatedTime does not change.

See also