Перейти к содержимому
WbizTool

API аккаунтов WhatsApp

Подключение номера WhatsApp (API)

Начните подключение номера WhatsApp к вашему рабочему пространству прямо из своего приложения. WbizTool открывает новую сессию WhatsApp и отправляет на ваш URL webhook QR-код или, при login_method=phone, 8-символьный код. Покажите его владельцу телефона, он сканирует QR-код или вводит код в WhatsApp — и номер готов к отправке сообщений. При подключении по QR-коду номер не нужно знать заранее: WbizTool получит его из WhatsApp после сканирования и отправит на ваш webhook.

Привязываете свой номер вручную? Следуйте руководству Подключение номера WhatsApp.

POSThttps://wbiztool.com/api/v1/whatsapp/connect/

Тело запроса: JSON или поля формы

POST /api/v1/whatsapp-client/create/ — полностью идентичный псевдоним: он выполняет тот же код и возвращает те же ответы. Оба пути продолжают работать.

Как проходит подключение#

Вызов API только начинает подключение. QR-код или код для телефона приходит позже — на ваш URL webhook.

  1. Вызовите API подключения

    Передайте ваш webhook_url, а при login_method=phone — ещё и whatsapp_number. Чтобы переподключить номер, добавленный ранее, передайте также его whatsapp_client_id. В ответе вы получите whatsapp_client_id. Сохраните его.

  2. Получите QR-код или код для телефона

    При login_method=qr (по умолчанию) ваш webhook получает status=qr_generated с изображением QR-кода в qr_image. Пока WbizTool ждёт сканирования, QR-код отправляется повторно каждые несколько секунд, поэтому всегда показывайте последний. На сканирование у человека есть около двух минут.

    При login_method=phone ваш webhook получает status=pairing_code с 8-символьным кодом в pairing_code, например K5EWPGY5. Он отправляется один раз и действует около трёх минут.

    Покажите изображение или код владельцу телефона. Если их не использовали вовремя или WhatsApp попросит перезагрузить код, вы получите not_connected; вызовите API снова, чтобы получить новый.

  3. Привяжите телефон

    На телефоне откройте WhatsApp → Связанные устройства → Привязка устройства. Отсканируйте QR-код или нажмите Привязать по номеру телефона и введите 8-символьный код.

  4. Получите результат

    Ваш webhook получает status=connected с привязанным номером в whatsapp_number, когда номер привязан, или status=not_connected, если код не отсканировали вовремя или подключение не удалось. Событие connected может прийти на несколько секунд раньше, чем Статус подключения вернёт Connected. Сначала ответьте на webhook, а затем опрашивайте «Статус подключения» каждые несколько секунд в течение минуты. Не проверяйте его один раз прямо из обработчика webhook.

Быстрый пример#

curl -X POST https://wbiztool.com/api/v1/whatsapp/connect/ \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 12345,
    "api_key": "YOUR_API_KEY",
    "webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET"
  }'

Замените 12345 и YOUR_API_KEY своими значениями. Где их найти, описано в разделе Аутентификация. Чтобы вместо QR-кода получить код для телефона, добавьте "login_method": "phone" и "whatsapp_number": "919876543210".

Параметры запроса#

client_idintegerобязательно

Ваш API Client ID из раздела Настройки → API ключи.

api_keystringобязательно

Ваш API-ключ с той же страницы. Номер добавляется в рабочее пространство, в котором создан этот ключ.

whatsapp_numberstringТолько при login_method=phone

При login_method=phone — полный международный номер, на который отправляется код, потому что WhatsApp отправляет его именно на этот номер: сначала код страны, без 0 в начале, например 919876543210. +, пробелы и дефисы удаляются автоматически.

При login_method=qr он игнорируется, и его можно не передавать. WbizTool сохраняет номер, который WhatsApp сообщает после сканирования, и передаёт его в webhook connected.

login_methodstringнеобязательно

qr (по умолчанию), чтобы получить QR-код, или phone, чтобы получить 8-символьный код, который владелец вводит в WhatsApp в разделе Привязать по номеру телефона. Полезно, когда телефон не может отсканировать QR-код, например если это единственное устройство.

whatsapp_client_idintegerнеобязательно

Чтобы переподключить номер, который есть в вашем рабочем пространстве, но не подключён, передайте его whatsapp_client_id. ID сохраняется, поэтому другие ваши вызовы API продолжают работать. Не передавайте его, чтобы добавить новый номер.

Строка получает тот номер, который будет привязан. Если QR-код отсканирует другой телефон или вы передадите другой whatsapp_number при login_method=phone, этот whatsapp_client_id с этого момента отправляет сообщения с нового номера, включая уже стоящие в очереди.

webhook_urlstringОбязателен для получения QR-кода

Ваш URL (http или https), на который приходят QR-код и обновления подключения, до 250 символов (более длинные URL приводят к ошибке HTTP 500). API примет запрос и без него, но тогда вам ничего не будет отправлено и получить QR-код через API будет невозможно. См. раздел События webhook.

Использование официальных клиентов#

Python-клиент вызывает /api/v1/whatsapp-client/create/ за вас. Он запрашивает whatsapp_number; при подключении по QR-коду это значение игнорируется.

Python
from wbiztool_client import WbizToolClient

client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)

result = client.create_whatsapp_client(
    whatsapp_number="919876543210",
    webhook_url="https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET",
)
print(result)

Python-клиент выбрасывает requests.exceptions.HTTPError, когда API возвращает HTTP 400 или 403, поэтому оберните вызов в try/except.

Ответ#

Когда запрос на подключение создан, API возвращает HTTP 200:

{
  "message": "Whatsapp Client Created",
  "whatsapp_client_id": 678,
  "login_method": "qr",
  "status": 1
}
ПолеТипОписание
statusinteger1, если запрос на подключение создан, 0, если нет.
messagestringWhatsapp Client Created при успехе, иначе текст ошибки.
whatsapp_client_idintegerID номера WhatsApp. Используйте его как whatsapp_client в других вызовах API. Присутствует только при успехе.
login_methodstringqr или phone — способ, использованный для этой попытки. Присутствует только при успехе.

"status": 1 означает, что запрос создан, а не что номер подключён. Повторные вызовы API не создают лишних номеров:

  • При подключении по QR-коду без whatsapp_client_id вы получаете тот же whatsapp_client_id, пока не будет отсканирован один из его QR-кодов.
  • При login_method=phone для номера, который был добавлен ранее, но не подключён, возвращается его существующий whatsapp_client_id.
  • С whatsapp_client_id этот номер переподключается.

Пока не отсканирован первый QR-код, у номера ещё нет номера телефона: Список подключённых номеров и Статус подключения возвращают для него пустой номер.

Ошибки#

СообщениеHTTPКак исправить
login_method must be 'qr' or 'phone'400Передайте qr, phone или не передавайте параметр вовсе.
For login_method phone, whatsapp_number must be the full international number with country code and no leading 0, e.g. 919876543210400Передайте номер с кодом страны, например 919876543210, а не 09876543210 или 9876543210.
Auth Error200Передайте и client_id, и api_key. Также возвращается при некорректном теле JSON.
Invalid Client Id403Передайте client_id целым числом, например 12345.
Auth Error: invalid api key400Проверьте, что ключ существует, не удалён и принадлежит этому client_id.
Higher Subscription Required200Ваш тариф не включает этот API. Повысьте тариф.
WhatsApp Account Limit Reached. Upgrade your account to get more whatsapp limit200У вас уже подключено максимальное число номеров, разрешённое тарифом. Отключите один из номеров или повысьте тариф.
Already Connected With Given Number200При login_method=phone этот номер уже подключён в этом рабочем пространстве. С whatsapp_client_id этот номер уже подключён. Ничего делать не нужно. Если вы уже достигли лимита номеров по тарифу, вместо этого вы получите WhatsApp Account Limit Reached.
Invalid WhatsApp client400whatsapp_client_id не существует, был удалён или относится к другому рабочему пространству. Не передавайте его, чтобы добавить новый номер.

Запрос, который не является POST, возвращает пустой объект {} с HTTP 200.

События webhook#

На каждом шаге WbizTool отправляет POST на ваш webhook_url. Тело запроса передаётся в виде полей формы (application/x-www-form-urlencoded), а не JSON.

QR-код готов (отправляется повторно каждые несколько секунд, пока ожидается сканирование, часто с тем же изображением):

status=qr_generated&whatsapp_client_id=678&qr_image=...

Код для телефона готов (при login_method=phone, отправляется один раз):

status=pairing_code&whatsapp_client_id=678&pairing_code=K5EWPGY5

Номер подключён, с номером, под которым выполнен вход, в том виде, как его сообщает WhatsApp:

status=connected&whatsapp_client_id=678&whatsapp_number=919876543210

Подключение не удалось, например, потому что QR-код не отсканировали или код для телефона не ввели вовремя:

status=not_connected&whatsapp_client_id=678
ПолеЗначения
statusqr_generated, pairing_code, connected или not_connected
whatsapp_client_idwhatsapp_client_id, возвращённый API.
whatsapp_numberТолько при connected. Привязанный номер с кодом страны, например 919876543210. По нему можно узнать, какой номер был отсканирован. Пустой в редких случаях, когда WhatsApp его не сообщил.
pairing_codeТолько вместе с pairing_code. 8-символьный код для ввода в WhatsApp. Показывайте его как есть; пробел или дефис между половинами допустимы.
qr_imageТолько вместе с qr_generated. data: URL с изображением PNG в base64 (data:image/png;base64,…). Используйте его как источник изображения как есть; каждое событие несёт самый свежий код. До октября 2026 года это могла быть и https-ссылка на изображение; такие ссылки больше не работают, поэтому, если ваш код их обрабатывает, больше ничего менять не нужно.

Ваш URL должен быть публично доступен и отвечать в течение нескольких секунд. WbizTool ждёт вашего ответа до 10 секунд; если ваш сервер отвечает медленно или недоступен, это событие теряется, но попытка подключения продолжается. Принимается любой код статуса HTTP. Неудачные доставки не повторяются, а если номер позже отключится, ничего отправлено не будет. Чтобы следить за номером после подключения, опрашивайте Статус подключения.

Опрос вместо webhook#

Если ваш сервер не может принимать webhook, webhook всё равно нужен для получения QR-кода, но для получения результата полагаться на него не обязательно. После сканирования QR-кода вызывайте Статус подключения с whatsapp_client_id каждые несколько секунд, пока он не вернёт Connected. Список аккаунтов показывает то же самое для всех ваших номеров.

Советы#

  • Обрабатывайте повторные события: сделайте обработчик безопасным для повторного выполнения на случай, если событие будет доставлено дважды.
  • Показывайте самый новый QR-код: заменяйте изображение при каждом новом событии qr_generated, добавляя к https URL параметр для обхода кеша. Старые коды перестают работать.
  • Сканируйте примерно в течение двух минут: после этого вы получите not_connected. Вызовите API снова, чтобы получить новый код.
  • Проверяйте номер после сканирования QR-кода: whatsapp_number в событии connected — это номер, который был привязан на самом деле, и он может отличаться от ожидаемого.
  • Введите код для телефона примерно в течение трёх минут: каждая попытка даёт один код. Если он истёк, вы получите not_connected; вызовите API снова.
  • Нет QR-кода или кода для телефона через 10 минут? Запрос истёк. Вызовите API снова.
  • Подключение из панели управления проще, если вы привязываете собственный номер. Откройте настройки WhatsApp и отсканируйте код там.