Лимиты REST API
В облачной версии Битрикс24 действуют лимиты интенсивности и ресурсоемкости REST-запросов. Интенсивность — как часто приложение отправляет запросы, ресурсоемкость — сколько времени выполняются его методы. В коробочной версии нагрузку настраивают на стороне сервера.
Лимиты распределяют нагрузку между Битрикс24, чтобы интенсивная автоматизация в одном Битрикс24 не мешала работе других пользователей сервиса.
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Ограничение на время выполнения запроса
В облачной версии Битрикс24 один REST-запрос должен выполниться не дольше чем за 60 секунд. Если обработка занимает больше времени, запрос прерывается по таймауту.
На длительность запроса могут влиять объем данных, сложность фильтров, вложенные вызовы в batch и автоматизация, которая запускается при выполнении метода.
Чтобы снизить риск таймаута:
- разбивайте большие операции на несколько запросов
- используйте постраничную выборку и не запрашивайте лишние поля
- выносите долгие сценарии во внешнюю очередь или фоновую обработку на стороне приложения
- проверяйте поле
durationв объектеtimeответа
В коробочной версии Битрикс24 время выполнения запроса зависит от настроек сервера.
Ограничение времени SQL-запроса
Битрикс24 ограничивает время выполнения одного SQL-запроса внутри REST-метода. Ограничение действует для классических методов и методов REST 3.0. В облачной версии значение лимита задается конфигурацией Битрикс24. В коробочной версии ограничение по умолчанию выключено. Администратор включает его в настройках модуля rest и задает лимит в секундах, по умолчанию 30 секунд. Настройка доступна, только если ее поддерживает база данных.
Если SQL-запрос не уложился в лимит, метод вернет ошибку BITRIX_REST_V3_EXCEPTION_LIMITER_QUERYTIMELIMITEXCEPTION с текстом «Запрос отменён из-за превышения лимита времени» и HTTP-статусом 503. В заголовке Retry-After приходит лимит в секундах. Классические методы на контроллерах Engine возвращают HTTP-статус 400 без Retry-After. В batch ошибка приходит в результате того подзапроса, который превысил лимит.
Ограничения на интенсивность запросов
Лимит интенсивности запросов к Битрикс24 работает по принципу Leaky Bucket Algorithm. Приложение может кратковременно выполнять интенсивные запросы, но не может поддерживать такую интенсивность постоянно.
Механизм работает так:
- Каждый запрос приложения увеличивает условный счетчик запросов в Битрикс24
- Раз в секунду счетчик уменьшается на
Y - Когда значение счетчика превышает порог
X, следующий запрос блокируется со статусом503и кодом ошибкиQUERY_LIMIT_EXCEEDED
Из этого следуют два правила:
- Если все запросы с одного IP-адреса к Битрикс24 идут с интенсивностью не более
Yв секунду, ошибкиQUERY_LIMIT_EXCEEDEDне будет - Приложение может кратковременно выполнять больше
Yзапросов в секунду, например при одновременном поступлении нескольких звонков в интеграции с телефонией. Постоянно поддерживать такую интенсивность нельзя
Значения X и Y зависят от тарифа.
|
Тариф |
Скорость уменьшения счетчика, |
Лимит до блокировки, |
|
Энтерпрайз |
5 в секунду |
250 |
|
Прочие |
2 в секунду |
50 |
Интенсивность запросов учитывается отдельно для каждого Битрикс24. Ограничение, сработавшее для приложения в одном Битрикс24, не влияет на его работу в другом Битрикс24.
Битрикс24 учитывает IP-адрес, с которого приходит запрос. Если несколько приложений на одном сервере работают с одним Битрикс24, у них общий лимит интенсивности.
Выполнение большого числа запросов
Чтобы оценить, сколько запросов можно выполнить, считайте по минимальной устойчивой интенсивности — 2 запроса в секунду. Это 172 800 запросов в сутки. Кратковременно интенсивность может быть выше.
Лимит интенсивности учитывает HTTP-запросы, а не записи в ответе. Списочные методы *.list за один запрос возвращают страницу записей, у многих методов — 50 записей по умолчанию. При 2 запросах в секунду это 8 640 000 записей в сутки.
Если нужно получать большие объемы данных через списочные методы REST API, применяйте рекомендации по выборке больших объемов. Они описывают постраничную выборку без подсчета общего количества элементов.
Чтобы сократить число HTTP-запросов, используйте метод batch. В одном HTTP-запросе он передает до 50 вызовов методов.
Если batch последовательно выполняет 50 вызовов списочных методов и каждый возвращает 50 записей, один HTTP-запрос вернет до 2500 записей. При 2 HTTP-запросах в секунду это до 432 000 000 записей в сутки. Это расчет, а не гарантированный объем выгрузки: на практике результат зависит от ресурсоемкости методов, объема данных и активности в Битрикс24.
batch сокращает число HTTP-запросов, но не отменяет ограничение ресурсоемкости выполняемых методов. REST API не предназначен для массового и интенсивного обмена большими данными. Для отчетов и аналитики по большим объемам данных в Битрикс24 есть BI-конструктор: он получает данные Битрикс24 не через REST API, а через отдельный механизм.
Выбирайте подход по задаче:
|
Задача |
Подход |
|
Регулярно получать страницы данных через REST API |
Списочные методы |
|
Сократить число HTTP-запросов при нескольких независимых REST-вызовах |
batch, но с учетом ресурсоемкости вложенных методов |
|
Строить отчеты и аналитику по большим объемам данных |
Ограничения на ресурсоемкость
Ресурсоемкость — накопленное время выполнения метода, отдельно для каждого приложения или вебхука. В облачной версии Битрикс24 его показывает ключ operating в объекте time ответа.
Фрагмент ответа — объект time:
{
"time": {
"start": 1778747192.910734,
"finish": 1778747193.530359,
"duration": 0.6196250915527344,
"processing": 0.032338857650756836,
"date_start": "2026-05-14T10:26:32+02:00",
"date_finish": "2026-05-14T10:26:33+02:00",
"operating_reset_at": 1778747792,
"operating": 3.3076241016387939
}
}
Время выполнения метода учитывается в 10 одноминутных корзинах. Корзина — календарная минута: она хранит сумму времени выполнения метода за эту минуту. В operating входят текущая минута и девять предыдущих.
Если накопленное время выполнения метода превышает установленный лимит, метод блокируется для приложения или вебхука на 5 минут. На вызовы в это время Битрикс24 отвечает статусом 429 и кодом ошибки OPERATION_TIME_LIMIT. Другие приложения, вебхуки и методы продолжают работать.
Корзина выходит из расчета, когда начинается десятая минута после нее. Ключ operating_reset_at — время в формате timestamp, когда Битрикс24 удаляет самую старую корзину: через 10 минут после первого учтенного в ней вызова. Например, если первый вызов в корзине 10:05 начался в 10:05:20, корзина перестанет учитываться в 10:15:00, а operating_reset_at будет соответствовать 10:15:20. После operating_reset_at эта корзина точно не учитывается.
При этом operating не обязательно обнуляется: корзины следующих минут остаются в расчете.
Битрикс24 проверяет накопленное время перед каждым вызовом. Вызов, на котором время превысило лимит, выполняется до конца. Следующий вызов блокируется с ошибкой OPERATION_TIME_LIMIT, и метод остается заблокированным 5 минут, даже если за это время из расчета вышли старые корзины. После блокировки накопленное время метода считается с нуля.
Вызов batch учитывается в operating метода batch с половинным весом: в облаке пакет, который выполнялся 2 секунды, увеличивает operating примерно на 1 секунду. Вложенные вызовы выполняются как отдельные методы, поэтому время каждого из них учитывается и проверяется по его собственному лимиту.
Для примера предположим, что установленный лимит равен 480 секундам. Приложение вызывает метод crm.item.list, каждый вызов выполняется 20 секунд:
- за последние 10 минут приложение выполнило 20 вызовов, все они остаются в расчете, поэтому
operatingравен 400 секундам - затем завершились еще пять вызовов, и
operatingдостиг 500 секунд - следующий вызов будет заблокирован, так как перед его выполнением значение уже превышает 480 секунд
- через 5 минут блокировка снимется, и накопленное время
crm.item.listдля этого приложения начнет считаться с нуля
Значение лимита в облачной версии задается конфигурацией Битрикс24. В коробочной версии ограничение по умолчанию выключено. Если его включить, лимит по умолчанию составит 420 секунд. Ограничение работает только при подключении к Redis. Ограничение настраивают опции модуля rest:
load_limiter_active— включениеload_limiter_second_limit— лимит в секундахload_limiter_connection_name— соединение с Redis
Показатели ресурсоемкости рассчитывает Битрикс24. На них влияют объем данных, активность пользователей и других приложений.
Один и тот же запрос в разных Битрикс24 может вернуть разные значения operating: в одном для результата нужно обработать 10 записей, в другом — 10 000. Ресурсоемкость запроса нельзя определить только на стороне приложения.
Рекомендации по производительности помогут снизить риск срабатывания ограничений ресурсоемкости.
Как реагировать на ошибки лимитов
|
Ошибка |
Причина |
Что делать |
|
|
Превышена интенсивность HTTP-запросов к Битрикс24 |
Уменьшить частоту запросов и повторять вызовы с увеличивающейся задержкой. Не запускать несколько параллельных серий запросов с одного IP-адреса |
|
|
SQL-запрос внутри метода выполнялся дольше лимита |
Повторить вызов не раньше, чем через время из заголовка |
|
|
Накопленное время выполнения метода превысило лимит для приложения или вебхука |
Приостановить вызовы заблокированного метода для того же приложения или вебхука на 5 минут, затем повторить вызов. Чтобы блокировка не повторилась, снизить нагрузку: разбить выборку, убрать лишние поля, следить за |