For AI agents: markdown of this page — /docs-content-en/changelog/2026-08-29.md documentation index — /llms.txt

API changes: August 29, 2026

← Changelog · August 2026

FIX-0829-1: importable field flag in guide

Before

In GET /v1/guide, the detailed data.entities[].fieldsDetailed contract did not indicate whether a field could be set during import.

After

For such fields, data.entities[].fieldsDetailed now includes importable: true. The response remains HTTP 200, and the compact data.entities[].fields map is unchanged.

A link to an app in PUBLIC mode reached a messenger or Bitrix24 chat as a bare subdomain address. The preview fetcher got the same page a browser did, and there was nothing for it to show.

A link to an app in PUBLIC mode expands into a card with a title, a description and an image. The data comes from the app's catalogue entry; with no catalogue title the server name is used, with no icon the platform image. The gateway assembles the card itself: the app receives no request, and a sleeping server is not woken. Under any other access policy there is no card — the preview fetcher gets a neutral page with no title, description or image. A card that has already been shown cannot be recalled: the receiving side caches it, so switching the policy to a private one closes off new requests only. More — Authorization in a Black Hole app.

BC-0829-3: lead filters now support stage semantics

Old format supported until: not provided

Before

GET /v1/leads, POST /v1/leads/search, and POST /v1/leads/aggregate with a stageSemanticId filter returned UNKNOWN_FILTER_FIELD. A stageSemanticId field sent in create, update, import, entity batch, or global batch was ignored.

After

The filter accepts P (in progress), S (success), and F (failure). Sorting by stageSemanticId is also available. The Guide, OpenAPI, and reference describe the field as a read-only string. groupBy: stageSemanticId remains unsupported. Create and update return READONLY_FIELD, import returns IMPORT_ITEM_VALIDATION, entity batch returns BATCH_ITEM_VALIDATION, and global batch returns READONLY_FIELD for the corresponding call.

What integrators should do

Use stageSemanticId only for reads, filters, and sorting. Remove the field from create, update, import, entity batch, and global batch bodies. Choose another field for grouping.

FIX-0829-4: mailbox and org-structure node list calls work in the batch APIs

Before

A {"entity": "mail-mailboxes", "action": "list"} sub-call in POST /v1/batch answered ERROR_METHOD_NOT_FOUND, and the same list in POST /v1/mail/mailboxes/batch answered CALL_FAILED. humanresources-nodes behaved the same way. As a standalone request, GET /v1/mail-mailboxes returned the same list with data.

After

Both batch APIs return the records. Such a sub-call runs as a separate request to Bitrix24 at any limit and spends its own rate-limit quota; neighbouring calls on other entities still travel in one batch. The record count on these two entities always arrives, even with withTotal: false. The get action on them still does not answer with data inside a batch — read the record through its own route. Details are in the "Known specifics" section of the "Batch operations" page.

Separately, the message text of a failed sub-call changed across all batch calls, not just for these two entities. It used to carry the platform's internal diagnostic; now only text that came from Bitrix24 is published, and everything else gets a fixed Internal error. Queue overflow, queue wait timeout and a Bitrix24 timeout no longer fall into that generic code: they arrive under their own QUEUE_OVERFLOW, QUEUE_TIMEOUT, BITRIX_TIMEOUT, ERROR_LOOP_DETECTED, RATE_LIMITED, OPERATION_TIME_LIMIT and TOKEN_REFRESH_FAILED codes, all but the last with a retryAfter field, so they can be told apart from an internal failure. The response stays 200 and the codes of the other sub-errors are unchanged.

The same rule applies when the whole batch request fails rather than one call: the text comes from the Bitrix24 response, and is fixed otherwise. The status, the code and the bitrixError field are unchanged — bitrixError arrives whenever Bitrix24 really answered, even when its answer carried no text.

Single endpoints also stopped returning internal text in one case: a TOKEN_REFRESH_FAILED refusal now carries a fixed message — a fragment of the Bitrix24 response could previously end up in it. The code and the status are unchanged.