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

Update a form

PATCH /v1/crm-forms/:id

Bitrix24 method: crm.form.update (REST v3).

Scope: crm. Requires a READWRITE key.

Behavior and parameters

Supply updatedTime from get a form and only the configuration properties to change. Omitted properties stay unchanged. Collections supplied in the request replace the collection; an empty array clears it. The wrapper re-reads the saved form and returns HTTP 200 in the GET DTO. Activate or deactivate the form using the dedicated actions.

Allowed top-level properties: name, active on creation only, languageId, templateId, crm, appearance, fields, responsible, agreements, submission, callback, payment, booking, presetFields, dependencies; update additionally requires updatedTime. Nested values are passed unchanged; Bitrix24 validates them. analytics, integrations, spamProtection and unknown top-level properties are refused before calling Bitrix24. Read field metadata with form fields.

Set required and multiple explicitly for each field; omitted flags are saved as true. List, checkbox, radio, product and booking fields cannot be configured through this contract; validation reports violations. The appearance theme is not part of the writable projection; Bitrix24 decides how to handle an unrecognized nested property.

Bitrix24 does not perform writes on free or demo plans. Permissions, quota and business rules are checked by Bitrix24.

Example

Terminal
curl -X PATCH 'https://vibecode.bitrix24.com/v1/crm-forms/8' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"updatedTime":"2026-10-22T12:00:00Z","name":"Updated contact form"}'

For an OAuth application, use its key and the Authorization: Bearer USER_SESSION_TOKEN header.

JSON
{"success":true,"data":{"id":8,"name":"Contact form","fields":[],"updatedTime":"2026-10-22T12:00:00Z"}}

Errors

HTTP Code Reason
HTTP400 CodeINVALID_PARAMS ReasonInvalid id, body or query shape
HTTP400 CodeMISSING_REQUIRED_FIELDS ReasonMissing updatedTime on PATCH
HTTP400 CodeREADONLY_FIELD ReasonUnpublished field
HTTP400 CodeUNKNOWN_FIELD ReasonUnknown top-level field
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY ReasonREADONLY key
HTTP402 CodeCRM_FORM_WRITE_RESTRICTED ReasonBitrix24 plan does not allow writing CRM forms
HTTP403 CodeSCOPE_DENIED ReasonMissing crm scope
HTTP403 CodeBITRIX_ACCESS_DENIED ReasonBitrix24 permission refusal
HTTP403 CodeCRM_FORM_SYSTEM_IMMUTABLE ReasonSystem form cannot be changed
HTTP404 CodeENTITY_NOT_FOUND ReasonForm does not exist
HTTP409 CodeCRM_FORM_VERSION_MISMATCH ReasonVersion is stale; error.currentUpdatedTime contains the current version
HTTP422 CodeBITRIX_ERROR ReasonOther Bitrix24 refusal, original message retained
HTTP500 CodeCRM_FORM_SIDE_EFFECT_FAILED ReasonWrite already happened; read the form before retrying. On creation error.id identifies the saved form
HTTP502 CodeBITRIX_UNAVAILABLE ReasonInvalid or unavailable upstream response; re-read the form before retrying a write

Bitrix24 codes, statuses and messages are retained. See common limits for shared 429, 502 and 503 responses.

Scalar null values are passed to Bitrix24 for clearing; supplied collections replace the previous collection, and an empty array clears it.