Налаштування rate-limiting для API Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування rate-limiting для API Бітрікс24
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування rate-limiting для API Bitrix24

Інтеграція працює, дані синхронізуються — а потім у п'ятницю вечером скрипт починає слати запити в цикл без пауз, натикається на ліміт, отримує помилку QUERY_LIMIT_EXCEEDED і падає. Або гірше — не падає, а повторює запит негайно, погіршуючи ситуацію. API Bitrix24 має жорсткі rate limits, і будь-яка інтеграція повинна їх враховувати. Інакше — втрата даних, розсинхронізація, блокування додатка.

Ліміти REST API Bitrix24

Bitrix24 застосовує обмеження на двох рівнях:

Тип Ліміт Коментар
Вебхуки (вхідні) 2 запити в секунду На один вебхук
Серверні додатки (OAuth) 2 запити в секунду На один додаток на один портал
Добовий ліміт 10 000 запитів на день Для безплатних тарифів. Комерційні вище
batch-запит 50 команд в одному batch Вважається як 1 запит до API

При перевищенні ліміту API повертає HTTP 503 з тілом {"error":"QUERY_LIMIT_EXCEEDED"}. Повторна спроба рекомендується через 500 мс — але не відразу.

Добовий ліміт скидається в 00:00 за часом портала. Для додатків із маркетплейсу ліміти відрізняються і залежать від підписки розробника.

Метод batch

batch — головний інструмент економії запитів. Один виклик batch містить до 50 команд і вважається як один запит:

POST https://your-domain.bitrix24.by/rest/batch/
cmd[0]=crm.deal.list?filter[STAGE_ID]=WON
cmd[1]=crm.deal.list?filter[STAGE_ID]=LOSE
cmd[2]=crm.contact.list?filter[TYPE_ID]=CLIENT

Команди всередину batch виконуються послідовно. Можна використовувати результати попередніх команд через $result:

cmd[0]=crm.deal.get?id=123
cmd[1]=crm.contact.get?id=$result[0][CONTACT_ID]

Замість 50 окремих запитів (25 секунд при 2 req/sec) — один запит за 1-2 секунди.

Стратегії роботи з лімітами

Exponential backoff — при отриманні QUERY_LIMIT_EXCEEDED повторювати запит із зростаючою затримкою: 500 мс → 1 с → 2 с → 4 с. Максимум 5 спроб, потім — помилка в лог.

Черга запитів — замість прямих викликів API запити ставляться в чергу (Redis, RabbitMQ, БД). Воркер розбирає чергу, дотримуючись інтервалу 500 мс між запитами. Це виключає ситуацію, коли два процеси одночасно слають запити і сумарно перевищують ліміт.

Token bucket — програмний лічильник: додаток відстежує кількість запитів за останню секунду і блокує відправлення до звільнення слоту. Реалізується через спільний стан (Redis) для розподілених систем.

Розподіл за часом — важкі синхронізації (повна виїмка сделок, оновлення каталогу) виконуються вночі, коли користувачі не працюють з API.

Моніторинг видатків

Поточні видатки API-викликів можна перевірити методом app.info — повертає кількість залишених запитів за поточний період. Для вебхуків аналогічної метрики немає — потрібно рахувати на своїй стороні.

У логах Б24 (розділ Параметри → Журнал подій) фіксуються помилки API, включаючи перевищення лімітів. Рекомендуємо налаштувати моніторинг: сповіщення при досягненні 80% добового ліміту.

Що налаштовуємо

  • Архітектура інтеграції з урахуванням rate limits: batch-запити, чергі, backoff
  • Воркер для послідовної обробки API-запитів з контролем швидкості
  • Перехід з одиничних запитів на batch для масових операцій
  • Моніторинг видатків API-лімітів та сповіщення при наближенні до порога
  • Розподіл навантаження: фонові синхронізації в непіковий час
  • Діагностика та усунення помилок QUERY_LIMIT_EXCEEDED