xoxmarketing
REST API v1

Geliştirici Dokümantasyonu

Tüm kanalları tek API ile yönetin. OpenAPI 3.1 spec, SDK'lar ve interaktif playground.

Kimlik Doğrulama

Tüm istekler Bearer token ile yapılır. API anahtarınızı Ayarlar > API Anahtarı'ndan alabilirsiniz.

curl
curl https://api.xox.io/v1/sms \
  -H "Authorization: Bearer xox_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{"to":"+905321234567","message":"Merhaba!"}'
node
const res = await fetch("https://api.xox.io/v1/sms", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.XOX_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ to: "+905321234567", message: "Merhaba!" })
});
const data = await res.json();
python
import requests
r = requests.post("https://api.xox.io/v1/sms",
  headers={"Authorization": f"Bearer {API_KEY}"},
  json={"to": "+905321234567", "message": "Merhaba!"})
print(r.json())

SMS Gönder

Tek veya toplu SMS gönderin. Çoklu sağlayıcı desteği, otomatik retry, delivery webhook.

POST/v1/sms
request
{
  "to": ["+905321234567", "+905331234567"],
  "message": "Hoş geldin {{name}}! Kodun: {{code}}",
  "from": "XOX",
  "provider": "netgsm",
  "templateVars": {
    "+905321234567": { "name": "Ahmet", "code": "XOX-9F2A" }
  },
  "webhookUrl": "https://siteniz.com/hooks/sms"
}
response
{
  "ok": true,
  "batchId": "batch_abc123",
  "total": 2,
  "delivered": 2,
  "failed": 0,
  "cost": 1.6,
  "creditsAfter": 98.4,
  "results": [
    { "to": "+905321234567", "status": "delivered", "messageId": "msg_xyz", "cost": 0.8 },
    { "to": "+905331234567", "status": "delivered", "messageId": "msg_abc", "cost": 0.8 }
  ]
}

Telegram Mesajı

Bot API üzerinden metin, fotoğraf, konum gönderin. HTML ve MarkdownV2 desteği.

POST/v1/telegram
request
{
  "chatId": "@kanaladi",
  "message": "<b>Yeni sipariş!</b>\nSipariş #{{order_id}}",
  "parseMode": "HTML",
  "templateVars": { "order_id": "ORD-12345" },
  "disableNotification": false
}
response
{
  "ok": true,
  "messageId": 12345,
  "chatId": "@kanaladi",
  "cost": 0.1,
  "creditsAfter": 99.9
}

Sesli Arama

TTS veya ses dosyası ile otomatik arama başlatın. TwiML veya hazır ses kabul edilir.

POST/v1/call
request
{
  "to": "+905321234567",
  "message": "Sayın Ahmet, siparişiniz hazır.",
  "voice": "tr-TR",
  "twimlUrl": "https://siteniz.com/voice/123.xml",
  "maxDuration": 60
}
response
{
  "ok": true,
  "callId": "CAxxxxx",
  "to": "+905321234567",
  "status": "queued",
  "estimatedCost": 5,
  "creditsAfter": 95
}

Kişiler

Kişi listelerinizi yönetin. Gruplar, etiketler, CSV import/export.

GET/v1/contactsKişileri listele
POST/v1/contactsYeni kişi ekle
PATCH/v1/contacts/:idKişi güncelle
DELETE/v1/contacts/:idKişi sil
POST/v1/contacts/bulkToplu içe aktar (JSON veya CSV)
GET/v1/groupsGrupları listele
request
// Toplu içe aktarma
POST /v1/contacts/bulk
{
  "contacts": [
    { "name": "Ahmet Yılmaz", "phone": "+905321234567", "tags": ["vip"] },
    { "name": "Ayşe Demir", "phone": "+905331234568", "telegram": "ayedemir" }
  ]
}

Kampanyalar

Toplu kampanya oluşturun ve gönderin. Şablonlar, değişkenler, zamanlama.

GET/v1/campaignsKampanyaları listele
POST/v1/campaignsYeni kampanya oluştur
POST/v1/campaigns/:id/sendKampanyayı gönder
DELETE/v1/campaigns/:idKampanyayı sil
request
POST /v1/campaigns
{
  "name": "Yaz Kampanyası 2026",
  "channel": "sms",
  "message": "{{name}}, yaza özel %20 indirim! Kod: {{code}}",
  "contactGroupIds": ["grp_vip"],
  "provider": "netgsm",
  "sendNow": true
}

Şablonlar

{{değişken}} destekli mesaj şablonları. Sistem ve özel şablonlar.

GET/v1/templatesŞablonları listele
POST/v1/templatesYeni şablon oluştur
POST/v1/templates/previewŞablonu önizle
request
POST /v1/templates/preview
{
  "body": "Merhaba {{name}}, siparişin {{order_id}} hazır.",
  "variables": { "name": "Ahmet", "order_id": "ORD-12345" }
}

Webhooklar

Sistemden sisteminize anlık bildirimler. HMAC-SHA256 imzalı, 8s zaman aşımı.

GET/v1/webhooksWebhook listesi
POST/v1/webhooksYeni webhook
POST/v1/webhooks/:id/testTest isteği gönder
event
// X-XOX-Signature: sha256=HMAC(body, secret)
// X-XOX-Event: sms.delivered
POST https://siteniz.com/hooks
{
  "event": "sms.delivered",
  "timestamp": "2026-07-04T15:42:18.000Z",
  "data": {
    "messageId": "msg_xyz",
    "to": "+905321234567",
    "deliveredAt": "2026-07-04T15:42:18.000Z",
    "cost": 0.8
  }
}

Hata Kodları

RESTful standart hata kodları. Detaylı hata mesajları ve code alanı.

response
{
  "ok": false,
  "error": "Yetersiz kredi: 50 SMS için 50 kredi gerekli, mevcut: 12.5",
  "code": "INSUFFICIENT_CREDITS",
  "details": {
    "required": 50,
    "available": 12.5
  }
}
KodAnlam
200Başarılı
400Geçersiz istek (validation error)
401API anahtarı geçersiz veya eksik
402Yetersiz kredi
403Yetkisiz (plan limiti aşıldı)
404Kaynak bulunamadı
429Rate limit aşıldı (60 istek/dakika)
500Sunucu hatası

Hemen deneyin

Ücretsiz hesap oluşturun, 100 başlangıç kredisi kazanın ve API'yi test edin.