Для AI-агентов: markdown этой страницы — /docs-content/changelog/2026-10-23.md индекс документации — /llms.txt

Изменения API: 23 октября 2026

← Журнал изменений · Октябрь 2026

FIX-1023-1: подсказка 502 для галактики в ERROR, ни разу не подключавшейся, больше не советует повтор

Было

POST /v1/infra/servers/:id/deploy и DELETE /v1/infra/servers/:id для galaxy-приложения, виртуальная машина галактики которого не поднялась и осталась в статусе ERROR, отвечали 502 GALAXY_HOST_UNREACHABLE с подсказкой error.hint: подождать 1–2 минуты, повторить тот же запрос и не удалять слот. Повтор так и не помогал, ответ на удаление вдобавок говорил «try again shortly».

Стало

Для галактики в статусе ERROR, туннель которой ни разу не подключался (blackholeStatus — NONE), код ответа прежний, 502 GALAXY_HOST_UNREACHABLE, но поля error.hint говорят прямо: повтор не поможет. Галактику, которая так ни разу и не запустилась, платформа снимает фоновой уборкой вместе со слотом приложения, после чего запросы по id приложения отвечают 404, и приложение создаётся заново. Если слот держится дольше суток, нужно запустить галактику из кабинета или обратиться в поддержку. В остальных случаях подсказка не изменилась, в том числе для галактики в ERROR, которая уже подключалась: её поднимает повтор или запуск. Подробности — в разделе Галактики.

Влияние на интеграторов

Не повторяйте deploy и удаление, если error.hint.reason говорит, что галактика в статусе ERROR и её туннель ни разу не подключался: дождитесь снятия слота и создайте приложение заново.

NEW-1023-2: Отправка результата CRM-формы и формы клиенту открытой линии

POST /v1/crm-forms/:id/results отправляет данные посетителя и возвращает 201 с data.resultId. Битрикс24 может создавать записи CRM, запускать роботов и уведомлять ответственных. POST /v1/openlines/sessions/send-form принимает sessionId и formId, сам получает коды формы и возвращает 200 с data.sent. Это сообщение клиенту, а не подтверждение доставки. Оба маршрута требуют READWRITE; отправке в диалог нужны скоупы imopenlines и crm.

FIX-1023-3: Подсказки GET /v1/me учитывают ограничения ключа Коворка

Было

Ответ GET /v1/me для ключа со скоупом vibe:cowork предлагал операции управления приложениями и серверами, которые этот ключ не мог выполнить.

Стало

Ответ остаётся HTTP 200. Правила, советы по восстановлению серверов и инструкции по встраиванию учитывают ограничения ключа: вместо адресов операций, отвечающих 403 INFRA_FORBIDDEN_FOR_COWORK_KEY, они отсылают к доступному пути в deployment или действию пользователя. Для ключей без vibe:cowork подсказки сохраняются.

FIX-1023-4: Выкладка на новый или проснувшийся сервер переживает обновление системы

Было

POST /v1/infra/servers/:id/deploy с установкой окружения на только что созданный или проснувшийся сервер мог завершиться DEPLOY_TIMEOUT примерно через 330 секунд: автоматическое обновление системы перезапускало сеть, и установка окружения обрывалась вместе с соединением.

Стало

Перед установкой окружения проверка готовности дожидается окончания системных обновлений в пределах прежних 15 минут ожидания. В первый час после создания или пробуждения сервера установка окружения переживает временную потерю соединения, а итог дочитывается после его восстановления. Если итог подтвердить не удалось, выкладка по-прежнему отвечает DEPLOY_TIMEOUT, в худшем случае примерно через 390 секунд после начала установки. Сообщение об окончании ожидания готовности называет причину APT_BUSY, если сервер всё ещё ставил обновления.

Влияние на интеграторов

Запросы менять не требуется. Форматы JSON и SSE и коды ошибок сохранены. Установка окружения по-прежнему отправляется на сервер один раз и не повторяется.

BC-1023-5: CRM-формы: чтение конфигурации и справочников конструктора

Поддержка старого формата до: не предусмотрена

Было

GET /v1/crm-forms возвращал только id и name без пагинации, meta.total содержал размер ответа. GET /v1/crm-forms/:id отдавал ограниченный состав формы; типы полей ФИО были name, last-name, second-name, видимость и подписи соглашений приходили из прежнего контракта.

Стало

Список поддерживает фильтры name, code, entityScheme, responsibleUserId, диапазоны createdTime/updatedTime и limit/offset до 1000. Ответ расширен code, active, system, createdTime, updatedTime. Битрикс24 не сообщает общее количество: meta.total отсутствует. isCallback фильтрует уже выбранную страницу.

Карточка формы сохраняет прежние ключи и добавляет блоки конфигурации. fields[].type у ФИО теперь string; fields[].visible всегда true, поскольку новый контракт не публикует видимость. agreements[].name сохраняет AGREEMENT_<id>, а agreements[].label теперь null: CRM-контракт не предоставляет текст подписи. Полный блок соглашений доступен как agreementsSettings. Поля дополнены sort, valueType, value; варианты списков остаются в items.

Новые маршруты: GET /v1/crm-forms/configuration, /v1/crm-forms/scenarios, /v1/crm-forms/scenario-categories, /v1/crm-forms/entity-fields?entityName=LEAD, /v1/crm-forms/fields, /v1/crm-forms/fields/:name. Они читают настройки и справочники конструктора. Аналитика, интеграции и защита от спама не публикуются.

Что делать интеграторам

Обходите список страницами через limit/offset; не используйте meta.total как размер коллекции. Считайте string типом поля ФИО; не используйте visible для определения скрытых полей. Учитывайте nullable label соглашения. Отказы Битрикс24 возвращают исходную причину; отсутствие формы — 404 ENTITY_NOT_FOUND.

FIX-1023-6: запрос к модели bitrix без изображений больше не упирается в предел для изображений

Было

POST /v1/chat/completions с моделью bitrix/* мерил любое тело тем же пределом, что и тело с изображениями, и отклонял длинную историю сообщений без изображений ответом 413 ai_payload_too_large.

Стало

Тело без изображений меряется собственным, более высоким пределом кластера моделей и уходит модели. Тело с изображениями меряется прежним пределом, а изображения data: в нём платформа по-прежнему уменьшает сама. Если тело без изображений не уложилось в свой предел, ответ — 413 ai_payload_too_large: сообщение называет размер запроса, действующий предел и советует сократить историю сообщений, а не уменьшать изображения.

Влияние на интеграторов

Действий не требуется. Запросы, которые проходили раньше, работают как раньше. Подробнее — анализ изображений.

FIX-1023-7: неподдерживаемый filter в GET-коллекциях получает предупреждение

Было

В перечисленных ниже GET-эндпоинтах общий параметр filter игнорировался, а ответ возвращал более широкую коллекцию без объяснения.

Стало

Эти эндпоинты сохраняют прежний успешный ответ и те же данные. Если общий filter не поддерживается, ответ содержит заголовок Warning: 299 - "filter is not supported on this endpoint and was ignored"; использование фиксируется сервером. Для /v1/chats/recent и /v1/chats/:dialogId/users это относится к legacy-ветке. format=v2 сохраняет прежнюю строгую проверку.

Затронутые эндпоинты:

План перехода

Используйте именованные параметры эндпоинта или отбирайте прежний ответ на стороне приложения. Перед возможным включением строгого отказа интеграторы будут уведомлены и получат время на переход; дата переключения не назначена.

FIX-1023-8: Список моделей Bitrix учитывает настройку доступа

Было

Штатные модели Bitrix без настроенного доступа предлагались в GET /v1/models, но запрос генерации возвращал внутреннюю ошибку.

Стало

Такие модели не предлагаются в списке. При прямом запросе генерации без настроенного доступа возвращается 402 ai_credentials_not_configured вместо внутренней ошибки.

Влияние на интеграторов

Модели с настроенным доступом остаются доступны для генерации. Выбирайте доступную модель из списка или настройте доступ к Bitrix.

FIX-1023-9: сноски веб-поиска соответствуют возвращённым источникам

Было

В ответе POST /v1/search через bitrix-search в answer могли оставаться сноски [6] и [7], хотя results содержал только пять источников с id 1–5 из-за max_results. Ответ оставался HTTP 200.

Стало

При нормализации маркера [sourceId:N] сноска [N] появляется в финальном answer, только если источник с этим id вошёл в возвращённый results. Иначе маркер удаляется. Это правило действует в обычном ответе и в завершающем событии done. Количество результатов по-прежнему ограничено max_results. Ответ остаётся HTTP 200.

Влияние на интеграторов

Менять запросы не нужно. Состав и номера возвращённых источников сохраняются. Удаляется только сноска, сам текст утверждения остаётся. Промежуточные answer_delta не меняются, поэтому финальный текст потока нужно брать из done.answer.

BC-1023-10: Лимиты операций V1 учитывают проверенный ключ доступа

Поддержка старого формата до: не предусмотрена

Было

Создание сервера, получение SSH-доступа, настройки сна, пробуждения и порта, изменение заданий сервера, загрузка исходников приложения или сервера, получение чертежа приложения, списка исходников и скачивание файла комментария задачи делили лимит между разными ключами с одного IP-адреса. Запросы без действующего ключа тоже расходовали этот лимит, а смена IP-адреса давала новый бюджет.

Стало

Эти операции учитывают запросы отдельно для каждого проверенного ключа. Разные ключи с одного адреса имеют независимый бюджет, а один ключ с разных адресов использует общий бюджет операции. Запросы без ключа или с неверным ключом, дошедшие до проверки доступа, получают HTTP 401 и не расходуют маршрутный бюджет. Порог и окно каждого маршрутного лимита сохранены; общие ограничения частоты запросов продолжают действовать.

HEAD /v1/me/sources больше не поддерживается и возвращает HTTP 404. GET /v1/me/sources остаётся доступен с прежним форматом ответа.

Что делать интеграторам

Вместо HEAD /v1/me/sources используйте GET. Для остальных перечисленных операций изменять запросы не требуется. При HTTP 429 учитывайте Retry-After; смена адреса не сбрасывает бюджет ключа.

BC-1023-11: Пакетное чтение событий календаря отклоняет from, to и section в params

Поддержка старого формата до: не предусмотрена

Было

В POST /v1/calendar-events/batch действие list молча отбрасывало прямые params.from, params.to и params.section. Подвызов завершался успешно, но без этих ограничений.

Стало

Подвызов с любым из этих ключей получает ошибку UNSUPPORTED_BATCH_LIST_PARAM. Соседние подвызовы продолжают работу, ответ пакета остаётся HTTP 200.

Что делать интеграторам

Уберите from, to и section из подвызовов пакета. Для выборки событий по периоду или разделу используйте одиночный GET /v1/calendar-events.

FIX-1023-12: Пакетное чтение событий и разделов календаря передаёт обязательные параметры

Было

В POST /v1/calendar-events/batch и POST /v1/calendar-sections/batch действие list теряло обязательные type и ownerId из params. Те же ключи в params.filter вызывали UNSUPPORTED_FILTER.

Стало

Оба варианта передают type и ownerId в метод Битрикс24. Если обязательного значения нет, оно пустое или нескалярное, соответствующий подвызов получает MISSING_REQUIRED_PARAMS. Соседние подвызовы продолжают работу, ответ пакета остаётся HTTP 200. Примеры справочника показывают рабочее действие list.

Влияние на интеграторов

Передавайте type и ownerId в params или params.filter.

NEW-1023-13: Создание, изменение и управление CRM-формами

CRM-формы можно создавать, изменять, проверять, включать, выключать и удалять через CRM-формы. Новые маршруты используют REST v3: POST /v1/crm-forms, PATCH /v1/crm-forms/:id, POST /v1/crm-forms/validate, POST /v1/crm-forms/:id/validate, POST /v1/crm-forms/:id/activate, POST /v1/crm-forms/:id/deactivate, DELETE /v1/crm-forms/:id. Проверка доступна READONLY-ключам; запись требует READWRITE и скоупа crm. Изменение требует updatedTime из GET, удаление активной формы — confirm=true. Создание возвращает 201, остальные успешные операции — 200, включая проверку с valid:false.

NEW-1023-14: Встраивание CRM-формы и места её подключения

Через API Вайбкод доступны код встраивания и публичная ссылка CRM-формы: GET /v1/crm-forms/:id/embedding. Параметр variant выбирает inline, click или auto. PATCH /v1/crm-forms/:id/embedding сохраняет настройки кнопки и автоматического показа по версии формы updatedTime и возвращает перечитанные данные. Запись меняет версию формы.

GET /v1/crm-forms/:id/site-buttons и GET /v1/crm-forms/:id/openlines возвращают страницу всех виджетов и открытых линий портала с признаком bound для выбранной формы, включая неподключённые. Чтению достаточно скоупа crm и READONLY; записи нужен READWRITE.

NEW-1023-15: Права методов и готовность ключа компании

Ключ компании проверяет право каждого метода Битрикс24 по текущему согласию и отклоняет пакет целиком, если хотя бы один метод не разрешён. Готовность подключения теперь допускает любое одно право Битрикс24, включая user, без обязательного crm. Искусственное ограничение READONLY снято; список доступных HTTP-маршрутов сохранён.

FIX-1023-16: Публикация после прерванной установки пакетов

Было

Публикация приложений Node.js 20, Node.js 24 и Python 3.12 останавливалась, если системная установка пакетов была прервана.

Стало

Публикация автоматически пытается завершить настройку пакетов и продолжает работу при успешном восстановлении в пределах прежнего времени ожидания.

FIX-1023-17: модели, загруженные с ключа стандартного провайдера, привязываются к этому ключу

Было

POST /v1/ai/credentials/:id/fetch-models сохранял модели стандартного провайдера (OpenAI, Anthropic, Google Gemini, OpenRouter и других) в общий каталог платформы. Их видели все пользователи, у которых подключён ключ того же провайдера, а повторная загрузка возвращала в работу модели каталога платформы, выведенные из обращения.

Стало

Модели любого провайдера привязываются к ключу, с которым их загрузили, как раньше у Custom-ключей. Они видны и вызываются только с этим ключом, попадают в GET /v1/ai/credentials/:id/models и получают статус DEPRECATED, когда провайдер перестаёт их возвращать. Каталог платформы загрузка не меняет.

Влияние на интеграторов

Менять ничего не нужно. Чтобы вызывать модель стандартного провайдера своим ключом, загрузите каталог этим ключом через fetch-models. У одного ключа не больше 1000 моделей: если новые модели не поместились, ответ несёт новое поле truncated: true. Модель ключа получает возможности (capabilities) одноимённой модели каталога платформы, поэтому вызовы со response_format и эмбеддинги работают как раньше.

FIX-1023-18: единый выбор модели для личного ключа и ключа портала

GET /v1/models, GET /v1/models/:id, POST /v1/chat/completions и POST /v1/embeddings теперь выбирают личную модель раньше одноимённой модели ключа портала и каталога платформы. В списках моделей, включая GET /v1/me, один идентификатор учитывается один раз.

Эмбеддинги больше не выбирают модель чужого ключа: если своей модели нет, ответ — 404 ai_model_not_found, вместо ошибочного 402 ai_credentials_not_configured. Менять интеграцию не требуется.

FIX-1023-19: Замена модели в публичном API учитывает каталог платформы

Было

В ответе GET /v1/models/{id} цена замены и поле replaced_by, а также заголовки Link и X-Model-Replacement ответа POST /v1/chat/completions могли ссылаться на модель, доступную только по ключу клиента.

Стало

Эти сведения о замене публикуются только для моделей из каталога платформы. Если старая ссылка ведёт на модель ключа клиента, карточка сохраняет собственную цену без replaced_by, а заголовки замены не выдаются.