Вызвать метод Битрикс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*
string

Название метода Битрикс24, например user.get

params*
object

Параметры вызываемого метода. Их состав описан на странице этого метода. Если параметров нет, передайте пустой объект {}: функция callback должна стоять третьим аргументом

callback
function

Функция, которая получит результат запроса — объект 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

Метод

Что возвращает

data()

Поле result ответа: массив, объект или скалярное значение — зависит от вызванного метода. Если произошла ошибка, возвращает undefined

error()

Объект ошибки или undefined, если ошибки нет. Как устроен объект ошибки, описано в разделе Обработка ошибок

error_description()

Текст ошибки или undefined, если ошибки нет

more()

true, если у списка есть следующая страница

total()

Общее число записей списка. Если метод его не вернул, total() возвращает NaN

next(cb)

Запрашивает следующую страницу списка и передает ее в функцию cb, а без нее — в прежний обработчик. Если страниц больше нет, возвращает false

Кроме методов, у объекта есть свойства: 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
string

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

error_description
string

Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки

В callback не попадают:

  • ответ со статусом 5xx, сетевой сбой и ответ, который не удалось разобрать как JSON. Библиотека выбрасывает исключение Query error! из асинхронного обработчика запроса, поэтому try/catch вокруг вызова его не перехватит
  • ошибка expired_token. Библиотека сама обновляет авторизацию и повторяет запрос, а callback получает результат повтора

Статусы и коды системных ошибок

HTTP-статус: 4xx, 5xx

Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

429

OPERATION_TIME_LIMIT
Method is blocked due to operation time limit

Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит

401

NO_AUTH_FOUND
Wrong authorization data

В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука

401

INVALID_REQUEST
Https required

Методы вызываются только по протоколу HTTPS

401

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24

401

ACCESS_DENIED
REST is available only on commercial plans

REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — REST is available only by subscription

401

INVALID_CREDENTIALS
Invalid request credentials

Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом

404

ERROR_METHOD_NOT_FOUND
Method not found!

Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа

401

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на provided by the access token

401

expired_token
The access token provided has expired

Срок действия access-токена истек

401

user_access_error
The user does not have access to the application

Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям

403

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение