· Nacho Coll · Guides · 8 dk okuma
X Uyarıları API: Programatik Abonelikler ve Bildirim Geçmişi
WALLAWHATS üzerine özel entegrasyonlar geliştirin. X aboneliklerini ekleyin/kaldırın, uyarıları kanallara yönlendirin, bildirim geçmişini çekin — hepsi REST ile.

Gerçek zamanlı X (Twitter) uyarıları işinizde kritik hale geldiğinde, manuel dashboard yönetimi yetersiz kalır. İster müşteri zekası dashboardları oluşturun, ister marka izleme iş akışlarını otomatikleştirin, isterse trading masaları için özel bildirim sistemleri yaratın — X uyarı abonelikleriniz üzerinde programatik kontrole ihtiyacınız vardır.
WALLAWHATS, web arayüzüne dokunmadan X uyarı aboneliklerini oluşturmanıza, yönetmenize ve denetlemenize olanak sağlayan bir REST API sunar. İzlenen hesapları ekleyin veya kaldırın, teslimat durumuyla birlikte bildirim geçmişini çekin ve gerçek zamanlı X uyarılarını HTTP konuşan herhangi bir sisteme entegre edin.

WALLAWHATS API’sini Neden Kullanmalısınız?
Dashboard manuel iş akışları için harika çalışır, ancak API erişimi insan yönetiminin ötesine geçen otomasyon senaryolarının kilidini açar:
Müşteri Zekası Platformları: Araştırma araçları veya CRM entegrasyonları aracılığıyla keşfedilen yeni rakip yöneticileri, ürün liderleri veya sektör analistlerine otomatik olarak abone olun.
Trading ve Finansal İş Akışları: Portföy değişiklikleri veya piyasa olaylarına dayalı düzenleyici hesapları, CEO hesaplarını veya sektöre özgü gazetecileri programatik olarak izleyin — manuel abonelik yönetimi olmadan.
Ölçekte Marka İzleme: Yeni kampanyalar başladığında, ürünler sevk edildiğinde veya kriz durumları geliştiğinde marka bahsetme takibini ekleyin veya kaldırın.
Çok Kiracılı SaaS Uygulamaları: Müşterileriniz için white-label gerçek zamanlı X izleme, perde arkasında programatik abonelik yönetimiyle.
Uyumluluk ve Denetim Sistemleri: Düzenleyici raporlama, dahili denetim izleri veya SLA izleme için teslimat durumuyla birlikte tam bildirim geçmişini çekin.
API Kimlik Doğrulama ve Erişim
Her WALLAWHATS planı, ölçekli anahtar kotalarıyla API erişimi içerir:
- Free: 1 API anahtarı
- Pro: 1 API anahtarı
- Pro+: 2 API anahtarı
- Business: 5 API anahtarı
- Enterprise: 20 API anahtarı
Kimlik doğrulama x-api-key header’ını kullanır (Authorization: Bearer değil). Anahtarlarınızı dashboard’un API bölümünden oluşturun ve bunları şifre gibi düşünün — tam hesap ayrıcalıklarını taşırlar.
curl -H "x-api-key: buraya_api_anahtariniz" \
https://api.wallawhats.com/subscriptionsTemel API Uç Noktaları
WALLAWHATS API, entegrasyonlar oluşturmak için beş ana kaynak grubu sağlar:
Abonelik Yönetimi
Yeni abonelik oluştur:
POST /subscriptions
Content-Type: application/json
x-api-key: buraya_api_anahtariniz
{
"xUsername": "elonmusk"
}Tüm abonelikleri listele:
GET /subscriptions
x-api-key: buraya_api_anahtarinizAboneliği kaldır:
DELETE /subscriptions/elonmusk
x-api-key: buraya_api_anahtarinizSilme uç noktasının dahili abonelik ID’si değil, X handle’ını path parametresi olarak aldığını unutmayın.
Bildirim Geçmişi ve Denetim
Teslimat durumuyla bildirim geçmişini çek:
GET /notifications?from=1704067200000&to=1704153600000
x-api-key: buraya_api_anahtarinizBildirimler uç noktası, her satırın bir kanala gönderilen bir uyarıyı temsil ettiği sayfalanmış sonuçlar döner. Durum değerleri şunları içerir:
queued: Uyarı kabul edildi, teslimat bekleniyorsent: Kanal sağlayıcısına gönderildidelivered: Hedef tarafından alındığı onaylandıread: Alıcı tarafından açıldı (yalnızca WhatsApp, okundu bilgilerinin etkin olmasını gerektirir)failed: Teslimat denemesi başarısız oldu
Kanal Yönetimi
Yapılandırılmış kanalları listele:
GET /channels
x-api-key: buraya_api_anahtarinizYeni kanal ekle:
POST /channels
Content-Type: application/json
x-api-key: buraya_api_anahtariniz
{
"type": "email",
"destination": "alerts@yourcompany.com"
}Kanalı kaldır:
DELETE /channels/buraya_kanal_id
x-api-key: buraya_api_anahtarinizTweet Anlık Görüntüleri
Anlık görüntü galerisine eriş:
GET /snapshots
x-api-key: buraya_api_anahtarinizBelirli anlık görüntüyü sil:
DELETE /snapshots/buraya_tweet_id
x-api-key: buraya_api_anahtarinizEntegrasyonlar Oluşturma: Kod Örnekleri
Node.js Entegrasyonu
İşte abonelik ekleyen ve yeni bildirimler için yoklama yapan bir Node.js örneği:
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(`Abonelik ekleme başarısız: ${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(`Bildirim alma başarısız: ${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(`Abonelik listeleme başarısız: ${error.response?.data?.message || error.message}`);
}
}
}
// Kullanım örneği
async function monitorCompetitor() {
const client = new WallaWhatsClient('buraya_api_anahtariniz');
// Yeni abonelik ekle
await client.addSubscription('vercel');
console.log('@vercel artık izleniyor');
// Son bildirimleri kontrol et
const oneDayAgo = Date.now() - (24 * 60 * 60 * 1000);
const notifications = await client.getNotifications(oneDayAgo, Date.now());
console.log(`${notifications.items.length} son uyarı bulundu`);
notifications.items.forEach(notification => {
console.log(`${notification.xUsername}: ${notification.status} at ${notification.timestamp}`);
});
}Python Entegrasyonu
Python iş akışları için, abonelik yönetimi ve bildirim yoklamasını işleyen bir sınıf:
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):
"""İzlemek için yeni X hesabı ekle"""
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 hesabını izlemeden kaldır"""
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):
"""Sayfalama ile bildirim geçmişini al"""
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):
"""Zaman aralığındaki tüm bildirimleri al, sayfalamayı işle"""
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):
"""Mevcut tüm abonelikleri al"""
response = requests.get(
f'{self.base_url}/subscriptions',
headers=self.headers
)
response.raise_for_status()
return response.json()
# Örnek: Günlük denetim raporu
def generate_daily_report():
api = WallaWhatsAPI('buraya_api_anahtariniz')
# Dünkü bildirimleri al
end_time = int(time.time() * 1000)
start_time = end_time - (24 * 60 * 60 * 1000)
notifications = api.get_all_notifications(start_time, end_time)
# Hesap ve duruma göre grupla
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
# Özeti yazdır
print(f"Günlük Uyarı Raporu - {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']} uyarı, %{success_rate:.1f} teslim edildi")Kanal Yönlendirmeyi Anlama
WALLAWHATS global kanal yönlendirme modeli kullanır — her abonelikten gelen her uyarı, etkin ve doğrulanmış tüm kanallara yayılır. API aracılığıyla belirli hesapları belirli hedeflere yönlendiremezsiniz (“@elonmusk → WhatsApp, @vercel → e-posta” gibi).
Kanal seçimi Kanallar sayfasında hesap düzeyinde gerçekleşir. API aracılığıyla kanal eklediğinizde, doğrulandıktan sonra tüm uyarılar için kullanılabilir hale gelir. Kanalı kaldırdığınızda, tüm aboneliklerden uyarı almayı durdurur.
Bu tasarım otomasyonu basitleştirirken uyarı parçalanmasını önler. Entegrasyon kodunuzun abonelik başına yönlendirme kurallarını takip etmesi gerekmez — sadece hangi hesapları izleyeceğinizi ve hangi kanalları etkinleştireceğinizi yönetin.
Hız Limitleri ve Hız Kapakları
WALLAWHATS, yüksek etkinlik dönemlerinde uyarı spam’ini önlemek için kullanıcı düzeyinde hız kapakları uygular:
- Free: 2 uyarı/saat
- Pro: 5 uyarı/saat
- Pro+: 15 uyarı/saat
- Business: 30 uyarı/saat
- Enterprise: 100 uyarı/saat
Hız kapakları aşıldığında, ek tweet’ler özet mesajlarına tamponlanır ve her 15 dakikada bir teslim edilir. API entegrasyonunuz bunları ayrı bildirim kayıtları olarak görür — biri anında uyarı için, biri de her özet batch’i için.
API’nin kendisi abonelik yönetimi veya bildirim sorguları üzerinde ayrı hız limitleri uygulamaz. Ancak uç noktaları gereksiz isteklerle bombardımana tutmaktan kaçının — abonelik listelerini yerel olarak önbelleğe alın ve bildirim sorgularını verimli şekilde toplu halde gerçekleştirin.
Hata İşleme ve Sorun Giderme
Yaygın API hata kalıpları ve nasıl işleneceği:
Kimlik doğrulama başarısızlıkları (401):
- API anahtarınızın doğru olduğunu ve iptal edilmediğini doğrulayın
Authorizationdeğil,x-api-keyheader’ını kullandığınızdan emin olun
Abonelik çakışmaları (409):
- Hesap zaten izleniyor: Abonelik mevcut, başarı olarak değerlendirin
- Hesap korumalı/özel: WALLAWHATS bunları tasarım gereği reddeder
Hız sınırlama (429):
- Yeniden denemeden önce üssel olarak geri çekilin
- İzlenen hesaplarda plan limitlerini yaklaştığınızı kontrol edin
Kanal doğrulama sorunları:
- Yeni kanallar uyarı almadan önce OTP doğrulaması gerektirir
- Programatik olarak eklenen kanallar kullanıcı doğrulamayı tamamlayana kadar çalışmaz
Entegrasyonlarınızı İzleme ve Uyarma
WALLAWHATS işletme iş akışlarına entegre edildiğinde kritik altyapı haline geldiğinden, entegrasyon sağlığınızı izleyin:
Abonelik Sapma Tespiti:
// Beklenen aboneliklerin hala etkin olup olmadığını kontrol et
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(`Eksik abonelikler: ${missing.join(', ')}`);
}
return missing;
}Teslimat Başarı Oranı İzleme:
def check_delivery_health():
# Son 6 saati kontrol et
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:
# Operasyon ekibinizi uyarın
print(f"UYARI: Teslimat başarı oranı %{success_rate:.1f}'e düştü")
return success_rateEntegrasyon Kalıpları ve En İyi Uygulamalar
Webhook Tarzı İşleme: WALLAWHATS doğrudan webhook sağlamasa da, yeni uyarılar için bildirimler uç noktasını yoklayabilir ve gerçek zamanlıya yakın şekilde işleyebilirsiniz:
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') {
// Uyarıyı işle - Slack'e gönder, veritabanını güncelle, vb.
await processAlert(notification);
}
}
localStorage.setItem('lastNotificationCheck', now);
}
// Her 30 saniyede bir yokla
setInterval(pollForNewAlerts, 30000);Koşullu Abonelik Yönetimi: Harici tetikleyicilere dayalı olarak abonelikleri dinamik olarak ekleyin veya kaldırın:
def update_competitor_monitoring(portfolio_companies):
"""Mevcut portföye dayalı X izlemeyi güncelle"""
current_subs = {s['xUsername'] for s in api.list_subscriptions()}
# İzlememiz gereken hesaplar
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'])
# Eksik abonelikleri ekle
for account in target_accounts - current_subs:
try:
api.add_subscription(account)
print(f"@{account} izlenmeye başlandı")
except Exception as e:
print(f"@{account} eklenemedi: {e}")
# Eski abonelikleri kaldır
for account in current_subs - target_accounts:
api.remove_subscription(account)
print(f"@{account} izlenmesi durduruldu")WALLAWHATS API, gerçek zamanlı X uyarılarını manuel dashboard aracından programlanabilir altyapı bileşenine dönüştürür. İster özel zeka iş akışları oluşturun, ister marka izlemeyi otomatikleştirin, isterse white-label bildirim hizmetleri yaratın — API, prodüksiyon entegrasyonu için gereken kontrol ve denetim yeteneklerini sağlar.
İzlemenizi rakiplerin ötesine genişletmek mi istiyorsunuz? Piyasa sinyalleri için kripto Twitter’ı izleme rehberimize göz atın veya gazetecilerin gerçek zamanlı kaynak izleme için WALLAWHATS’ı nasıl kullandığını öğrenin.
Bir daha önemli bir gönderiyi kaçırmayın. Ücretsiz hesap oluşturun — 1 WhatsApp numarası, gerçek zamanlı uyarılar, kredi kartı gereksiz.
