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

API аккаунтов WhatsApp

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

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

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

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

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

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

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

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

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

    Передайте номер телефона и ваш webhook_url. В ответе вы получите whatsapp_client_id. Сохраните его.

  2. Получите QR-код

    Ваш webhook получает status=qr_generated с изображением QR-кода в qr_image. Покажите это изображение владельцу телефона. Пока Wbiztool ждёт сканирования, QR-код отправляется повторно каждые несколько секунд, поэтому всегда показывайте последний. На сканирование у человека есть около двух минут. После этого или если WhatsApp попросит перезагрузить код, вы получите not_connected; вызовите API снова, чтобы получить новый код.

  3. Отсканируйте его в WhatsApp

    На телефоне откройте WhatsApp → Связанные устройстваПривязка устройства и отсканируйте код.

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

    Ваш webhook получает status=connected, когда номер привязан, или 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",
    "whatsapp_number": "919876543210",
    "webhook_url": "https://example.com/wbiztool/connect-events?token=LONG_RANDOM_SECRET"
  }'

Замените 12345 и YOUR_API_KEY своими значениями. Где их найти, описано в разделе Аутентификация.

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

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

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

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

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

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

Подключаемый номер WhatsApp с кодом страны, например 919876543210. Он сохраняется точно в том виде, в котором вы его передали (до 20 символов), поэтому передавайте только цифры, без +, пробелов и дефисов. Более длинные значения приводят к ошибке HTTP 500. Тот же номер, записанный иначе, считается другим номером.

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

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

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

Python-клиент вызывает /api/v1/whatsapp-client/create/ за вас.

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,
  "status": 1
}
ПолеТипОписание
statusinteger1, если запрос на подключение создан, 0, если нет.
messagestringWhatsapp Client Created при успехе, иначе текст ошибки.
whatsapp_client_idintegerID номера WhatsApp. Используйте его как whatsapp_client в других вызовах API. Присутствует только при успехе.

"status": 1 означает, что запрос создан, а не что номер подключён. Если снова вызвать API для номера, который был добавлен ранее, но не подключён, вы получите тот же whatsapp_client_id, и начнётся новая попытка подключения.

Ошибки#

СообщениеHTTPКак исправить
whatsapp_number cant be null200Передайте whatsapp_number. Эта проверка выполняется первой, поэтому сообщение появляется и при некорректном теле JSON.
Auth Error200Передайте и client_id, и api_key.
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Этот номер уже подключён в этом рабочем пространстве. Ничего делать не нужно. Если вы уже достигли лимита номеров по тарифу, вместо этого вы получите WhatsApp Account Limit Reached, даже для уже подключённого номера.

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

Если тот же владелец аккаунта уже добавил этот номер в другом рабочем пространстве, запрос может завершиться ошибкой HTTP 500. Подключите номер на странице настроек WhatsApp в нужном рабочем пространстве или свяжитесь с поддержкой.

События webhook#

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

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

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

Номер подключён (для одного подключения может прийти несколько раз):

status=connected&whatsapp_client_id=678

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

status=not_connected&whatsapp_client_id=678
ПолеЗначения
statusqr_generated, connected или not_connected
whatsapp_client_idwhatsapp_client_id, возвращённый API.
qr_imageТолько вместе с qr_generated. Либо data: URL с изображением в base64, либо https URL изображения. Обрабатывайте оба варианта. https URL остаётся одним и тем же при каждом обновлении для одного номера, а изображение по нему меняется. При показе добавляйте параметр для обхода кеша (например, ?t=<timestamp>), иначе браузер может продолжать показывать истёкший код.

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

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

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

Советы#

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