· Nacho Coll · Guides · 8 хв читання
X Alerts API: Програмні підписки та історія сповіщень
Створюйте користувацькі інтеграції поверх WALLAWHATS. Додавайте та видаляйте підписки на X, направляйте сповіщення до каналів, отримуйте історію повідомлень — все через REST.

Коли сповіщення X (Twitter) в реальному часі стають критично важливими для вашого бізнесу, ручне управління через панель керування досягає межі. Незалежно від того, чи ви створюєте панелі клієнтської аналітики, автоматизуєте робочі процеси моніторингу бренду або розробляєте спеціалізовані системи сповіщень для трейдингових команд, вам потрібен програмний контроль над вашими підписками на сповіщення X.
WALLAWHATS надає REST API, який дозволяє створювати, керувати та аудитувати підписки на сповіщення X без використання веб-інтерфейсу. Додавайте або видаляйте облікові записи для моніторингу, отримуйте історію сповіщень зі статусом доставки та інтегруйте сповіщення X в реальному часі в будь-яку систему, яка підтримує HTTP.

Навіщо використовувати WALLAWHATS API?
Панель керування чудово підходить для ручних робочих процесів, але доступ до API розблоковує сценарії автоматизації, які масштабуються за межі людського управління:
Платформи клієнтської аналітики: Автоматично підписуйтеся на нововиявлених керівників конкурентів, продуктових лідерів або галузевих аналітиків, коли вони виявляються через інструменти досліджень або інтеграції CRM.
Трейдингові та фінансові робочі процеси: Програмно відстежуйте регулятивні облікові записи, аккаунти генеральних директорів або журналістів конкретних секторів на основі змін у портфелі або ринкових подій — без ручного управління підписками.
Моніторинг бренду в масштабі: Додавайте або видаляйте відстеження згадок бренду при запуску нових кампаній, випуску продуктів або розвитку кризових ситуацій.
Мультитенантні SaaS-додатки: Моніторинг X в реальному часі під білою міткою для ваших клієнтів з програмним управлінням підписками за лаштунками.
Системи відповідності та аудиту: Отримуйте повну історію сповіщень зі статусом доставки для регулятивної звітності, внутрішніх аудиторських слідів або моніторингу SLA.
Автентифікація та доступ до API
Кожен план WALLAWHATS включає доступ до API з масштабованими квотами ключів:
- Free: 1 API ключ
- Pro: 1 API ключ
- Pro+: 2 API ключі
- Business: 5 API ключів
- Enterprise: 20 API ключів
Автентифікація використовує заголовок x-api-key (не Authorization: Bearer). Генеруйте ваші ключі з розділу API панелі керування та ставтеся до них як до паролів — вони мають повні привілеї облікового запису.
curl -H "x-api-key: your_api_key_here" \
https://api.wallawhats.com/subscriptionsОсновні ендпоінти API
WALLAWHATS API надає п’ять основних груп ресурсів для створення інтеграцій:
Управління підписками
Створити нову підписку:
POST /subscriptions
Content-Type: application/json
x-api-key: your_api_key_here
{
"xUsername": "elonmusk"
}Переглянути всі підписки:
GET /subscriptions
x-api-key: your_api_key_hereВидалити підписку:
DELETE /subscriptions/elonmusk
x-api-key: your_api_key_hereЗверніть увагу, що ендпоінт видалення приймає X хендл як параметр шляху — не внутрішній ID підписки.
Історія сповіщень та аудит
Отримати історію сповіщень зі статусом доставки:
GET /notifications?from=1704067200000&to=1704153600000
x-api-key: your_api_key_hereЕндпоінт сповіщень повертає пагіновані результати з кожним рядком, що представляє одне сповіщення, доставлене до одного каналу. Значення статусів включають:
queued: Сповіщення прийнято, очікує доставкиsent: Відправлено до провайдера каналуdelivered: Підтверджено отримання пунктом призначенняread: Відкрито отримувачем (лише WhatsApp, потрібно увімкнути підтвердження прочитання)failed: Спроба доставки невдала
Управління каналами
Переглянути налаштовані канали:
GET /channels
x-api-key: your_api_key_hereДодати новий канал:
POST /channels
Content-Type: application/json
x-api-key: your_api_key_here
{
"type": "email",
"destination": "alerts@yourcompany.com"
}Видалити канал:
DELETE /channels/channel_id_here
x-api-key: your_api_key_hereЗнімки твітів
Доступ до галереї знімків:
GET /snapshots
x-api-key: your_api_key_hereВидалити конкретний знімок:
DELETE /snapshots/tweet_id_here
x-api-key: your_api_key_hereСтворення інтеграцій: приклади коду
Інтеграція Node.js
Ось приклад Node.js, який додає підписку та опитує нові сповіщення:
const axios = require('axios');
class WallaWhatsClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseURL = 'https://api.wallawhats.com';
}
async addSubscription(xUsername) {
try {
const response = await axios.post(
`${this.baseURL}/subscriptions`,
{ xUsername },
{ headers: { 'x-api-key': this.apiKey } }
);
return response.data;
} catch (error) {
throw new Error(`Failed to add subscription: ${error.response?.data?.message || error.message}`);
}
}
async getNotifications(from, to, lastKey = null) {
try {
let url = `${this.baseURL}/notifications?from=${from}&to=${to}`;
if (lastKey) url += `&lastKey=${lastKey}`;
const response = await axios.get(url, {
headers: { 'x-api-key': this.apiKey }
});
return response.data;
} catch (error) {
throw new Error(`Failed to fetch notifications: ${error.response?.data?.message || error.message}`);
}
}
async listSubscriptions() {
try {
const response = await axios.get(
`${this.baseURL}/subscriptions`,
{ headers: { 'x-api-key': this.apiKey } }
);
return response.data;
} catch (error) {
throw new Error(`Failed to list subscriptions: ${error.response?.data?.message || error.message}`);
}
}
}
// Приклад використання
async function monitorCompetitor() {
const client = new WallaWhatsClient('your_api_key_here');
// Додати нову підписку
await client.addSubscription('vercel');
console.log('Now monitoring @vercel');
// Перевірити недавні сповіщення
const oneDayAgo = Date.now() - (24 * 60 * 60 * 1000);
const notifications = await client.getNotifications(oneDayAgo, Date.now());
console.log(`Found ${notifications.items.length} recent alerts`);
notifications.items.forEach(notification => {
console.log(`${notification.xUsername}: ${notification.status} at ${notification.timestamp}`);
});
}Інтеграція Python
Для робочих процесів Python ось клас, який обробляє управління підписками та опитування сповіщень:
import requests
import time
from datetime import datetime, timedelta
class WallaWhatsAPI:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = 'https://api.wallawhats.com'
self.headers = {'x-api-key': api_key}
def add_subscription(self, x_username):
"""Додати новий X обліковий запис для моніторингу"""
response = requests.post(
f'{self.base_url}/subscriptions',
json={'xUsername': x_username},
headers=self.headers
)
response.raise_for_status()
return response.json()
def remove_subscription(self, x_username):
"""Видалити X обліковий запис з моніторингу"""
response = requests.delete(
f'{self.base_url}/subscriptions/{x_username}',
headers=self.headers
)
response.raise_for_status()
return response.status_code == 200
def get_notifications(self, from_ms, to_ms, last_key=None):
"""Отримати історію сповіщень з пагінацією"""
params = {'from': from_ms, 'to': to_ms}
if last_key:
params['lastKey'] = last_key
response = requests.get(
f'{self.base_url}/notifications',
params=params,
headers=self.headers
)
response.raise_for_status()
return response.json()
def get_all_notifications(self, from_ms, to_ms):
"""Отримати всі сповіщення в часовому діапазоні, обробляючи пагінацію"""
all_notifications = []
last_key = None
while True:
batch = self.get_notifications(from_ms, to_ms, last_key)
all_notifications.extend(batch['items'])
if not batch.get('lastKey'):
break
last_key = batch['lastKey']
return all_notifications
def list_subscriptions(self):
"""Отримати всі поточні підписки"""
response = requests.get(
f'{self.base_url}/subscriptions',
headers=self.headers
)
response.raise_for_status()
return response.json()
# Приклад: щоденний аудиторський звіт
def generate_daily_report():
api = WallaWhatsAPI('your_api_key_here')
# Отримати вчорашні сповіщення
end_time = int(time.time() * 1000)
start_time = end_time - (24 * 60 * 60 * 1000)
notifications = api.get_all_notifications(start_time, end_time)
# Групувати за обліковим записом та статусом
report = {}
for notification in notifications:
account = notification['xUsername']
status = notification['status']
if account not in report:
report[account] = {'total': 0, 'delivered': 0, 'failed': 0}
report[account]['total'] += 1
if status in ['delivered', 'read']:
report[account]['delivered'] += 1
elif status == 'failed':
report[account]['failed'] += 1
# Надрукувати резюме
print(f"Daily Alert Report - {datetime.now().strftime('%Y-%m-%d')}")
print("-" * 50)
for account, stats in report.items():
success_rate = (stats['delivered'] / stats['total']) * 100 if stats['total'] > 0 else 0
print(f"@{account}: {stats['total']} alerts, {success_rate:.1f}% delivered")Розуміння маршрутизації каналів
WALLAWHATS використовує глобальну модель маршрутизації каналів — кожне сповіщення з кожної підписки розповсюджується на всі увімкнені та верифіковані канали. Ви не можете направляти конкретні облікові записи до конкретних пунктів призначення через API (наприклад, «@elonmusk → WhatsApp, @vercel → email»).
Вибір каналу відбувається на рівні облікового запису на сторінці Каналів. Коли ви додаєте канал через API, він стає доступним для всіх сповіщень після верифікації. Коли ви видаляєте канал, він припиняє отримувати сповіщення від усіх підписок.
Такий дизайн спрощує автоматизацію, запобігаючи фрагментації сповіщень. Код вашої інтеграції не повинен відстежувати правила маршрутизації для кожної підписки — просто керуйте тим, які облікові записи відстежувати і які канали увімкнути.
Обмеження швидкості та ліміти швидкості
WALLAWHATS реалізує ліміти швидкості на рівні користувача для запобігання спаму сповіщень під час періодів високої активності:
- Free: 2 сповіщення/годину
- Pro: 5 сповіщень/годину
- Pro+: 15 сповіщень/годину
- Business: 30 сповіщень/годину
- Enterprise: 100 сповіщень/годину
Коли ліміти швидкості перевищено, додаткові твіти буферизуються в дайджест-повідомлення та доставляються кожні 15 хвилин. Ваша інтеграція API побачить їх як окремі записи сповіщень — один для негайного сповіщення та один для кожного пакету дайджесту.
Сам API не накладає окремих обмежень швидкості на управління підписками або запити сповіщень. Однак уникайте зловживання ендпоінтами зайвими запитами — кешуйте списки підписок локально та групуйте запити сповіщень ефективно.
Обробка помилок та усунення несправностей
Поширені шаблони помилок API та як їх обробляти:
Помилки автентифікації (401):
- Перевірте, що ваш API ключ правильний і не відкликаний
- Переконайтеся, що ви використовуєте заголовок
x-api-key, а неAuthorization
Конфлікти підписок (409):
- Обліковий запис уже відстежується: підписка існує, вважайте успішною
- Захищений/приватний обліковий запис: WALLAWHATS відхиляє їх за дизайном
Обмеження швидкості (429):
- Використовуйте експоненційний відкат перед повторною спробою
- Перевірте, чи не наближаєтеся ви до лімітів плану на відстежувані облікові записи
Проблеми з верифікацією каналів:
- Нові канали потребують OTP верифікації перед отриманням сповіщень
- Програмно додані канали не працюватимуть, доки користувач не завершить верифікацію
Моніторинг та сповіщення для ваших інтеграцій
Оскільки WALLAWHATS стає критичною інфраструктурою при інтеграції в бізнес-процеси, відстежуйте стан вашої інтеграції:
Виявлення зсуву підписок:
// Перевірити, чи очікувані підписки все ще активні
async function auditSubscriptions(expectedHandles) {
const current = await client.listSubscriptions();
const currentHandles = current.map(s => s.xUsername);
const missing = expectedHandles.filter(h => !currentHandles.includes(h));
if (missing.length > 0) {
console.warn(`Missing subscriptions: ${missing.join(', ')}`);
}
return missing;
}Моніторинг коефіцієнта успішності доставки:
def check_delivery_health():
# Перевірити останні 6 годин
end_time = int(time.time() * 1000)
start_time = end_time - (6 * 60 * 60 * 1000)
notifications = api.get_all_notifications(start_time, end_time)
if not notifications:
return None
delivered = sum(1 for n in notifications if n['status'] in ['delivered', 'read'])
total = len(notifications)
success_rate = (delivered / total) * 100
if success_rate < 95:
# Сповістити вашу команду операцій
print(f"WARNING: Delivery success rate dropped to {success_rate:.1f}%")
return success_rateШаблони інтеграції та найкращі практики
Обробка у стилі Webhook: Хоча WALLAWHATS не надає webhooks безпосередньо, ви можете опитувати ендпоінт сповіщень для нових сповіщень та обробляти їх майже в реальному часі:
async function pollForNewAlerts() {
const lastCheck = localStorage.getItem('lastNotificationCheck') || Date.now() - 300000;
const now = Date.now();
const notifications = await client.getNotifications(lastCheck, now);
for (const notification of notifications.items) {
if (notification.status === 'delivered') {
// Обробити сповіщення - надіслати до Slack, оновити базу даних тощо
await processAlert(notification);
}
}
localStorage.setItem('lastNotificationCheck', now);
}
// Опитувати кожні 30 секунд
setInterval(pollForNewAlerts, 30000);Умовне управління підписками: Динамічно додавайте або видаляйте підписки на основі зовнішніх тригерів:
def update_competitor_monitoring(portfolio_companies):
"""Оновити X моніторинг на основі поточного портфеля"""
current_subs = {s['xUsername'] for s in api.list_subscriptions()}
# Облікові записи, які ми повинні відстежувати
target_accounts = set()
for company in portfolio_companies:
if company.get('ceo_twitter_handle'):
target_accounts.add(company['ceo_twitter_handle'])
if company.get('company_twitter_handle'):
target_accounts.add(company['company_twitter_handle'])
# Додати відсутні підписки
for account in target_accounts - current_subs:
try:
api.add_subscription(account)
print(f"Started monitoring @{account}")
except Exception as e:
print(f"Failed to add @{account}: {e}")
# Видалити застарілі підписки
for account in current_subs - target_accounts:
api.remove_subscription(account)
print(f"Stopped monitoring @{account}")WALLAWHATS API перетворює сповіщення X в реальному часі з інструменту ручної панелі керування в програмований компонент інфраструктури. Незалежно від того, чи створюєте ви спеціалізовані робочі процеси аналітики, автоматизуєте моніторинг бренду або створюєте сервіси сповіщень під білою міткою, API надає контроль та можливості аудиту, необхідні для продуктивної інтеграції.
Хочете розширити свій моніторинг за межі конкурентів? Перегляньте наш посібник з моніторингу крипто Twitter для ринкових сигналів або дізнайтеся, як журналісти використовують WALLAWHATS для моніторингу джерел у реальному часі.
Ніколи більше не пропустіть важливий пост. Створіть безкоштовний обліковий запис — 1 номер WhatsApp, сповіщення в реальному часі, кредитна карта не потрібна.
