Вызвать метод Битрикс24 BX24.callMethod
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
void BX24.callMethod(
String method,
Object params[,
Function callback
]
);
Функция BX24.callMethod вызывает метод Битрикс24 от имени пользователя, который открыл приложение. Библиотека сама добавляет в запрос данные авторизации и превращает объект params в строку POST-запроса.
Значениями в params могут быть строки, числа, массивы, вложенные объекты и даты. Дату библиотека передает строкой в формате ISO 8601. Вместо значения можно передать элемент поля формы: у обычного поля библиотека возьмет значение, у поля <input type="file"> — выбранный файл.
Функция ничего не возвращает: результат приходит в функцию callback. Если вызвать BX24.callMethod до BX24.init, библиотека отложит запрос до завершения инициализации.
Параметры
Обязательные параметры отмечены *
|
Название |
Описание |
|
method* |
Название метода Битрикс24, например user.get |
|
params* |
Параметры вызываемого метода. Их состав описан на странице этого метода. Если параметров нет, передайте пустой объект |
|
callback |
Функция, которая получит результат запроса — объект ajaxResult. Без нее запрос выполнится, но результат узнать не получится |
Примеры кода
Как использовать примеры в документации
Получить пользователя с идентификатором 10. Для метода user.get приложению нужен один из scope: user, user_brief или user_basic:
BX24.init(() => {
BX24.callMethod('user.get', { ID: 10 }, (result) => {
if (result.error())
{
console.error(result.error());
}
else if (result.data())
{
const user = result.data()[0];
if (user)
{
alert('Пользователя №' + user.ID + ' зовут ' + user.NAME);
}
}
});
});
Получить всех пользователей постранично. Метод user.get возвращает до 50 записей за вызов. Пока result.more() возвращает true, функция result.next() запрашивает следующую страницу и передает ее в тот же обработчик. Передать start в params не получится: библиотека удаляет этот параметр из запроса.
BX24.init(() => {
BX24.callMethod('user.get', { sort: 'ID', order: 'ASC' }, (result) => {
if (result.error())
{
console.error(result.error().toString());
return;
}
console.log(result.data());
if (result.more())
{
result.next();
}
});
});
Загрузить фото сотрудника из поля формы методом user.update. Библиотека прочитает выбранный файл и передаст его в параметре PERSONAL_PHOTO. Методу нужен scope user, а изменить профиль другого сотрудника может только администратор:
// <input type="file" id="photo"> — поле на странице приложения
BX24.init(() => {
BX24.callMethod('user.update', {
ID: 10,
PERSONAL_PHOTO: document.getElementById('photo'),
}, (result) => {
if (result.error())
{
console.error(result.error().toString());
return;
}
console.log(result.data()); // true
});
});
Обработка ответа
Функция callback получает объект ajaxResult. Исходный ответ Битрикс24 хранится в его свойстве answer, например для метода user.get:
{
"result": [
{
"ID": "10",
"ACTIVE": true,
"NAME": "Иван",
"LAST_NAME": "Петров",
"UF_DEPARTMENT": [1]
}
],
"total": 1,
"time": {
"start": 1790283114,
"finish": 1790283114.0253,
"duration": 0.0253,
"processing": 0,
"date_start": "2026-09-24T20:51:54+00:00",
"date_finish": "2026-09-24T20:51:54+00:00"
}
}
Читать ответ удобнее методами объекта.
Методы объекта ajaxResult
|
Метод |
Что возвращает |
|
|
Поле |
|
|
Объект ошибки или |
|
|
Текст ошибки или |
|
|
|
|
|
Общее число записей списка. Если метод его не вернул, |
|
|
Запрашивает следующую страницу списка и передает ее в функцию |
Кроме методов, у объекта есть свойства: answer — исходный ответ Битрикс24, status — HTTP-статус ответа, query — копия настроек запроса с именем метода, параметрами и callback. Время выполнения запроса отдельным методом не возвращается: оно лежит в result.answer.time, его поля описаны в разделе Объект time.
Обработка ошибок
Ошибку, которую вернул Битрикс24, библиотека передает в callback. Метод result.error() возвращает объект:
{
"status": 401,
"ex": {
"error": "insufficient_scope",
"error_description": "The request requires higher privileges than provided by the access token"
}
}
Код ошибки доступен как result.error().ex.error, текст — как result.error().ex.error_description. Объект ex целиком возвращает метод getError(), HTTP-статус — свойство result.error().status и метод getStatus(), а готовую строку с кодом, текстом и статусом — метод toString().
Коды ошибок зависят от вызванного метода и описаны на его странице.
|
Название |
Описание |
|
error |
Строковый код ошибки. Состоит из цифр, латинских букв и знака подчеркивания. Может прийти пустым — тогда причину показывает только |
|
error_description |
Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки |
В callback не попадают:
- ответ со статусом
5xx, сетевой сбой и ответ, который не удалось разобрать как JSON. Библиотека выбрасывает исключениеQuery error!из асинхронного обработчика запроса, поэтомуtry/catchвокруг вызова его не перехватит - ошибка
expired_token. Библиотека сама обновляет авторизацию и повторяет запрос, аcallbackполучает результат повтора
Статусы и коды системных ошибок
HTTP-статус: 4xx, 5xx
Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.
|
Статус |
Код |
Описание |
|
|
|
Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Превышен лимит на интенсивность запросов |
|
|
|
Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит |
|
|
|
В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука |
|
|
|
Методы вызываются только по протоколу HTTPS |
|
|
|
REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24 |
|
|
|
REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — |
|
|
|
Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом |
|
|
|
Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа |
|
|
|
Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на |
|
|
|
Срок действия access-токена истек |
|
|
|
Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям |
|
|
|
Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта |