Коды ошибок
Об ошибке Битрикс24 сообщает JSON-структурой с полями error и error_description. Структура приходит в теле ответа вместо данных, которые метод вернул бы при успешном вызове. Так устроен ответ на одиночный вызов — у пакета batch ошибки подзапросов приходят иначе, внутри result:
{
"error": "ERROR_HANDLER_ALREADY_EXIST",
"error_description": "Handler already exists!"
}
Код ERROR_HANDLER_ALREADY_EXIST из примера вернул конкретный метод — в перечень системных ошибок он не входит.
Здесь собраны системные коды — те, что REST API возвращает в ответ на любой метод. Коды конкретного метода и коды сервера авторизации перечислены на других страницах — где искать нужный код, показывает раздел Где описан код ошибки.
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Поля ответа с ошибкой
|
Название |
Описание |
|
error |
Строковый код ошибки. Состоит из цифр, латинских букв и знака подчеркивания. Может прийти пустым — тогда причину показывает только |
|
error_description |
Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки |
Как распознать ошибку в ответе
Ошибку распознавайте по составу полей в теле ответа, а не по HTTP-статусу: со статусом 200 приходят ошибки подзапросов batch. Статус нужен для другого — записывайте его в лог вместе с кодом, он помогает при разборе инцидента.
|
Что в теле ответа |
Что это значит |
Что делать |
|
Есть поле |
Вызов выполнен |
Разобрать данные из |
|
Есть поля |
Вызов не выполнен |
Разобрать ошибку: если код в |
|
Поле |
Пакет batch принят, но часть подзапросов завершилась ошибкой |
Разобрать ошибки подзапросов по ключам команд |
Поле result.result_error есть в ответе batch всегда: в успешном пакете оно приходит пустым — "result_error": []. Признак ошибки — записи в этом поле, а не само его наличие. Ошибку подзапроса batch возвращает по тому же ключу, под которым команда была передана в запросе. Устройство ответа batch разобрано на его странице.
Поле error может прийти пустым — тогда причину показывает только error_description. Так приходят ошибки конкретного метода — чаще всего это ошибки проверки параметров и поиска объекта. Например, запрос сделки с несуществующим идентификатором возвращает статус 400 и тело {"error": "", "error_description": "Not found"}. Проверяйте в ответе наличие ключа error, а не его значение:
// адрес url собирают по правилам из раздела «Как выполняется запрос»,
// имя метода нужно здесь только для лога
async function callMethod(method, url) {
const response = await fetch(url);
const data = await response.json();
// вызов не выполнен: проверяем наличие ключа error, а не его значение
if ('error' in data) {
// код отдаем отдельным полем, чтобы вызывающий код ветвился по нему,
// а статус и имя метода остаются для лога
const error = new Error(data.error_description);
Object.assign(error, { code: data.error, status: response.status, method });
throw error;
}
// ошибки подзапросов batch лежат по ключам команд
// в успешном пакете поле приходит пустым, поэтому считаем записи, а не проверяем наличие
const batchErrors = data.result?.result_error ?? {};
// повторить подзапросы или прервать сценарий — решает вызывающий код
return {
result: data.result,
batchErrors,
hasBatchErrors: Object.keys(batchErrors).length > 0
};
}
Разбирать ответ вручную нужно не всегда: SDK Битрикс24 снимают проверку полей и отдают ошибку средствами языка. В каком виде приходит код ошибки, зависит от библиотеки — смотрите страницу нужного SDK. Реакцию на конкретный код интеграция задает сама, поэтому правила ниже применимы и при работе через SDK.
В формате XML те же данные приходят элементами <error> и <error_description> внутри <response>. Как выбрать формат ответа, описано на странице Как выполняется запрос.
Где описан код ошибки
Перечень кодов зависит от того, какая часть Битрикс24 вернула ошибку.
|
Источник ошибки |
Когда возникает |
Где описаны коды |
|
REST API Битрикс24 |
При работе самого REST API: неверные авторизационные данные, нехватка прав, превышение лимитов, недоступность REST API |
Статусы и коды системных ошибок на этой странице |
|
Конкретный метод |
При нарушении правил самого метода: неверный формат параметра, отсутствие объекта, недопустимое значение поля |
Раздел «Обработка ошибок» на странице метода — например, у метода crm.item.add там перечислены коды, специфичные для создания элемента смарт-процесса |
|
Сервер авторизации |
При обмене авторизационного кода на токены и при их продлении |
Ошибки метода описаны на его странице, потому что зависят от состава параметров и состояния объекта.
Статусы и коды системных ошибок
HTTP-статус: 4xx, 5xx
Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.
|
Статус |
Код |
Описание |
|
|
|
Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Превышен лимит на интенсивность запросов |
|
|
|
Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит |
|
|
|
В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука |
|
|
|
Методы вызываются только по протоколу HTTPS |
|
|
|
REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24 |
|
|
|
REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — |
|
|
|
Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом |
|
|
|
Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа |
|
|
|
Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на |
|
|
|
Срок действия access-токена истек |
|
|
|
Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям |
|
|
|
Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта |
Как обрабатывать ошибки в интеграции
Ветвитесь по коду из поля error, а не по тексту из error_description. Текст ошибки метода приходит на языке интерфейса Битрикс24 и может измениться, поэтому опорой для ветвления он быть не может.
Реакция на системные коды
Порядок строк совпадает с порядком в таблице системных ошибок выше, причины ошибок описаны в ней.
|
Код |
Что делать |
|
|
Повторить вызов через несколько секунд. Если ошибка сохраняется, обратиться к администратору сервера в коробочной версии или в техническую поддержку |
|
|
Снизить интенсивность запросов и повторить вызов позже. Допустимая интенсивность по тарифам — в лимитах REST API |
|
|
Приостановить вызовы этого метода. Ориентир для первой повторной попытки — поле |
|
|
Передать в запросе access-токен или код вебхука: в текущем запросе их нет |
|
|
Заменить |
|
|
Не повторять вызов и обратиться в техническую поддержку: блокировка ручная и сама не снимется |
|
|
Перейти на коммерческий тариф. С другим статусом этот код возвращает метод — смотрите пояснение после таблицы |
|
|
Проверить идентификатор пользователя и код вебхука в адресе запроса: активный вебхук с такой парой не найден |
|
|
Проверить написание имени метода и наличие нужного скоупа |
|
|
Добавить недостающий скоуп в приложение или в вебхук |
|
|
Продлить токены и повторить вызов |
|
|
Попросить администратора Битрикс24 открыть пользователю доступ к приложению |
|
|
Открыть публичную часть сайта: пока она закрыта, REST API не ответит |
Один и тот же код может встретиться и в системном перечне, и в перечне конкретного метода — тогда их различает HTTP-статус. Системные ошибки авторизации и доступа приходят со статусом 401, ошибки метода — с 400 или 403. Например, ACCESS_DENIED со статусом 401 означает, что REST API недоступен на текущем тарифе, а тот же код со статусом 403 и текстом Access denied! Application context required вернул метод, которому нужен контекст приложения.
Повтор вызова, который вернул ошибку метода, даст тот же результат — сначала исправьте запрос.
Похожие коды, которые возвращают методы
Еще три кода возвращают отдельные методы, а не REST API целиком. Пакет batch возвращает ERROR_BATCH_METHOD_NOT_ALLOWED, если подзапрос нельзя выполнить в пакете, и ERROR_BATCH_LENGTH_EXCEEDED для каждого подзапроса сверх 50 — оба разобраны на его странице. Метод configuration.import.register возвращает ERROR_MANIFEST_IS_NOT_AVAILABLE, если в запросе нет кода манифеста или импорт для этого манифеста не разрешен.
Что писать в лог
Записывайте в лог интеграции error, error_description, HTTP-статус и имя вызванного метода. Авторизационные данные — токены и коды вебхуков — в лог не пишите: по ним можно получить доступ к данным Битрикс24.