XAPI, dağıtık yapıda çalışan yüksek performanslı bir veri çekme (fetching) orkestrasyon motorudur. Müşterilere standartlaştırılmış veri sunarken, Node'lar ile sonsuz ölçeklenebilirlik sağlar.
İsteği atar ve json bekler
Yük dengeler, faturayı keser
Görevi işler ve return eder
Müşteri API üzerinden senkron veya asenkron bir istek gönderdiğinde Orchestrator devreye girer. İstek hedefine, zorluk derecesine ve o saniye ağımızda boşta olan Node'ların durumuna bakılarak "En Yetenekli ve En Hızlı Node" anında seçilir. İstek seçilen düğüme gönderilir ve cevap müşteri için normalize edilir.
İster Müşteri olarak XAPI kullanın bağlanırken X-API-Key kullanmalısınız. Node'lar işe Authorization: Bearer kullanarak kimlik doğrular.
X-API-Key: key-SİZİN_ANAHTARINIZ
/api/execute/Tek bir HTTP isteği ile ağı hareketlendirerek sonucu direkt yanıt olarak almanızı sağlar. Sistem arkada node seçimini, hata yönetimini ve timeout beklemesini otomatik yapar. (Maks bekleme süresi: 30 saniye)
typeHedef operasyon tipi
Şu an desteklenenler: user_tweets_fetch veya search_fetch
paramsOperasyon parametreleri (JSON)
Örn: {"username": "elonmusk"}
curl -X POST https://xapi.zeflexa.tr/api/execute/ \
-H "X-API-Key: key-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "user_tweets_fetch",
"params": {
"username": "celalyaziyor"
}
}'Tüm yanıtlar her zaman aynı yapıda döner. Yanıtlar normalize edildiği için Node yapısı veya farklı hedef tipleri arasında kodunuzu değiştirmeniz gerekmez.
{
"success": true,
"data": {
"name": "Celal Yaziyor",
"tweets": ["Merhabalar!", "Ölçeklenebilirlik harika."]
},
"meta": {
"job_id": "job_f4d1d11cf8d9c7b6",
"node_id": "node_l6ojwk2n",
"duration_ms": 79,
"token_usage": 2,
"result_count": 2,
"cost": 0.05,
"cached": false
},
"error": null
}{
"success": false,
"data": null,
"meta": { ... },
"error": {
"code": "QUOTA_EXCEEDED",
"message": "Limit dolu"
}
}INVALID_TYPE HTTP 400UNAUTHORIZED HTTP 401QUOTA_EXCEEDED HTTP 402NO_AVAILABLE_NODE HTTP 503NODE_TIMEOUT HTTP 504XAPI'nin en güçlü özelliği dinamik Sonuç Hacmi Tabanlı (Result-Volume) fiyatlandırmasıdır. Sadece başarılı olan ve veri içeren sorgular için ücretlendirilirsiniz.
Örneğin user_tweets_fetch için sistem size "1000 tweet sonucu başına" bir birim fiyat sunar. Hedef hesaptan 430 tweet döndüyse, maliyet tam olarak 430 tweet üzerinden hesaplanır. Eğer hesap gizliyse veya sonuç yoksa standart işlem taban (min_cost) ücreti uygulanır. Detaylı faturayı meta.cost değerinden şeffafça görebilirsiniz.
Kendi gücünüzü XAPI ekosistemine bağlayarak işlemleri çalıştıran taraf siz olabilirsiniz!
Sunucunuz XAPI'ye belirli aralıklarla bağlanır ve "Bana iş var mı?" diye sorar. Port açmanıza veya bir API sunucusu ayağa kaldırmanıza gerek yoktur. İç ağlardaki (NAT arkası) cihazlar için mükemmeldir.
Sunucunuz kendi üzerinde HTTP/REST API barındırır. XAPI Orchestrator, iş geldiği milisaniye içinde doğrudan sizin IP'nize ve portunuza POST atar. En hızlı modeldir ancak dışarıya port açılması zorunludur.
Yöneticiniz panelden bir Managed Node oluşturduğunda size bir node_id vexnode_... formatında gizli bir token verilir. Tüm Node API çağrılarında bu ikisini body veya query parametresi olarak gönderirsiniz.
⚠️ Kimlik doğrulama Bearer header ile değil, her istekte node_id + token parametreleri ile yapılır.
/api/nodes/registerNode ilk açıldığında kendini sisteme kaydeder. Durumu online olur.
curl -X POST https://xapi.zeflexa.tr/api/nodes/register \
-H "Content-Type: application/json" \
-d '{
"node_id": "node_9xzvoobh",
"token": "xnode_GİZLİ_TOKEN",
"base_url": "http://x1.zeflexa.tr:5000",
"capabilities": ["username_fetch", "search_fetch"]
}'/api/nodes/heartbeatHer 30–60 saniyede bir gönderilir. Sistemde online kalmayı sağlar.
curl -X POST https://xapi.zeflexa.tr/api/nodes/heartbeat \
-H "Content-Type: application/json" \
-d '{
"node_id": "node_9xzvoobh",
"token": "xnode_GİZLİ_TOKEN",
"healthy_accounts": 5,
"healthy_proxies": 3,
"active_jobs": 0,
"avg_response_ms": 1200
}'/api/nodes/job/nextİş Çekme (Polling): Her 1–3 saniyede bir çağırırsınız. İş yoksa {"status":"no_job"} döner, iş varsa aşağıdaki gibi atanır:
curl -s "https://xapi.zeflexa.tr/api/nodes/job/next?node_id=node_9xzvoobh&token=xnode_GİZLİ_TOKEN"
{
"status": "assigned",
"job": {
"id": "job_f4d1d11cf8d9c7b6",
"target_username": "elonmusk",
"job_type": "username_fetch",
"priority": 1
}
}{
"status": "no_job"
}/api/nodes/job/{job_id}/completeİş Raporlama: İşi bitirdiğinizde (başarılı veya hatalı) sonucu bildirirsiniz.
curl -X POST "https://xapi.zeflexa.tr/api/nodes/job/job_f4d1d11cf8d9c7b6/complete" \
-H "Content-Type: application/json" \
-d '{
"node_id": "node_9xzvoobh",
"token": "xnode_GİZLİ_TOKEN",
"success": true,
"result": {
"tweets": ["tweet1", "tweet2", "tweet3"]
},
"token_usage": 3,
"error": null
}'curl -X POST "https://xapi.zeflexa.tr/api/nodes/job/job_abc123/complete" \
-H "Content-Type: application/json" \
-d '{
"node_id": "node_9xzvoobh",
"token": "xnode_GİZLİ_TOKEN",
"success": false,
"result": null,
"token_usage": 0,
"error": "Account suspended or not found"
}'Remote node'lar polling yapmaz. Sunucunuz dışa açık bir HTTP portu dinler (Örn: https://sizin-sunucu.com/execute). Bir müşteri isteği geldiğinde Orchestrator doğrudan sizin sunucunuza POST atar.
{
"job_id": "job_xyz987",
"job_type": "search_fetch",
"payload": {
"query": "yapay zeka"
},
"timeout": 30
}Görevi işledikten sonra aynı HTTP bağlantısından (Synchronous Response) şu şemayla yanıt dönmelisiniz:
{
"success": true,
"data": { "tweets": ["tweet1", "tweet2"] },
"token_usage": 2
}