Первый вызов метода — момент, когда абстрактный REST API превращается в работающую интеграцию. Покажем на практике: как проверить доступ методом profile, создать сделку через crm.deal.add, разобрать ответ и понять, что пошло не так при ошибке.
Что нужно перед первым вызовом
Для первого запроса достаточно входящего вебхука с правом crm. Если его ещё нет — создайте в разделе «Разработчикам». Понадобится:
- URL вебхука вида
https://портал.bitrix24.ru/rest/1/КОД/; - имя метода, которое подставляется в URL;
- инструмент — curl, Postman или любой HTTP-клиент вашего языка.
Начинать всегда стоит с метода, который ничего не меняет. Идеальный кандидат — profile: он возвращает данные текущего пользователя и подтверждает, что доступ настроен.
Безопасный первый вызов: profile
Вызовем profile обычным GET-запросом:
curl "https://mycompany.bitrix24.ru/rest/1/xr9s7k3q0abcd12e/profile.json"
// Ответ
{
"result": {
"ID": "1",
"NAME": "Иван",
"LAST_NAME": "Петров",
"ADMIN": true
},
"time": { "duration": 0.08 }
}Получили result с данными — значит, вебхук и права в порядке. Если вместо этого пришла ошибка авторизации, проверьте правильность URL и кода вебхука.
GET, POST и передача параметров
Методы можно вызывать двумя способами. Простые запросы удобны через GET, но для вложенных структур (массивы полей) надёжнее POST с JSON.
| Способ | Когда |
|---|---|
| GET с query-параметрами | Простые фильтры и одиночные значения |
| POST form-urlencoded | Совместимость, массивы через [ ] |
| POST application/json | Сложные вложенные структуры |
В GET массивы кодируются квадратными скобками: ?filter[STAGE_ID]=NEW&select[]=ID&select[]=TITLE. В JSON — обычными массивами и объектами, что читаемее для сложных запросов.
Создаём сделку: crm.deal.add
Теперь изменим данные — создадим сделку методом crm.deal.add:
curl -X POST \
"https://mycompany.bitrix24.ru/rest/1/xr9s7k3q0abcd12e/crm.deal.add.json" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"TITLE": "Первая сделка через API",
"OPPORTUNITY": 25000,
"CURRENCY_ID": "RUB",
"STAGE_ID": "NEW"
}
}'
// Ответ
{ "result": 342, "time": { "duration": 0.34 } }Число в result — ID новой сделки. Чтобы узнать доступные поля заранее, вызовите crm.deal.fields — метод вернёт описание всех полей с типами и признаком обязательности.
Тот же вызов на PHP
В боевом коде запрос обычно оборачивают в HTTP-клиент. Минимальный пример на PHP через cURL:
$webhook = 'https://mycompany.bitrix24.ru/rest/1/xr9s7k3q0abcd12e/';
$data = ['fields' => ['TITLE' => 'Сделка из PHP', 'OPPORTUNITY' => 5000]];
$ch = curl_init($webhook . 'crm.deal.add.json');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
if (isset($response['error'])) {
// разбор ошибки
} else {
$dealId = $response['result'];
}error в ответе до обращения к result — так вы не потеряете ошибку и не запишете «пустой» результат.Разбор типовых ошибок
Первые вызовы часто спотыкаются об одни и те же ошибки:
| Ошибка | Причина и решение |
|---|---|
INSUFFICIENT_SCOPE | Не выдан scope модуля — добавьте право |
invalid_token | Токен истёк (для OAuth) — обновите |
ERROR_METHOD_NOT_FOUND | Опечатка в имени метода |
QUERY_LIMIT_EXCEEDED | Слишком частые запросы — снизьте темп |
| Ошибка обязательного поля | Проверьте fields через *.fields |
Универсальный приём диагностики: сначала вызвать scope.json и имя_метода.fields, а уже потом отправлять данные. Это экономит часы на отладке.
Итог
Первый вызов метода Битрикс24 сводится к простой схеме: собрать URL из вебхука и имени метода, отправить GET или POST, проверить error и прочитать result. Начинайте с безопасного profile, затем переходите к crm.deal.add, а перед сложными запросами сверяйтесь с *.fields. Это фундамент, на котором строится любая интеграция.
Когда за первым вызовом стоит реальный бизнес-процесс — обмен заказами, синхронизация с 1С, воронка лидов — мы в B2Bsite доводим его до промышленного уровня: обработка ошибок, повторы, очереди и мониторинг.
Частые вопросы
С какого метода безопаснее всего начать?
С метода profile или user.current — они возвращают данные и ничего не меняют в портале, поэтому идеальны для проверки доступа.
Как узнать список полей сущности перед созданием?
Вызовите метод вида crm.deal.fields (или crm.lead.fields). Он вернёт описание всех полей с типами и признаком обязательности.
Чем отличается вызов через GET и POST?
GET удобен для простых запросов, но для вложенных структур и больших данных надёжнее POST с телом в JSON или form-urlencoded.
Что возвращается в поле result при создании?
Идентификатор созданной записи — например, ID новой сделки или лида. Его сохраняют для дальнейших операций.
Почему приходит ERROR_METHOD_NOT_FOUND?
Обычно это опечатка в имени метода в URL. Проверьте написание и наличие метода через methods или method.get.
Как правильно обрабатывать ответ в коде?
Сначала проверяйте наличие ключа error, и только при его отсутствии читайте result. Иначе можно молча потерять ошибку.
Нужно ли что-то ещё, кроме вебхука, для первого вызова?
Нет. Достаточно входящего вебхука с нужным scope и любого HTTP-клиента — curl, Postman или библиотеки вашего языка.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.