Інтеграція Бітрікс24 REST API: токени, ліміти, помилки

Інтеграція Бітрікс24 через REST API: токени, ліміти та обробка помилок REST API Бітрікс24 — одна з найбільш документованих частин платформи, але інтеграції на ньому все одно регулярно ламаються: токени протухають о 01:00 ночі, batch-запити повертають часткові помилки, а ліміт у 2 запити на секунд
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція Бітрікс24 REST API: токени, ліміти, помилки
Середній
~1-2 тижні

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1466
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    811
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1167

Інтеграція Бітрікс24 через REST API: токени, ліміти та обробка помилок

REST API Бітрікс24 — одна з найбільш документованих частин платформи, але інтеграції на ньому все одно регулярно ламаються: токени протухають о 01:00 ночі, batch-запити повертають часткові помилки, а ліміт у 2 запити на секунду починає працювати саме тоді, коли потрібно терміново синхронізувати 5000 контактів. Розробка надійної інтеграції — це не просто «викликати метод і записати відповідь». Ми займаємося такими завданнями понад 5 років і накопичили практику, якою ділимося нижче.

Як уникнути проблем із токенами?

Для постійних інтеграцій використовується OAuth2. Бітрікс24 видає access_token (TTL 1 година) і refresh_token (TTL 14 днів). Ключова точка відмови — оновлення токена: якщо два паралельних процеси одночасно виявлять протухлий access_token і обидва підуть його оновлювати — один із refresh_token інвалідується, і інтеграція падає. Рішення: оновлення токена через Redis-локку або блокування на рівні БД.

// Паттерн атомарного оновлення токена через Redis $lock = $redis->set("b24:token_refresh:{$portalId}", 1, ['NX', 'EX' => 10]); if (!$lock) { // Інший процес вже оновлює — чекаємо usleep(500000); return $this->getToken($portalId); } try { $newTokens = $this->requestNewToken($refreshToken); $this->storeTokens($portalId, $newTokens); } finally { $redis->del("b24:token_refresh:{$portalId}"); } 

Для простих сценаріїв без потреби працювати від імені конкретного користувача — вхідний вебхук. URL виду https://domain.bitrix24.ru/rest/1/{token}/method.json зі статичним токеном простіший, але не прив'язаний до користувача і не оновлюється.

Робота з лімітами

Хмарний Бітрікс24: 2 запити на секунду, не більше 50 у batch. Коробковий — налаштовується в /bitrix/.settings.php ключем throttle_controller.

Для масових операцій — тільки batch. 50 методів в одному HTTP-запиті з залежностями через $result[N]:

$batch = [ 'contacts' => 'crm.contact.list?start=0&select[]=ID&select[]=NAME', 'deal_1' => 'crm.deal.get?id=$result[contacts][0][ID]', ]; 

При перевищенні ліміту API повертає помилку QUERY_LIMIT_EXCEEDED. Правильна стратегія: exponential backoff — чекаємо 1с, 2с, 4с. Не ломимося повторно негайно — це погіршує ситуацію.

Ключові групи методів

CRM: crm.lead.*, crm.deal.*, crm.contact.*, crm.company.*. Особливість: користувацькі поля мають префікс UF_CRM_ для лідів/угод або довільний для контактів/компаній — тип і ID поля потрібно запитувати через crm.userfield.list.

Завдання: tasks.task.*. Поле UF_* у завданнях — через task.userfield.getlist. Чеклісти — окремі методи task.checklistitem.*.

Диск: disk.file.*, disk.folder.*. Завантаження файлу — через multipart POST на спеціальний URL, який спочатку потрібно отримати методом disk.folder.uploadfile.

Користувачі: user.get, user.add, user.update. Фільтрація за DEPARTMENT — ID відділу, не його назва.

Обробка пагінації

Більшість методів списку повертають максимум 50 записів і поле next з курсором. Правильний обхід:

$start = 0; do { $response = $b24->call('crm.deal.list', ['start' => $start, 'filter' => $filter]); $items = $response['result']; // обробка $items $start = $response['next'] ?? null; } while ($start !== null); 

Для великих списків (>10 000 записів) start працює повільно — offset-пагінація деградує. Замість неї використовуємо фільтрацію за ID > last_id і сортування за ID ASC.

Робота з полями типу «список» і «прив'язка»

Поля типу «Прив'язка до елементу CRM» (crm_entity) повертають масив навіть якщо прив'язка одиночна. При оновленні — передаємо масив. Поля типу «Список» — через числовий ID значення, не через його відображуване ім'я. Список значень — crm.status.list?filter[ENTITY_ID]=STATUS_ID.

Обробка помилок і забезпечення ідемпотентності

Кожен запис зовнішньої системи повинен мати mapped ID у Бітрікс24. Стандартний підхід: використовуємо поле UF_CRM_EXTERNAL_ID (або аналогічне кастомне поле) для зберігання зовнішнього ідентифікатора. Перед створенням — перевіряємо crm.deal.list?filter[UF_CRM_EXTERNAL_ID]=ext123. Якщо знайшли — оновлюємо, не знайшли — створюємо. Це захищає від дублів при повторному запуску синхронізації.

API повертає помилки в полі error + error_description. Типові:

Помилка Причина Рішення
QUERY_LIMIT_EXCEEDED Перевищено ліміт 2 rps Exponential backoff
expired_token access_token протух Оновити через refresh_token
ERROR_CORE Помилка на стороні Бітрікс24 Повтор через 30–60 сек
ACCESS_DENIED Прав недостатньо Перевірити права додатку/користувача
NOT_FOUND Об'єкт видалено Видалити маппінг у зовнішній системі

Всі виклики API логуємо: метод, параметри (без токенів), статус відповіді, час виконання. При error rate > 5% за 5 хвилин — алерт.

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

Етап Зміст Строк
Проектування Карта даних, вибір методів, модель маппінгу 3–5 днів
OAuth2 та управління токенами Авторизація, зберігання, ротація 2–3 дні
Ядро синхронізації CRUD-операції з Бітрікс24, пагінація 1–2 тижні
Обробка лімітів і помилок Rate limiting, retry, circuit breaker 3–5 днів
Тестування Юніт-тести, інтеграційні тести на sandbox 1 тиждень
Моніторинг Логування, метрики, алерти 2–3 дні

Сумарно: 4–8 тижнів залежно від кількості синхронізованих сутностей і напрямків передачі даних.

Що входить у роботу

  • Документація: схема даних, опис маппінгу, інструкція з розгортання.
  • Набір токенів і доступів: коректне налаштування OAuth2 або вебхуків.
  • Навчання команди: як обслуговувати інтеграцію, як розширювати функціонал.
  • Технічна підтримка після релізу: 2 тижні моніторингу та виправлення багів.

Чому обирають нас?

Наш досвід — 5+ років і більше 30 реалізованих інтеграцій для різних галузей. Гарантуємо: кожен проект проходить повне тестування на sandbox перед викаткою в прод. Ми пропонуємо комплексний підхід: проектуємо, реалізуємо, тестуємо і передаємо документацію. Для глибокого розуміння архітектури REST API рекомендуємо офіційну документацію Бітрікс24. Зв'яжіться з нами — оцінимо ваш проект за 1 день. Отримайте консультацію прямо зараз.