Русский
Русский
Appearance
Русский
Русский
Appearance
REST API WallaWhats позволяет программно управлять телефонами, подписками на аккаунты X и историей уведомлений — именно тем, что вы делаете из дашборда.
https://api.wallawhats.comapplication/jsonКаждый запрос должен содержать ключ API в заголовке x-api-key:
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_00000000000000000000000000000000"Ключи создаются в дашборде в разделе Настройки → Ключи API или через POST /apikeys. Префикс ключа начинается с bws_ и имеет длину 36 символов. Ключи отображаются только один раз, при создании — если вы его потеряли, удалите и создайте новый.
401 Unauthorized.| Тариф | Разрешено ключей |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 20 |
Попытка создать больше ключей, чем допускает тариф, возвращает 400 с "error": "api key limit reached".
Ошибки возвращаются в формате JSON с полем error и HTTP-статус-кодом:
{ "error": "phoneNumber is required" }| Статус | Значение |
|---|---|
400 | Неверные параметры, превышена квота или нарушено бизнес-правило |
401 | Отсутствует или неверный ключ API |
402 | Недостаточно кредитов для выполнения операции |
404 | Ресурс не найден |
500 | Ошибка сервера — повторите с экспоненциальной задержкой |
lastKey для пагинации.403 при подозрительных шаблонах. Свяжитесь с поддержкой, если сталкиваетесь с ограничением неожиданно.GET /user/profileВозвращает профиль аутентифицированного пользователя.
Ответ
{
"userId": "5a4cbd70-...",
"email": "jane@example.com",
"name": "Jane",
"plan": "pro_plus",
"createdAt": 1745000000000
}Пример
curl https://api.wallawhats.com/user/profile \
-H "x-api-key: bws_prod_..."Телефон — это подтверждённый номер WhatsApp, который может получать уведомления. Телефон необходимо подтвердить прежде, чем подписывать на него аккаунт X.
POST /phonesГенерирует 6-значный код и отправляет его на номер через WhatsApp. Телефон создаётся в статусе pending_verification.
Запрос
| Поле | Тип | Обязательно | Примечания |
|---|---|---|---|
phoneNumber | string | да | формат E.164, например +34612345678 |
displayName | string | нет | Удобная метка, отображаемая в дашборде |
Ответ
{ "phoneNumber": "+34612345678", "status": "pending_verification" }Ошибки
400 "invalid phone number format" — не соответствует E.164400 "phone number limit reached" — превышен лимит тарифа (Free/Pro/Pro+ 1, Business 3, Enterprise 10)Пример
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: bws_prod_..." \
-H "Content-Type: application/json" \
-d '{"phoneNumber": "+34612345678", "displayName": "Work"}'POST /phones/verifyПодтверждает телефон отправкой 6-значного кода. Коды истекают через 15 минут.
Запрос
| Поле | Тип | Обязательно |
|---|---|---|
phoneNumber | string (E.164) | да |
code | string (6 цифр) | да |
Ответ
{ "phoneNumber": "+34612345678", "status": "verified" }Ошибки
404 "phone not found"400 "invalid code" — неверный код400 "code expired" — старше 15 минут400 "phone already verified"GET /phonesОтвет
{
"phones": [
{
"phoneNumber": "+34612345678",
"status": "verified",
"displayName": "Work",
"createdAt": 1745000000000,
"verifiedAt": 1745000060000
}
],
"count": 1
}DELETE /phones/{phoneNumber}Удаляет телефон и деактивирует все подписки, нацеленные на него. Закодируйте + в URL как %2B.
Ответ
{ "success": true }Пример
curl -X DELETE "https://api.wallawhats.com/phones/%2B34612345678" \
-H "x-api-key: bws_prod_..."Подписка связывает аккаунт X, за которым вы хотите следить, с одним из ваших подтверждённых телефонов. Когда аккаунт X публикует пост, WallaWhats отправляет уведомление WhatsApp на этот телефон.
POST /subscriptionsЗапрос
| Поле | Тип | Обязательно | Примечания |
|---|---|---|---|
xUsername | string | да | 1–15 символов, алфанумерические и подчёркивание. Префикс @ принимается и удаляется. |
phoneNumber | string (E.164) | да | Должен быть одним из ваших подтверждённых телефонов. |
Ответ
{
"xUsername": "elonmusk",
"xUserId": "44196397",
"xDisplayName": "Elon Musk",
"xProfileImage": "https://pbs.twimg.com/...",
"phoneNumber": "+34612345678",
"isActive": true,
"createdAt": 1745000000000
}Ошибки
400 "invalid X username format" — не соответствует регулярному выражению400 "phone not found" / "phone not verified"400 "subscription limit reached" — см. таблицу тарифов ниже404 "X account not found" — имя пользователя не найдено в XЛимиты тарифов
| Тариф | Подписки |
|---|---|
| Free | 1 |
| Pro | 1 |
| Pro+ | 2 |
| Business | 5 |
| Enterprise | 50 |
GET /subscriptionsОтвет
{
"subscriptions": [ /* та же структура, что у ответа POST /subscriptions */ ],
"count": 3
}DELETE /subscriptions/{xUsername}Сравнение xUsername без учёта регистра. Удалите @ перед отправкой.
Ответ
{ "success": true }Каждое уведомление, доставленное WallaWhats, регистрируется здесь вместе со статусом доставки в WhatsApp.
GET /notificationsПараметры запроса
| Параметр | Тип | Описание |
|---|---|---|
from | number (мс epoch) | Фильтр: уведомления, созданные в это время или позже |
to | number (мс epoch) | Фильтр: уведомления, созданные в это время или раньше |
lastKey | string | Курсор пагинации, возвращённый предыдущим ответом |
Ответ
{
"notifications": [
{
"notificationId": "a1b2c3d4-...",
"userId": "5a4cbd70-...",
"phoneNumber": "+34612345678",
"xUsername": "elonmusk",
"tweetId": "1797123456789000000",
"tweetText": "...",
"tweetUrl": "https://x.com/elonmusk/status/...",
"waMessageId": "wamid.HBgN...",
"status": "delivered",
"errorMessage": null,
"createdAt": 1745000000000,
"updatedAt": 1745000002000
}
],
"lastKey": "eyJOT1RJRklDQVRJT05fSUQi..."
}Возможные значения status: queued, sent, delivered, read, failed.
Размер страницы — 50. Когда lastKey отсутствует, вы достигли конца.
Управляйте ключами, которые ваши приложения используют для вызова этого API.
POST /apikeysЗапрос
| Поле | Тип | Обязательно |
|---|---|---|
name | string | нет, по умолчанию "Default" |
Ответ (201 Created)
{
"apiKey": "bws_prod_00000000000000000000000000000000",
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"expiresAt": 1776536000000
}Значение показывается один раз
apiKey возвращается только при создании. Немедленно сохраните его в вашем менеджере секретов. Последующие вызовы показывают только keyPrefix.
GET /apikeysОтвет
[
{
"keyPrefix": "bws_prod_00",
"keyName": "CI server",
"createdAt": 1745000000000,
"lastUsedAt": 1745086400000,
"expiresAt": 1776536000000
}
]DELETE /apikeys/{keyPrefix}Используйте 12-символьный keyPrefix из ответа списка — никогда полный ключ.
Ответ
{ "success": true }# 1. Создайте ключ в дашборде и экспортируйте его
export WALLA_API_KEY="bws_prod_..."
# 2. Зарегистрируйте и подтвердите номер WhatsApp
curl -X POST https://api.wallawhats.com/phones \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","displayName":"Mobile"}'
# -> на телефон приходит код WhatsApp. Отправьте его:
curl -X POST https://api.wallawhats.com/phones/verify \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"+34612345678","code":"123456"}'
# 3. Подпишитесь на аккаунт X
curl -X POST https://api.wallawhats.com/subscriptions \
-H "x-api-key: $WALLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"xUsername":"elonmusk","phoneNumber":"+34612345678"}'
# 4. Смотрите, как поступают уведомления
curl https://api.wallawhats.com/notifications \
-H "x-api-key: $WALLA_API_KEY"Вот и всё — как только аккаунт X опубликует пост, уведомление придёт на телефон примерно за 10 секунд.
Вопросы по API, сообщения об ошибках или запросы на увеличение квоты: откройте заявку во вкладке Поддержка в дашборде или напишите на hello@support.wallawhats.com.