REST API v1.4 & Webhook Motoru Aktif

Kurumsal SMS Onay API & Webhook Kılavuzu

Milisaniyeler düzeyinde OTP yakalama, 48+ ülkeden anlık yurt dışı sanal numara tahsisi ve HMAC-SHA256 imzalı gerçek zamanlı Webhook push mimarisi. cURL, Python ve PHP ile hemen entegre edin.

Hızlı Başlangıç (5 Dakika) Canlı Test Konsolu Ücretsiz API Key Üret
< 800ms
Ortalama SMS Teslim Hızı
%99.98
Uptime & Doğrulama SLA
1.200/dk
Paralel Concurrency Limiti
48 Ülke
Tier-1 GSM Taşıyıcı Ağı

1. Genel Bakış ve Mimari

En Onay REST API, modern dijital ajanslar, yazılım ekipleri ve e-ticaret otomasyonları için özel olarak geliştirilmiş kurumsal bir SMS onay köprüsüdür. Sistemimiz doğrudan Tier-1 uluslararası telekom operatörlerinin sinyal katmanlarına bağlıdır.

Platformumuz iki temel entegrasyon modelini destekler:

  • RESTful Polling Modu: Standart HTTP GET/POST istekleri ile numara tahsis edilir ve durum periyodik olarak sorgulanır.
  • Event-Driven Webhook Modu (Önerilen): SMS operatörden geldiği anda sunucunuza JSON bildirim fırlatılır. Polling gecikmesini ve sunucu yükünü sıfıra indirir.

Kurumsal Garanti ve Sıfır Risk İlkesi

Tahsis edilen numaraya 10 dakika içerisinde SMS kodu ulaşmazsa, işlem otomatik olarak iptal edilir veya cancel uç noktası üzerinden çağrıldığında ücret bakiyenize kuruşu kuruşuna iade edilir. Başarısız işlem için asla ücret ödemezsiniz.

2. Kimlik Doğrulama (Authentication)

API isteklerinin güvenliğini sağlamak amacıyla tüm korumalı uç noktalarda Authorization: Bearer <API_KEY> veya X-API-KEY başlığı kullanılmalıdır.

API Anahtarınızı Kullanıcı Paneli üzerinden tek tıkla üretebilirsiniz. Test amaçlı geliştirme yaparken sandbox modunu kullanabilirsiniz:

Ortam API Base URL Test API Anahtarı Durum
Canlı (Production) https://enonay.com/api/v1.php Kendi Panel API Key'iniz ● Aktif
Sandbox (Demo Test) https://enonay.com/api/v1.php demo_enonay_key ● Ücretsiz Mock Data

3. Hızlı Başlangıç (Quickstart)

Aşağıdaki hazır kod blokları ile WhatsApp için İngiltere (+44) numarası alabilir ve SMS kodunu anında yakalayabilirsiniz:

# 1. WhatsApp için İngiltere numarası satın al
curl -X POST "https://enonay.com/api/v1.php?action=buy"   -H "Authorization: Bearer demo_enonay_key"   -H "Content-Type: application/x-www-form-urlencoded"   -d "country=england&app=whatsapp"

# 2. Gelen SMS kodunu sipariş ID'si ile sorgula
curl -X GET "https://enonay.com/api/v1.php?action=sms&order_id=744204"   -H "Authorization: Bearer demo_enonay_key"
import requests
import time

API_URL = "https://enonay.com/api/v1.php"
HEADERS = {"Authorization": "Bearer demo_enonay_key"}

# 1. Numara Satın Alma İsteği
order_resp = requests.post(f"{API_URL}?action=buy", headers=HEADERS, data={
    "country": "england",
    "app": "whatsapp"
}).json()

if order_resp.get("status") == "success":
    order_id = order_resp["data"]["order_id"]
    phone = order_resp["data"]["phone"]
    print(f"[+] Tahsis Edilen Numara: {phone} (Sipariş: {order_id})")

    # 2. SMS Kodu Bekleme Döngüsü (Polling)
    print("[*] SMS kodu bekleniyor...")
    for _ in range(20):
        time.sleep(2)
        sms_resp = requests.get(f"{API_URL}?action=sms&order_id={order_id}", headers=HEADERS).json()
        if sms_resp.get("data", {}).get("status") == "RECEIVED":
            print(f"[✓] Onay Kodu Alındı: {sms_resp['data']['sms_code']}")
            break
<?php
$apiUrl = 'https://enonay.com/api/v1.php';
$apiKey = 'demo_enonay_key';

// 1. Numara Satın Alma (cURL)
$ch = curl_init($apiUrl . '?action=buy');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
    CURLOPT_POSTFIELDS => http_build_query([
        'country' => 'england',
        'app'     => 'whatsapp'
    ])
]);
$orderData = json_decode(curl_exec($ch), true);
curl_close($ch);

if ($orderData['status'] === 'success') {
    $orderId = $orderData['data']['order_id'];
    $phone   = $orderData['data']['phone'];
    echo "Numara Hazır: {$phone} (ID: {$orderId})
";
}
?>
const axios = require('axios');

async function quickSMS() {
  const res = await axios.post('https://enonay.com/api/v1.php?action=buy', 
    'country=england&app=whatsapp', {
      headers: { 'Authorization': 'Bearer demo_enonay_key' }
  });
  console.log('Tahsis Edilen Numara:', res.data.data.phone);
}
quickSMS();

API Referansı ve Uç Noktalar

GET /api/v1.php?action=balance
Bakiye Sorgulama

Hesabınızdaki kullanılabilir Türk Lirası (TRY) bakiye durumunu ve hesap tipini döndürür.

curl -X GET "https://enonay.com/api/v1.php?action=balance"   -H "Authorization: Bearer <API_KEY>"

Örnek Başarılı Yanıt (200 OK):

{
  "status": "success",
  "code": 200,
  "message": "Bakiye bilgisi alındı.",
  "timestamp": 1779977410,
  "data": {
    "user_id": 1042,
    "email": "[email protected]",
    "balance": 450.50,
    "currency": "TRY",
    "account_type": "production"
  }
}
GET /api/v1.php?action=services
Aktif Servis & Ülke Fiyatları

Mevcut tüm platformların (WhatsApp, Telegram, OpenAI vb.), anlık stok adetlerinin ve minimum birim fiyatlarının listesini getirir.

curl -X GET "https://enonay.com/api/v1.php?action=services"   -H "Authorization: Bearer demo_enonay_key"
POST /api/v1.php?action=buy
Numara Satın Alma

Belirtilen ülke ve servis için anında aktif bir sanal SMS onay numarası tahsis eder. Numara geçerlilik süresi 10 dakikadır (600 saniye).

Parametre Tip Zorunluluk Açıklama
country string Zorunlu Ülke kodu: england, usa, germany, netherlands vb.
app string Zorunlu Servis adı: whatsapp, telegram, google, openai, discord
import requests
res = requests.post("https://enonay.com/api/v1.php?action=buy",
    headers={"Authorization": "Bearer <API_KEY>"},
    data={"country": "england", "app": "telegram"}
)
print(res.json())
GET /api/v1.php?action=sms&order_id={id}
SMS Kodu Sorgulama (Polling)

Satın alınan numaranın durumunu kontrol eder. SMS geldiğinde status: "RECEIVED" ve sms_code alanları döner.

{
  "status": "success",
  "code": 200,
  "data": {
    "order_id": 744204,
    "status": "RECEIVED",
    "sms_code": "812940",
    "full_sms": "WhatsApp dogrulama kodunuz: 812-940",
    "received_at": "2026-10-27 00:08:06",
    "delivery_time_seconds": 1.2
  }
}
POST /api/v1.php?action=cancel
Numara İptali & İade

SMS gelmeyen numarayı iptal eder. Kesintisiz tutar bakiyenize hemen iade edilir.

4. Webhook Entegrasyonu & Anlık Push

Sürekli döngü (polling) ile sunucunuzu meşgul etmek yerine, SMS operatöre ulaştığı anda doğrudan kendi uç noktanıza HTTP POST bildirimleri alabilirsiniz. Bu mimari gecikmeyi milisaniyelere indirir ve CPU kullanımını optimize eder.

HMAC-SHA256 Güvenlik İmzası

Gönderilen her webhook isteği X-EnOnay-Signature: sha256=<hash> başlığı ile imzalanır. Gelen verinin gerçekten En Onay sunucularından geldiğini kendi gizli anahtarınız (secret key) ile doğrulayabilirsiniz.

PHP ile Örnek Webhook Alıcı (Listener) Kodu:

<?php
// En Onay Webhook Listener Örneği
$secretKey = 'YOUR_WEBHOOK_SECRET_KEY';

// 1. Ham gövdeyi (raw payload) ve başlığı oku
$rawPayload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_ENONAY_SIGNATURE'] ?? '';

// 2. HMAC-SHA256 imzasını hesapla ve doğrula
$expectedSignature = 'sha256=' . hash_hmac('sha256', $rawPayload, $secretKey);

if (!hash_equals($expectedSignature, $signatureHeader)) {
    http_response_code(401);
    exit(json_encode(['error' => 'Geçersiz HMAC İmzası!']));
}

// 3. Güvenli veriyi işle
$data = json_decode($rawPayload, true);
$orderId = $data['order_id'];
$smsCode = $data['sms_code'];
$phone   = $data['phone'];

// [Burada SMS kodunu veritabanınıza yazabilir veya kullanıcınıza aktarabilirsiniz]
error_log("SMS Geldi! Siparis: {$orderId}, Kod: {$smsCode}, Numara: {$phone}");

// 4. Başarılı olduğunu En Onay motoruna bildir (200 OK)
http_response_code(200);
echo json_encode(['status' => 'acknowledged']);
?>

Python (Flask) Webhook Alıcı Kodu:

from flask import Flask, request, jsonify
import hmac, hashlib

app = Flask(__name__)
SECRET_KEY = b"YOUR_WEBHOOK_SECRET_KEY"

@app.route("/webhook", methods=["POST"])
def enonay_webhook():
    signature = request.headers.get("X-EnOnay-Signature", "")
    raw_body = request.get_data()
    expected = "sha256=" + hmac.new(SECRET_KEY, raw_body, hashlib.sha256).hexdigest()

    if not hmac.compare_digest(signature, expected):
        return jsonify({"error": "Invalid signature"}), 401

    payload = request.get_json()
    print(f"[+] Webhook Alındı! Sipariş: {payload['order_id']} | Kod: {payload['sms_code']}")
    return jsonify({"status": "acknowledged"}), 200

if __name__ == "__main__":
    app.run(port=5000)

5. Kurumsal SLA & Concurrency Limitleri

Büyük ölçekli veri madenciliği, ajans operasyonları ve botnet entegrasyonları için sunucu seviyesinde optimize edilmiş bağlantı havuzları sunuyoruz.

Hesap Seviyesi Rate Limit (Dakika) Paralel İstek Dedicated IP Havuzu Webhook Hızı
Standart Geliştirici 120 istek/dk 10 eşzamanlı Paylaşımlı < 1.2 sn
Kurumsal / Ajans Planı 1.200 istek/dk 150 eşzamanlı Özel Ayrılmış Gateway < 500 ms

6. Canlı API Sandbox & Test Konsolu

Entegrasyonunuzu tarayıcı üzerinden canlı test edin. Aşağıdaki formu kullanarak gerçek API Gateway uç noktamıza istek gönderip yanıtı anında inceleyebilirsiniz.

İnteraktif API İstemcisi

Canlı Sunucu Yanıtı (JSON Output):

// İsteği gönderdiğinizde sunucu yanıtı buraya yazdırılacaktır.