Ваш первый вызов
Получите список подключений, доступных вашему ключу, и проверьте, хватает ли у вас ёмкости, прежде чем создавать ещё одно.
Базовый URL: https://developers.wasync.app/api/v1.
Список доступных вам подключений
curl https://developers.wasync.app/api/v1/connections \
-H "Authorization: Bearer $WASYNC_API_KEY"В списке есть только подключения с активной лицензией. У каждого есть provider со значением
qr или cloud_api, id (cuid — стабильный идентификатор, который стоит сохранить
в записи вашего клиента) и status. Требуется whatsapp.read.
Уже обращаетесь к cloudapi.wasync.app/api/v1? Продолжайте.
Основной хост — developers.wasync.app, но cloudapi.wasync.app — это
постоянный псевдоним для того же самого API: те же ключи, те же пути, те же
ответы. Он остаётся действительным бессрочно. Менять в существующих интеграциях
ничего не нужно. Конечные точки OAuth, документы /.well-known/… и URL
сервера MCP — это идентификаторы протокола, зарегистрированные у клиентов: они
намеренно остаются на cloudapi.wasync.app.
Проверьте ёмкость, прежде чем что-либо обещать
curl https://developers.wasync.app/api/v1/account \
-H "Authorization: Bearer $WASYNC_API_KEY"{
"slots": {
"total": 30,
"used": 28,
"available": 2,
"nextExpiry": "2027-08-08T09:00:00.000Z"
},
"connections": {
"total": 28,
"connected": 27,
"needsReconnect": 1
}
}slots.available показывает, можете ли вы прямо сейчас подключить ещё один номер,
а nextExpiry — дату, до которой вам нужно выставить счёт собственному клиенту, чтобы
слот не истёк у того, кто вам уже заплатил.
connections.needsReconnect — это число номеров, владельцы которых сейчас должны
отсканировать QR-код. Подпишитесь на события подключений, чтобы узнавать
об изменении статуса такого номера сразу, а не опрашивать API. Требуется whatsapp.read.
Слот — это ёмкость, а не номер телефона. Если удалить подключение, его слот возвращается в ваш пул вместе с оставшимся временем — следующий подключённый номер займёт его автоматически. Так вы можете перенести оплаченный слот от ушедшего клиента к новому и не платить дважды.
Подключите номер
Один вызов создаёт подключение и возвращает QR-код для сканирования. Он работает в совершенно новом рабочем пространстве без единого подключения: с ключом не нужно сначала ничего нажимать в портале.
curl -X POST https://developers.wasync.app/api/v1/connections \
-H "Authorization: Bearer $WASYNC_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"label":"Support line"}'{
"connection": {
"id": "conn_8f3a21",
"status": "connecting",
"qr": "data:image/png;base64,iVBORw0KGgo…"
}
}Полученный здесь QR-код действует недолго
WhatsApp меняет код сопряжения примерно каждые 20 секунд, поэтому qr из
ответа на создание устаревает через несколько секунд после показа. Сбой при этом
тихий: телефон не сопрягается, а на экране ничего не объясняет причину. Опрашивайте
GET /connections/{id} каждые 3–5 с и перерисовывайте qr из каждого ответа.
Не кэшируйте его и не прячьте обновление за кнопкой, которую должен нажимать
пользователь. Код сопряжения и QR описывает
альтернативу для одного устройства.
Требуется whatsapp.manage. Созданные так подключения — это номера qr;
номера cloud_api подключаются через Meta Embedded Signup. Эта конечная точка
работает только в автономном рабочем пространстве: портал Bitrix24 получит ответ
403 forbidden_portal_kind, потому что там подключения создаёт администратор портала
внутри WASync. Передавайте Idempotency-Key: создание подключения занимает
оплаченный слот, и повтор после тайм-аута без этого ключа купит вам два слота.
Ошибки и идемпотентность описывает четыре
случая, которые нужно обработать.