For AI agents: markdown of this page — /docs-content-en/changelog/2026-11-05.md documentation index — /llms.txt
API changes: November 5, 2026
FIX-1105-1: Scrum Definition of Done and sprint metric routes call Bitrix24 again
Before
GET /v1/scrum/groups/{groupId}/dod/settings, GET /v1/scrum/groups/{groupId}/tasks/{taskId}/dod/necessary, GET /v1/scrum/groups/{groupId}/burn-down, GET /v1/scrum/groups/{groupId}/team-speed, POST /v1/scrum/groups/{groupId}/dod/types/{typeId}/settings and POST /v1/scrum/tasks/{taskId}/dod/{typeId} answered 422 BITRIX_ERROR with b24Code: ERROR_EMPTY_ENTITY_ID, although Bitrix24 answered the same parameters successfully.
After
The routes return the actual Bitrix24 response: Definition of Done in Scrum, Sprint metrics.
Impact for integrators
No action is required: the paths, parameters and response shape are unchanged.
FIX-1105-2: calendar event time zones are available in input field descriptions
Before
The timezoneFrom and timezoneTo fields were accepted when creating and updating calendar events but were missing from MCP discover input schemas.
After
MCP discover publishes both fields in the create and update input schemas for /v1/calendar-events. They are write-only; the time zone offset in responses is still included in from and to.
BC-1105-3: a record update is not sent to Bitrix24 again, and a failed re-read is not reported as a refusal
Old format supported until: not provided
Before
A PATCH of an entity record — for example PATCH /v1/deals/{id}, PATCH /v1/contacts/{id}, PATCH /v1/leads/{id} or PATCH /v1/companies/{id} — was repeated on the Vibecode side when the account was temporarily unavailable (a 503 with no error code) or answered with a redirect, and the same write could reach the account more than once: for a phone, email or website it added the row again. When the update was accepted but reading the record back failed, the response was an error — for example 429 RATE_LIMITED — although the record had already changed.
After
The write is sent to Bitrix24 again only after a refusal the account gives before running the method — the request rate limit QUERY_LIMIT_EXCEEDED, as before. Temporary unavailability and a redirect both answer 502 BITRIX_UNAVAILABLE, with no repeat. When the update is accepted but reading the record back fails, the response is 200: data holds only id, and meta.warnings carries the REREAD_FAILED warning.
What integrators should do
After a 429 on PATCH, wait the number of seconds given in Retry-After and repeat the request: the write was not applied. After a 502 or 503, read the record first: the change may have been applied. On REREAD_FAILED, read the record too instead of repeating the PATCH.
BC-1105-4: Application deletion waits for a protective database backup
Old format supported until: not provided
Before
DELETE /v1/infra/servers/{id} for a GALAXY_APP application could return HTTP 200 and delete the application without a protective database backup when backup preparation failed.
After
If backup preparation fails with APP_DB_TOOL_UNAVAILABLE, the request returns HTTP 503. The application remains available for another deletion attempt. The previous deletion without a backup on this failure ends immediately because it could cause data loss.
What integrators should do
Treat HTTP 503 as a deletion refusal. Check the application's database readiness, resolve the failure, and retry DELETE with the same id. Do not consider the application deleted until the request succeeds.
NEW-1105-5: CRM aggregates can group by currency
POST /v1/deals/aggregate, POST /v1/leads/aggregate, POST /v1/quotes/aggregate, POST /v1/invoices/aggregate and POST /v1/companies/aggregate accept the currency field in groupBy: currency for deals and quotes, currencyId for leads, invoices and companies. This is the name the list response uses for the currency. The response carries a separate group with its own count and sums for each currency. Previously such a groupBy was rejected with 400 INVALID_PARAMS, and with records in several currencies sum over the record amount added them into one number without conversion. The legacy GET /v1/{entity}/aggregate accepts the currency field in groupBy the same way.
Also fixed: sum, avg, min and max over amount in POST /v1/quotes/aggregate returned 0 instead of the value computed from quote amounts.
NEW-1105-6: changing and deleting a single phone, email or website row on leads and companies
PATCH /v1/leads/{id} and PATCH /v1/companies/{id} accept fm as an object. A key is a row id from fm in the GET response: a non-empty value changes the row, an empty value deletes it. Keys n0, n1, … add rows. A row accepts only typeId, valueType and value; typeId is PHONE or EMAIL, and also WEB for companies; valueType is required when a row changes. Before writing, Vibecode reads the record: an id this record does not have with the same typeId gets 409 MULTIFIELD_ROW_NOT_FOUND, a record that could not be read gets MULTIFIELD_PRECHECK_FAILED (404, 429 with Retry-After, or 502); in both cases nothing is written. After writing, the record is read again and compared with the request: if the change is not visible, the answer is 422 MULTIFIELD_NOT_APPLIED with the re-read record in data; if it is visible but a row the request did not name is gone or changed, the answer is 200 with the MULTIFIELD_OTHER_ROWS_CHANGED warning; if the comparison is not possible, the answer is 200 with the MULTIFIELD_UNVERIFIED warning. fm as an array, phone, email and web still only add rows; contacts, batch calls, import and create accept fm only as an array, as before.
BC-1105-7: companies no longer have the sourceId and sourceDescription fields
Old format supported until: not provided
Before
The company field schema (GET /v1/companies/fields) declared sourceId and sourceDescription, although a Bitrix24 company has no such fields. A value in PATCH /v1/companies/{id} and POST /v1/companies answered with success and was not stored, sourceId was listed among the aggregation groupBy fields, and select and filter on them were accepted.
After
The fields are not published in the schema and are not accepted for grouping. A write with them still answers with success and adds the UNRECOGNIZED_WRITE_FIELD warning to meta.warnings. An explicit select on them gets 400 UNKNOWN_SELECT_FIELD, filter gets 400 UNKNOWN_FILTER_FIELD, grouping gets 400 INVALID_AGGREGATION_FIELD.
What integrators should do
Remove sourceId and sourceDescription from requests to companies: they were never written or returned. Leads, contacts and deals do have a source.
FIX-1105-8: blueprint text follows the Bitrix24 default design
Before
GET /v1/app/blueprints/:slug always included a paragraph in the blueprint text telling the reader to fetch /v1/me and take the design from data.uiDesign.
After
The paragraph is present when the Bitrix24 default design is enabled for the Bitrix24 account. While that feature is off, the blueprint text is served without the paragraph. The other sections of the blueprint are unchanged.
Impact on integrators
No changes are required. The agent receives the same blueprint text, only the design paragraph differs.
FIX-1105-9: files with keys longer than 100 characters are readable and deletable by key
Before
GET /v1/storage/objects/{key}, HEAD /v1/storage/objects/{key} and DELETE /v1/storage/objects/{key} answered 404 ROUTE_NOT_FOUND for a key longer than 100 characters, although the upload accepted such a key and the object list showed it.
After
These methods accept any key the upload accepts. GET redirects to the file, HEAD returns its metadata, DELETE deletes the file.
Impact on integrators
No changes needed. Files with long keys that are already in storage are available at the same address.