v1REST · JSON

SNSOTP OTP API

SMS doğrulama için bir REST API. 182 hizmetinden birini 154 ülkede sipariş edin, siparişten tek kullanımlık kodu okuyun ve 20 dakika içinde kod gelmezse tam fiyatı geri alın.

Her endpoint, parametreleri sorgu parametreleri (GET) veya form alanları veya JSON (POST) olarak kabul eder. Yanıtlar JSON'dur; para iki ondalık basamaklı bir USD dizesidir ve zamanlar UTC'de ISO 8601 formatındadır.

Sunucu

https://snsotp.com/api/v1

Kimlik doğrulamaBearer token

konsol'dan aldığınız API anahtarınız, Authorization: Bearer sok_... olarak gönderilir

Kimlik doğrulama

Konsolun API sayfasında bir anahtar oluşturun. sok_ ile başlar ve bir kez gösterilir, bu yüzden bir ortam değişkeninde saklayın. Anahtarın değiştirilmesi eski anahtarı hemen durdurur. /services, /countries ve /prices çağrıları anahtar olmadan çalışır.

Başlık
Authorization: Bearer sok_your_key_here

Anahtar, key sorgu parametresi veya form alanı olarak da gönderilebilir, bu başlık ayarlayamayan araçlara yardımcı olur.

Hızlı başlangıç

Bir numara sipariş edin, uygulamaya verin, ardından kod gelene kadar siparişi sorgulayın. Aynı akış dört dilde:

# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us

# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"

GET/services

Her hizmet kodu ve en düşük fiyatıyla · anahtar gerekmez

Sipariş edebileceğiniz her hizmet, kodu (diğer çağrılarda hizmet olarak kullanın), kategorisi ve ülkeler arasındaki en düşük fiyatı ile birlikte. Anahtar gerekmez.

İstekcURL
curl https://snsotp.com/api/v1/services
Yanıt200
{
  "services": [
    { "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
    { "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
  ]
}

GET/countries

Her ülke kodu ve telefon koduyla · anahtar gerekmez

Her ülke, kodu (ISO 3166 alpha-2 küçük harf, ülke olarak kullanın) ve telefon kodu ile birlikte. Anahtar gerekmez.

İstekcURL
curl https://snsotp.com/api/v1/countries
Yanıt200
{
  "countries": [
    { "code": "us", "name": "United States", "dial_code": "1" },
    { "code": "gb", "name": "United Kingdom", "dial_code": "44" }
  ]
}

GET/prices

Bir hizmet, bir ülke veya her ikisi için fiyatlar · anahtar gerekmez

Her ülke için bir hizmetin sipariş başına fiyatı, her hizmet için bir ülke veya bir çift. En az bir filtre gönderin. Anahtar gerekmez.

Parametreler

  • servicestring

    Hizmet kodu, örneğin whatsapp

  • countrystring

    Ülke kodu, örneğin us

İstekcURL
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
Yanıt200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

USD cinsinden bakiyeniz · anahtar gerekli

Bakiyeniz USD cinsinden.

İstekcURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

Bir hizmet ve ülke için numara sipariş edin · anahtar gerekli

Bir numara sipariş eder ve fiyatını ücretlendirir. Yanıt, numarayı tam (phone) ve telefon kodu olmadan (number) içerir. Sipariş 20 dakika boyunca açık kalır; bu süre içinde kod gelmezse fiyat otomatik olarak bakiyenize geri döner. Yanıt durumu 201.

Parametreler

  • servicestringgerekli

    GET /services'den hizmet kodu

  • countrystringgerekli

    GET /countries'den ülke kodu

İstekcURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
Yanıt201
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "dial_code": "1",
    "price": "0.93",
    "status": "waiting",
    "code": null,
    "sms": null,
    "codes": [],
    "expires_at": "2026-11-03T12:20:00.000Z"
  },
  "window_minutes": 20
}

GET/orders/{id}

Bir siparişin durumu, kodu ve SMS metni · anahtar gerekli

Durumu, en son kodu, en son SMS metni ve şu ana kadar alınan tüm kodları ile bir sipariş. Durum waiting iken her 3 ila 5 saniyede bir sorgulayın.

Parametreler

  • idpathgerekli

    POST /orders'dan sipariş kimliği

İstekcURL
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "order": {
    "id": "OT-7K2M9QX4PB",
    "service": "whatsapp",
    "country": "us",
    "phone": "+13475550182",
    "number": "3475550182",
    "price": "0.93",
    "status": "received",
    "code": "284913",
    "sms": "Your WhatsApp code is 284913",
    "expires_at": "2026-11-03T12:20:00.000Z"
  }
}

GET/orders

Açık siparişleriniz (veya status=all ile tümü) · anahtar gerekli

Açık siparişleriniz, en yeni önce. Her durumdaki son siparişler için status=all ekleyin.

Parametreler

  • statusstring

    open (varsayılan) veya all

  • limitnumber

    1 ila 100, varsayılan 50

İstekcURL
curl "https://snsotp.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "orders": [
    { "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
  ]
}

POST/orders/{id}/resend

Aynı numarada başka bir kod · anahtar gerekli

İlk koddan sonra, pencere içinde, ek bir maliyet olmadan aynı numara için başka bir kod ister. Ardından uygulamada yeni bir SMS tetikleyin; waiting_for_resend, SMS gelene kadar true olur.

Parametreler

  • idpathgerekli

    Sipariş kimliği

İstekcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}

POST/orders/{id}/finish

Kodu kullandıktan sonra siparişi kapatın · anahtar gerekli

Bir kodu aldıktan sonra siparişi kapatır. Bitirme isteğe bağlıdır: açık siparişler pencere sona erdiğinde kendiliğinden kapanır.

Parametreler

  • idpathgerekli

    Sipariş kimliği

İstekcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

Kod gelmeden iptal edin, tam iade · anahtar gerekli

Bir kod gelmeden önce siparişi iptal eder ve tam fiyatı hemen bakiyenize geri yükler. Bir koddan sonra, iptal has_code yanıtı verir.

Parametreler

  • idpathgerekli

    Sipariş kimliği

İstekcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer $SNSOTP_KEY"
Yanıt200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}

Sipariş durumu

durum değerleri
  • waitingNumara hazır ve henüz bir SMS gelmedi. İptal mümkündür.
  • receivedEn az bir kod geldi. code ve sms en son kodu içerir.
  • finishedBir koddan sonra, finish ile veya pencere sona erdiğinde kapatıldı.
  • refunded20 dakika içinde kod gelmedi. Tam fiyat bakiyenize geri döndü.
  • canceledBir koddan önce iptal edildi. Tam fiyat bakiyenize geri döndü.

Hatalar

Hatalar HTTP durumunu ve sabit bir kod ile okunabilir bir mesaj içeren bir gövde kullanır.

HTTP durumu ve kodları
  • 400missing_filter, bad_jsonGerekli bir değer eksik veya gövde okunamıyor.
  • 401no_key, bad_keyAnahtar eksik, yanlış veya silinmiş.
  • 402no_balanceBu sipariş için yeterli bakiye yok. Konsoldan bakiye ekleyin.
  • 404unknown_service, unknown_country, not_sold, not_foundKod veya sipariş mevcut değil veya çift satılmıyor.
  • 409too_many_open, has_code, not_ready, no_numbersEylem sipariş durumuna uymuyor veya şu anda boş numara yok (hiçbir şey ücretlendirilmez).
  • 429rate_limitedBir anahtarla bir dakikada 300'den fazla istek.
Hata gövdesi402
{
  "error": {
    "code": "no_balance",
    "message": "Not enough credit. Add credit in the console."
  }
}

Oran sınırları

  • Her anahtar için dakikada 300 istek. Bunun üzerinde API, dakikanın geri kalanı için 429 rate_limited yanıtı verir.
  • Hesap başına en fazla 20 açık sipariş. Başka bir sipariş açmak için birini bitirin veya iptal edin.
  • Bir siparişi her 3 ila 5 saniyede bir kontrol edin; kodlar genellikle bir dakika içinde gelir.

SMS aktivasyon formatı

handler_api.php formatı için yazılmış betikler aynı API anahtarı ile çalışır: temel adresi https://snsotp.com/stubs/handler_api.php olarak değiştirin ve işlemleri aynı tutun. Servis ve ülke kodları REST API ile aynıdır.

İşlemler
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    Servislerin JSON listesi

  • getCountries

    Ülkelerin JSON haritası

  • getPricesservice, country (isteğe bağlı)

    JSON {country: {service: {cost, count}}}

  • getNumberservice, country

    ACCESS_NUMBER:<id>:<phone>

  • getStatusid

    STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL

  • setStatusid, status 1 / 3 / 6 / 8

    ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL

İstekcURL
curl "https://snsotp.com/stubs/handler_api.php\
?api_key=$SNSOTP_KEY&action=getNumber\
&service=telegram&country=gb"

ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182

setStatus değerleri: 1 hazır, 3 başka bir kod, 6 bitir, 8 tam iade ile iptal.

OTP API Dokümantasyonu: SMS Doğrulama REST API | SNSOTP