SMS doğrulama API'si
SNSSIM API, numara satın alma, kod kontrolü, iptal, kredi ve fiyat sorgulamayı tek bir HTTP isteğiyle halleder. Sektör standardı handler_api yöntemini kullanır, mevcut programınıza sadece adres ve API anahtarını değiştirerek bağlanabilirsiniz.
GET /stubs/handler_api.php
?api_key=API_KEY&action=getNumber
&service=telegram&country=gb
ACCESS_NUMBER:SS8Q2K7:447700900123
GET ...&action=getStatus&id=SS8Q2K7
STATUS_OK:48215- Sektör standardı yöntem
- handler_api
- Her API anahtarı için
- Dakikada 300 kez
- Ülke / Hizmet
- 145 / 1,255
- İçinde kod yoksa otomatik iade
- 20 dakika
Sektör standardı yöntem
Her API anahtarı için
Ülke / Hizmet
İçinde kod yoksa otomatik iade
API anahtarı nasıl alınır?
Giriş yaptıktan sonra hesap ekranındaki API menüsünden anahtar oluşturun. Anahtar yalnızca oluşturulduğunda gösterilir, hemen kaydedin. API, web ekranıyla aynı kredi ve fiyatları kullanır.
Temel adres nedir?
Tüm istekler, api_key ve action eklenerek aynı adrese GET yöntemiyle gönderilir.
https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=...
Hangi istekleri gönderebilirim?
Numara satın almadan kod onaylama, iptal, kredi sorgulama dahil toplam 7 farklı istek mümkündür.
| action | Ne yapıyoruz | Örnek yanıt |
|---|---|---|
| getBalance | Bakiyeyi kontrol et | ACCESS_BALANCE:12.50 |
| getPrices&service=telegram&country=gb | Hizmet ve ülkelere göre fiyatlar ve kalan numaralar | {"gb":{"telegram":{"cost":0.207,"count":8877728}}} |
| getNumber&service=telegram&country=gb | Numara satın al | ACCESS_NUMBER:ID:PHONE |
| getStatus&id=ID | Kodu kontrol et | STATUS_WAIT_CODE / STATUS_OK:CODE |
| setStatus&id=ID&status=8 | Numara kullanımını iptal etme (kod alınmadığında tam para iadesi) | ACCESS_CANCEL |
| setStatus&id=ID&status=3 | Aynı numarayla ek doğrulama kodu al | ACCESS_RETRY_GET |
| setStatus&id=ID&status=6 | Kullanımı bitir | ACCESS_ACTIVATION |
İstek parametresi
| Ad | Zorunlu | Açıklama |
|---|---|---|
| api_key | Tümü | Hesap ekranında oluşturulan API anahtarı |
| action | Tümü | getBalance, getPrices, getNumber, getStatus, setStatus |
| service | getNumber | Hizmet adı kodu (örnek: telegram, whatsapp, google). Hizmet listesi sayfasıyla aynı değerdir |
| country | getNumber | Ülke kodu 2 karakter (örnek: gb, us, id) |
| id | getStatus, setStatus | getNumber üzerinden alınan numara ID'si (N ile başlar) |
| status | setStatus | 8 iptal, 3 kod tekrar iste, 6 bitir, 1 hazır |
Yanıt metni ve anlamı
Yanıtlar kısa metinlerle sağlanır. Kredi kesilip kesilmediği de belirtilir.
| Yanıt | Anlamı | Para |
|---|---|---|
| ACCESS_NUMBER:ID:PHONE | Numaranız hazır | Numara ücreti düşülür |
| STATUS_WAIT_CODE | Kod bekleniyor | Aynen |
| STATUS_OK:CODE | Kod geldi | Ödeme tamamlandı |
| STATUS_WAIT_RETRY:CODE | Ek onay kodu bekleniyor (önceki kodlar dahil) | Ek ücret yok |
| STATUS_CANCEL | İptal edildi veya süresi doldu | Kod gelmediyse iade edildi |
| ACCESS_CANCEL | İptal edildi | Tam iade |
| ACCESS_RETRY_GET | Aynı numarayla bir kez daha kod alma bekleniyor | Ek ücret yok |
| ACCESS_ACTIVATION | Numara kullanımı tamamlandı | Aynen |
| NO_BALANCE | Bakiye yükleyin, hemen alın | Düşülmez |
| NO_NUMBERS | Şu anda bu ülkenin numarasını sağlayamıyoruz | Düşülmez |
| NO_ACTIVATIONS | 20 açık numaranız var | Düşülmez |
| EARLY_CANCEL_DENIED | Onay kodu alınan numaralar için iptal değil sonlandırma (6) seçin | Aynen |
| BAD_KEY | API anahtarı geçersiz | Düşülmez |
| BAD_SERVICE / BAD_COUNTRY | Hizmet veya ülke kodu doğru değil | Düşülmez |
| NO_ACTIVATION | Numara ID'si bulunamadı | Aynen |
| TOO_MANY_REQUESTS | Dakikada 300 istek sınırı aşıldı | Düşülmez |
API ile kod alma sırası nasıldır?
Numara alıp, girip, kodu onaylayıp tamamlama 4 adımdır.
- 1 adım
Numara al
getNumber üzerinden istediğiniz hizmet ve ülkeyi seçerek numara alabilirsiniz.
action=getNumber&service=telegram&country=gb > ACCESS_NUMBER:SS8Q2K7:447700900123
- 2 adım
Numara gir
Satın alınan numarayı kayıt sayfasına veya programa girin.
+44 7700 900123
- 3 adım
Kodu kontrol et
Kodun gelip gelmediğini kontrol etmek için her 5 saniyede bir getStatus'u çağırın.
action=getStatus&id=SS8Q2K7 > STATUS_OK:48215
- 4 adım
Bitir
Kodu girdikten sonra setStatus 6 ile tamamlayın. 20 dakika içinde kod gelmezse otomatik iade yapılır.
action=setStatus&id=SS8Q2K7&status=6 > ACCESS_ACTIVATION
Dillere göre örnekler
Numara alıp kod bekleyip tamamlama sürecinin tamamı. Sekmeye tıklayarak dili değiştirebilirsiniz.
# Balance
curl "https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=getBalance"
# Get a number (Telegram, United Kingdom)
curl "https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=getNumber&service=telegram&country=gb"
# ACCESS_NUMBER:N-8Q2K7XLM:447700900123
# Check the code (every 5 seconds)
curl "https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=getStatus&id=N-8Q2K7XLM"
# STATUS_WAIT_CODE or STATUS_OK:48215
# Finish (6) / Cancel (8, full refund before a code)
curl "https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=setStatus&id=N-8Q2K7XLM&status=6"import time, requests
BASE = "https://snssim.com/stubs/handler_api.php"
KEY = "API_KEY"
def call(**p):
return requests.get(BASE, params={"api_key": KEY, **p}, timeout=30).text
r = call(action="getNumber", service="telegram", country="gb")
if not r.startswith("ACCESS_NUMBER"):
raise SystemExit(r)
_, num_id, phone = r.split(":")
print("Number:", phone)
for _ in range(240): # 20 minutes
s = call(action="getStatus", id=num_id)
if s.startswith("STATUS_OK"):
print("Code:", s.split(":")[1])
call(action="setStatus", id=num_id, status=6)
break
time.sleep(5)// Node.js 18+
const BASE = "https://snssim.com/stubs/handler_api.php";
const KEY = "API_KEY";
const call = (p) => fetch(BASE + "?" + new URLSearchParams({ api_key: KEY, ...p })).then((r) => r.text());
const r = await call({ action: "getNumber", service: "telegram", country: "gb" });
if (!r.startsWith("ACCESS_NUMBER")) throw new Error(r);
const [, id, phone] = r.split(":");
console.log("Number:", phone);
for (let i = 0; i < 240; i++) {
const s = await call({ action: "getStatus", id });
if (s.startsWith("STATUS_OK")) {
console.log("Code:", s.split(":")[1]);
await call({ action: "setStatus", id, status: "6" });
break;
}
await new Promise((ok) => setTimeout(ok, 5000));
}<?php
$base = "https://snssim.com/stubs/handler_api.php";
$key = "API_KEY";
function call($p) { global $base, $key;
return file_get_contents($base . "?" . http_build_query(["api_key" => $key] + $p)); }
$r = call(["action" => "getNumber", "service" => "telegram", "country" => "gb"]);
if (strpos($r, "ACCESS_NUMBER") !== 0) exit($r);
[, $id, $phone] = explode(":", $r);
echo "Number: $phone\n";
for ($i = 0; $i < 240; $i++) {
$s = call(["action" => "getStatus", "id" => $id]);
if (strpos($s, "STATUS_OK") === 0) {
echo "Code: " . explode(":", $s)[1] . "\n";
call(["action" => "setStatus", "id" => $id, "status" => 6]);
break;
}
sleep(5);
}package main
import ("fmt"; "io"; "net/http"; "net/url"; "strings"; "time")
const base = "https://snssim.com/stubs/handler_api.php"
const key = "API_KEY"
func call(p url.Values) string {
p.Set("api_key", key)
r, _ := http.Get(base + "?" + p.Encode())
defer r.Body.Close()
b, _ := io.ReadAll(r.Body)
return string(b)
}
func main() {
r := call(url.Values{"action": {"getNumber"}, "service": {"telegram"}, "country": {"gb"}})
if !strings.HasPrefix(r, "ACCESS_NUMBER") { fmt.Println(r); return }
f := strings.Split(r, ":")
fmt.Println("Number:", f[2])
for i := 0; i < 240; i++ {
s := call(url.Values{"action": {"getStatus"}, "id": {f[1]}})
if strings.HasPrefix(s, "STATUS_OK") {
fmt.Println("Code:", strings.Split(s, ":")[1])
call(url.Values{"action": {"setStatus"}, "id": {f[1]}, "status": {"6"}})
return
}
time.Sleep(5 * time.Second)
}
}import java.net.URI; import java.net.URLEncoder; import java.net.http.*;
import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.stream.Collectors;
public class SNSSIM {
static final String BASE = "https://snssim.com/stubs/handler_api.php", KEY = "API_KEY";
static final HttpClient http = HttpClient.newHttpClient();
static String call(Map<String, String> p) throws Exception {
String q = p.entrySet().stream().map(e -> e.getKey() + "=" + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8)).collect(Collectors.joining("&"));
return http.send(HttpRequest.newBuilder(URI.create(BASE + "?api_key=" + KEY + "&" + q)).build(), HttpResponse.BodyHandlers.ofString()).body();
}
public static void main(String[] a) throws Exception {
String r = call(Map.of("action", "getNumber", "service", "telegram", "country", "gb"));
if (!r.startsWith("ACCESS_NUMBER")) { System.out.println(r); return; }
String[] f = r.split(":");
System.out.println("Number: " + f[2]);
for (int i = 0; i < 240; i++) {
String s = call(Map.of("action", "getStatus", "id", f[1]));
if (s.startsWith("STATUS_OK")) { System.out.println("Code: " + s.split(":")[1]); call(Map.of("action", "setStatus", "id", f[1], "status", "6")); return; }
Thread.sleep(5000);
}
}
}using System.Net.Http;
const string Base = "https://snssim.com/stubs/handler_api.php";
const string Key = "API_KEY";
var http = new HttpClient();
async Task<string> Call(string q) => await http.GetStringAsync($"{Base}?api_key={Key}&{q}");
var r = await Call("action=getNumber&service=telegram&country=gb");
if (!r.StartsWith("ACCESS_NUMBER")) { Console.WriteLine(r); return; }
var f = r.Split(':');
Console.WriteLine($"Number: {f[2]}");
for (var i = 0; i < 240; i++)
{
var s = await Call($"action=getStatus&id={f[1]}");
if (s.StartsWith("STATUS_OK"))
{
Console.WriteLine($"Code: {s.Split(':')[1]}");
await Call($"action=setStatus&id={f[1]}&status=6");
break;
}
await Task.Delay(5000);
}API Sık Sorulan Sorular
API, 145 ülke 1,255 servis numarasını web ile aynı fiyattan sunar.
- SMS Doğrulama API'si nedir?
- Sanal numara alma, doğrulama kodu kontrolü ve iptal işlemlerini HTTP istekleriyle yapmanızı sağlayan özelliktir. SNSSIM API, sektör standardı handler_api yöntemini kullanır.
- Diğer SMS doğrulama sitelerinde kullanılan programları aynen kullanabilir miyim?
- handler_api yöntemini kullanan bir program kullanıyorsanız, temel adres ve API anahtarını değiştirerek hemen bağlanabilirsiniz.
- API için ayrı bir ücret var mı?
- Fark yok. API ve web arayüzü aynı kredi ve fiyatları kullanır.
- İstek kaç kez yapılabilir?
- Her API anahtarı için dakikada maksimum 300 istek yapabilirsiniz. Aşılırsa TOO_MANY_REQUESTS hatası alırsınız ve krediniz düşmez.
- API ile alınan numaralar iade edilebilir mi?
- Evet. Kod 20 dakika içinde gelmezse API ile satın alınan numara da kredi olarak otomatik iade edilir.
- API anahtarı nereden oluşturulur?
- Giriş yaptıktan sonra hesap ekranındaki API menüsünden oluşturun. Anahtar yalnızca oluşturulduğunda gösterilir, hemen kaydedin.
API anahtarını oluşturur oluşturmaz bağlanmayı deneyin
Kayıt olduktan sonra kredinizi yükleyerek hesap ekranından hemen bir API anahtarı oluşturabilirsiniz.