Настройка Bitrix24 REST API для React-приложений

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Bitrix24 REST API для React-приложений
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Bitrix24 REST API для React-приложений

Битрикс24 REST API — это HTTP-интерфейс к CRM, задачам, пользователям, файлам и другим объектам портала. React-приложение взаимодействует с ним через OAuth 2.0-токены или входящие вебхуки. Без правильной настройки авторизации, CORS и структуры запросов приложение либо не работает вовсе, либо теряет токены и ломается в production.

Схемы авторизации

Входящий вебхук — самый простой вариант. Создаётся в Настройки → Разработчикам → Другое → Входящий вебхук. Выдаёт статичный URL с токеном. Подходит для внутренних инструментов без сложной авторизации.

const WEBHOOK_URL = 'https://your-portal.bitrix24.ru/rest/1/token123abc/';

async function callBX24(method: string, params: object) {
  const response = await fetch(`${WEBHOOK_URL}${method}`, {
    method:  'POST',
    headers: { 'Content-Type': 'application/json' },
    body:    JSON.stringify(params),
  });
  return response.json();
}

OAuth 2.0 через приложение — для приложений, устанавливаемых на разные порталы. Регистрация в разработческом аккаунте, получение client_id + client_secret, flow авторизации через redirect.

BX24.js SDK — для приложений внутри iframe Битрикс24. SDK автоматически передаёт токен авторизованного пользователя.

React Query + BX24 REST

Для систематической работы с REST API в React — обёртка на React Query:

// src/api/bitrix24.ts
import axios from 'axios';

const bx24Api = axios.create({
  baseURL: process.env.REACT_APP_BX24_WEBHOOK,
});

// Автообработка пагинации Битрикс24 (лимит 50 записей за запрос)
async function getAllItems<T>(method: string, params: object): Promise<T[]> {
  const items: T[] = [];
  let start = 0;

  do {
    const { data } = await bx24Api.post(method, { ...params, start });
    items.push(...data.result);
    start = data.next;
  } while (data.next);

  return items;
}

// Хук для списка сделок
export function useDeals(filter?: object) {
  return useQuery({
    queryKey: ['deals', filter],
    queryFn:  () => getAllItems('crm.deal.list', {
      select: ['ID', 'TITLE', 'STAGE_ID', 'OPPORTUNITY', 'ASSIGNED_BY_ID'],
      filter,
      order:  { ID: 'DESC' },
    }),
    staleTime: 60_000,
  });
}

Пагинация Битрикс24 возвращает максимум 50 записей и поле next для следующей страницы — нужно обрабатывать явно.

Batch-запросы для оптимизации

Битрикс24 поддерживает пакетные запросы через batch — до 50 методов в одном HTTP-запросе:

async function getUsersWithDepartments(userIds: number[]) {
  const batchCommands: Record<string, string> = {};

  userIds.forEach(id => {
    batchCommands[`user_${id}`] = `user.get?ID=${id}`;
    batchCommands[`dept_${id}`] = `department.get?ID=user_${id}`;
  });

  const { data } = await bx24Api.post('batch', { halt: 0, cmd: batchCommands });
  return data.result;
}

Batch критично снижает количество HTTP round-trips при первоначальной загрузке данных.

CORS и серверный прокси

При прямых запросах из браузера к Битрикс24 REST возникают CORS-ограничения — особенно при работе с cloud-порталами на поддомене. Рекомендуемый подход: все REST-запросы идут через собственный прокси-сервер (Laravel, Node.js), который добавляет токены и обрабатывает ошибки авторизации.

Обработка ошибок и refresh токена

bx24Api.interceptors.response.use(
  response => response,
  async error => {
    if (error.response?.data?.error === 'expired_token') {
      await refreshBX24Token();
      return bx24Api.request(error.config);
    }
    throw error;
  }
);

Токен Битрикс24 OAuth действует 1 час. Refresh token — 2 недели. Без интерцептора приложение ломается через час работы.

Состав работ

  • Выбор схемы авторизации под задачу (вебхук / OAuth / BX24.js)
  • Настройка приложения в Битрикс24, получение токенов
  • Разработка API-слоя: axios/fetch обёртки, React Query хуки
  • Обработка пагинации, batch-запросов, refresh token
  • Настройка прокси если требуется, CORS-конфигурация

Сроки: базовая интеграция с вебхуком — 2–3 дня. Полный OAuth 2.0 flow с токен-менеджментом и прокси — 1–2 недели.