Отрасль: CRM и продажи. Актуально на 2026-10-24.
REST API облачного и коробочного Битрикс24: CRM (лиды, сделки, контакты, компании, смарт-процессы), задачи, пользователи, события и многое другое. Методы вызываются HTTP-запросом к адресу конкретного портала и выполняются от имени пользователя с его правами. Для CRM основной набор — универсальные методы crm.item.*, которые работают с любым типом объекта через entityTypeId.
Заявка с сайта превращается в контакт и сделку, привязанную к нему, — менеджер сразу видит её в воронке.
HOOK='https://<портал>.bitrix24.ru/rest/<id пользователя>/<код вебхука>'
# Контакт и сделка одним запросом
curl -X POST "$HOOK/batch.json" \
-H 'Content-Type: application/json' \
-d '{
"halt": 1,
"cmd": {
"contact": "crm.item.add?entityTypeId=3&fields[name]=Иван&fields[lastName]=Петров&fields[phone][0][value]=%2B79990001122&fields[phone][0][valueType]=WORK",
"deal": "crm.item.add?entityTypeId=2&fields[title]=Заявка с сайта&fields[opportunity]=15000&fields[currencyId]=RUB&fields[contactIds][0]=$result[contact][item][id]"
}
}'
Забрать сделки из Битрикс24 в свою аналитику или учётную систему.
curl -X POST "$HOOK/crm.item.list.json" \
-H 'Content-Type: application/json' \
-d '{
"entityTypeId": 2,
"select": ["id", "title", "stageId", "opportunity", "currencyId", "contactIds", "updatedTime"],
"filter": {"stageId": "WON", ">=updatedTime": "2026-01-01T00:00:00+03:00"},
"order": {"id": "ASC"},
"start": 0
}'
Когда в твоей системе что-то произошло (оплата, отгрузка), сдвинуть сделку и напомнить ответственному.
curl -X POST "$HOOK/crm.item.update.json" \
-H 'Content-Type: application/json' \
-d '{"entityTypeId": 2, "id": 342, "fields": {"stageId": "PREPARATION"}}'
curl -X POST "$HOOK/tasks.task.add.json" \
-H 'Content-Type: application/json' \
-d '{
"fields": {
"TITLE": "Позвонить клиенту: оплата получена",
"RESPONSIBLE_ID": 6,
"DEADLINE": "2026-11-01T18:00:00+03:00",
"UF_CRM_TASK": ["D_342"]
}
}'
У каждого портала свои поля (UF_CRM_…): источник заявки, номер договора, ссылка на заказ. Узнать их имена и записать значения.
curl -X POST "$HOOK/crm.item.fields.json" \
-H 'Content-Type: application/json' \
-d '{"entityTypeId": 2}'
curl -X POST "$HOOK/crm.item.update.json" \
-H 'Content-Type: application/json' \
-d '{"entityTypeId": 2, "id": 342, "fields": {"ufCrm1700000000": "Договор № 15/2026"}}'
Реагировать на появление лида в Битрикс24 сразу: отправить приветственное письмо, записать в свою базу.
# Вызов от имени приложения: токен передаётся в параметре auth
curl -X POST "https://<портал>.bitrix24.ru/rest/event.bind.json" \
-H 'Content-Type: application/json' \
-d '{"auth": "<access_token>", "event": "ONCRMLEADADD", "handler": "https://example.ru/b24/lead-added"}'
curl -X POST "https://<портал>.bitrix24.ru/rest/crm.item.get.json" \
-H 'Content-Type: application/json' \
-d '{"auth": "<access_token>", "entityTypeId": 1, "id": 253}'
https://<ваш-портал>.bitrix24.ru/rest/<id пользователя>/<код вебхука>/<метод>.jsonhttps://<ваш-портал>.bitrix24.ru/rest/<метод>.jsonhttps://oauth.bitrix.info/Тип: Другое
Два способа:
access_token передаётся в параметре auth; живёт один час и обновляется через https://oauth.bitrix.info/oauth/token/ с помощью refresh_token. client_secret используется только в запросах к oauth.bitrix.info.Без данных авторизации запрос отклоняется с ошибкой NO_AUTH_FOUND.
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"entityTypeId": 2,
"fields": {
"title": "New Deal",
"typeId": "SALE",
"stageId": "NEW"
}
}' \
https://your-domain.bitrix24.com/rest/1/8g9l071eismy9q2l/crm.item.add.json
Универсальный метод создания лидов, сделок, контактов, компаний и элементов смарт-процессов. Скоуп crm. При создании проверяются права и обязательные поля, запускаются роботы.
Пример ответа (сокращён):
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
fields |
body | object | да | Поля элемента; набор зависит от типа объекта |
fields.title |
body | string | нет | Название; по умолчанию по шаблону {entityTypeName} #{id} |
fields.stageId |
body | crm_status | нет | Стадия, например NEW |
fields.categoryId |
body | integer | нет | Воронка (для сделок), по умолчанию 0 |
fields.typeId |
body | crm_status | нет | Тип, например SALE для сделки |
fields.opportunity |
body | double | нет | Сумма |
fields.currencyId |
body | crm_currency | нет | Валюта |
fields.assignedById |
body | user | нет | Ответственный; по умолчанию вызывающий пользователь |
fields.companyId |
body | crm_company | нет | Привязанная компания |
fields.contactIds |
body | crm_contact[] | нет | Привязанные контакты |
fields.sourceId |
body | crm_status | нет | Источник, например CALL |
fields.comments |
body | text | нет | Комментарий |
useOriginalUfNames |
body | boolean | нет | Y — оригинальные имена пользовательских полей (UF_CRM_...) |
Пример запроса:
{
"result": {
"item": {
"id": 342,
"createdTime": "2024-07-18T14:00:14+02:00",
"assignedById": 6,
"categoryId": 9,
"stageId": "C9:UC_KN8KFI",
"title": "New deal (specifically for rest method examples)",
"typeId": "SERVICE",
"opportunity": 999
}
}
}
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
id |
body | integer | да | ID элемента |
useOriginalUfNames |
body | boolean | нет | Формат имён пользовательских полей |
Возвращает только элементы, на которые у пользователя есть право чтения. Размер страницы всегда 50 записей.
Пример ответа (сокращён):
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
select |
body | array | нет | Поля для выборки или '*' |
filter |
body | object | нет | Фильтр вида {поле: значение}, допускает вложенность и логику |
order |
body | object | нет | Сортировка вида {поле: "ASC" | "DESC"} |
start |
body | integer | нет | Смещение для пагинации: 50 — вторая страница |
useOriginalUfNames |
body | boolean | нет | Формат имён пользовательских полей |
Пример запроса:
{
"result": {
"items": [
{
"id": 253,
"assignedById": 6,
"stageId": "NEW",
"opportunity": 19000,
"sourceId": "WEB",
"title": "Lead #253",
"name": "Admin",
"lastName": null,
"isManualOpportunity": "Y"
}
]
}
}
Если значения полей не изменились, сохранение не выполняется. После сохранения запускаются роботы.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
id |
body | integer | да | ID элемента |
fields |
body | object | да | Новые значения полей |
useOriginalUfNames |
body | boolean | нет | Формат имён пользовательских полей |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
id |
body | integer | да | ID элемента |
Пример ответа:
{
"result": [],
"time": {
"start": 1721657688.755373,
"finish": 1721657689.65017,
"duration": 0.8947970867156982,
"processing": 0.6092040538787842,
"date_start": "2024-07-22T16:14:48+02:00",
"date_finish": "2024-07-22T16:14:49+02:00",
"operating": 0
}
}
Список полей и их настроек (тип, обязательность, только чтение, множественность) для типа объекта.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
entityTypeId |
body | integer | да | Тип объекта CRM |
useOriginalUfNames |
body | boolean | нет | Формат имён пользовательских полей |
Выполняет несколько вызовов за один HTTP-запрос — независимых или связанных (результат одного передаётся в следующий). Скоуп basic. В одном batch — не больше 50 команд.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
cmd |
body | array | да | Подзапросы: ключ — идентификатор, значение — строка method?parameter=value |
halt |
body | boolean | нет | Прерывать последовательность при ошибке |
Скоуп task.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
fields |
body | object | да | Поля задачи; обязательны TITLE (название) и RESPONSIBLE_ID (ответственный) |
Регистрирует обработчик события (например ONCRMLEADADD). Работает только в контексте приложения: через вебхук вернёт WRONG_AUTH_TYPE. Bitrix24 отправляет данные события POST-запросом на адрес обработчика.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
event |
body | string | да | Код события, например ONCRMLEADADD |
handler |
body | string | да | URL обработчика; хост должен содержать точку, localhost не принимается |
auth_type |
body | integer | нет | Пользователь, под которым авторизуется обработчик |
event_type |
body | string | нет | online (по умолчанию) или offline |
auth_connector |
body | string | нет | Ключ источника для офлайн-событий |
options |
body | object | нет | Доп. настройки события |
crm.deal.*, crm.lead.* и аналогичные больше не развиваются; для новых интеграций используйте crm.item.*.batch с ошибкой приходят со статусом 200, а поле error может быть пустым — тогда причина только в error_description.batch поле result.result_error есть всегда; признак ошибки — непустое содержимое.*.list отдают по 50 записей; для больших выгрузок используйте пагинацию без подсчёта общего количества и batch.placement.bind, event.bind) недоступны вебхуку и возвращают WRONG_AUTH_TYPE.http вместо https вернёт INVALID_REQUEST.b24-dev-mcp для AI-инструментов: он даёт доступ к официальной документации REST API (без доступа к данным портала).| Код | Описание |
|---|---|
NO_AUTH_FOUND |
В запросе нет ни токена, ни кода вебхука |
INVALID_CREDENTIALS |
Не найден активный вебхук с такой парой ID пользователя и кода |
INVALID_REQUEST |
Запрос по http — замените на https |
QUERY_LIMIT_EXCEEDED |
Превышена интенсивность запросов (HTTP 503) |
OPERATION_TIME_LIMIT |
Исчерпан лимит ресурсоёмкости метода; ориентируйтесь на operating_reset_at |
OVERLOAD_LIMIT |
Ручная блокировка — повторять бесполезно, нужна техподдержка |
ACCESS_DENIED |
Со статусом 401 — нужен коммерческий тариф; с другим статусом — ошибка метода |
ERROR_METHOD_NOT_FOUND |
Неверное имя метода или нет нужного скоупа |
insufficient_scope |
Добавьте недостающий скоуп приложению или вебхуку |
expired_token |
Обновите токены и повторите вызов |
user_access_error |
Администратор должен дать пользователю доступ к приложению |
WRONG_AUTH_TYPE |
Метод недоступен при этом способе авторизации |
INTERNAL_SERVER_ERROR |
Повторите вызов через несколько секунд |
PORTAL_DELETED |
Публичная часть сайта закрыта — REST API не отвечает |
QUERY_LIMIT_EXCEEDED.batch — до 50 команд в одном запросе.time.operating); при превышении — OPERATION_TIME_LIMIT.Если этого недостаточно — официальная документация: https://apidocs.bitrix24.ru/ JSON: https://mcp-everything.ru/api/integrations/bitrix24. MCP: https://mcp-everything.ru/mcp