API verifikasi SMS
API SNSSIM menangani pembelian nomor, pemeriksaan kode, pembatalan, dan pengecekan kredit & harga dalam satu permintaan HTTP. Menggunakan metode handler_api yang standar industri, cukup ubah alamat dan kunci API pada program yang ada untuk langsung terhubung.
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- Metode standar industri
- handler_api
- Per kunci API
- 300 kali per menit
- Negara / Layanan
- 145 / 1,255
- Refund otomatis jika tidak ada kode
- 20 menit
Metode standar industri
Per kunci API
Negara / Layanan
Refund otomatis jika tidak ada kode
Bagaimana cara mendapatkan kunci API?
Buat kunci di menu API pada layar akun setelah login. Kunci hanya ditampilkan sekali saat pembuatan, segera simpan. API menggunakan kredit dan harga yang sama dengan antarmuka web.
Apa alamat dasar?
Semua permintaan dikirim dengan metode GET ke alamat yang sama dengan menambahkan api_key dan action.
https://snssim.com/stubs/handler_api.php?api_key=API_KEY&action=...
Request apa saja yang bisa dikirim?
Total ada 7 jenis permintaan yang tersedia, mulai dari pembelian nomor, verifikasi kode, pembatalan, hingga pengecekan kredit.
| action | Peran | Contoh respons |
|---|---|---|
| getBalance | Cek saldo | ACCESS_BALANCE:12.50 |
| getPrices&service=telegram&country=gb | Harga dan stok nomor per layanan dan negara | {"gb":{"telegram":{"cost":0.207,"count":8877728}}} |
| getNumber&service=telegram&country=gb | Beli nomor | ACCESS_NUMBER:ID:PHONE |
| getStatus&id=ID | Cek kode | STATUS_WAIT_CODE / STATUS_OK:CODE |
| setStatus&id=ID&status=8 | Batalkan penggunaan nomor (pengembalian dana penuh jika kode tidak diterima) | ACCESS_CANCEL |
| setStatus&id=ID&status=3 | Dapatkan kode verifikasi tambahan ke nomor yang sama | ACCESS_RETRY_GET |
| setStatus&id=ID&status=6 | Selesai pakai | ACCESS_ACTIVATION |
Parameter permintaan
| Nama | Wajib | Keterangan |
|---|---|---|
| api_key | Semua | API key yang dibuat di halaman akun |
| action | Semua | getBalance, getPrices, getNumber, getStatus, setStatus |
| service | getNumber | Kode nama layanan (contoh: telegram, whatsapp, google). Nilainya sama dengan halaman daftar layanan. |
| country | getNumber | Kode negara 2 huruf (contoh: gb, us, id) |
| id | getStatus, setStatus | ID nomor yang dikeluarkan di getNumber (dimulai dengan N) |
| status | setStatus | 8 batal, 3 minta ulang kode, 6 keluar, 1 siap |
Teks respons dan artinya
Respons diberikan dalam teks singkat. Status pengurangan kredit juga akan ditampilkan.
| Respons | Arti | Uang |
|---|---|---|
| ACCESS_NUMBER:ID:PHONE | Nomor sudah didapat | Harga nomor terpotong |
| STATUS_WAIT_CODE | Menunggu kode | Apa adanya |
| STATUS_OK:CODE | Kode sudah masuk | Pembayaran selesai |
| STATUS_WAIT_RETRY:CODE | Menunggu kode verifikasi tambahan (termasuk kode sebelumnya) | Tanpa biaya tambahan |
| STATUS_CANCEL | Dibatalkan atau waktu habis | Di-refund jika kode tidak masuk |
| ACCESS_CANCEL | Dibatalkan | Refund penuh |
| ACCESS_RETRY_GET | Menunggu penerimaan kode lagi ke nomor yang sama | Tanpa biaya tambahan |
| ACCESS_ACTIVATION | Nomor sudah selesai dipakai | Apa adanya |
| NO_BALANCE | Langsung didapat setelah top up saldo | Tidak terpotong |
| NO_NUMBERS | Saat ini tidak dapat menyediakan nomor untuk negara ini | Tidak terpotong |
| NO_ACTIVATIONS | Ada 20 nomor terbuka | Tidak terpotong |
| EARLY_CANCEL_DENIED | Pilih Selesai(6) untuk nomor yang sudah menerima kode verifikasi | Apa adanya |
| BAD_KEY | API key tidak cocok | Tidak terpotong |
| BAD_SERVICE / BAD_COUNTRY | Kode layanan atau negara tidak tepat | Tidak terpotong |
| NO_ACTIVATION | ID nomor tidak ditemukan | Apa adanya |
| TOO_MANY_REQUESTS | Melebihi 300 per menit | Tidak terpotong |
Bagaimana urutan menerima kode melalui API?
Proses 4 langkah: menerima nomor, memasukkan, memverifikasi kode, dan menyelesaikan.
- 1 langkah
Dapatkan nomor
Dapatkan nomor dengan memilih layanan dan negara di getNumber.
action=getNumber&service=telegram&country=gb > ACCESS_NUMBER:SS8Q2K7:447700900123
- 2 langkah
Masukkan nomor
Masukkan nomor yang dibeli di halaman pendaftaran atau program.
+44 7700 900123
- 3 langkah
Cek kode
Periksa status penerimaan kode dengan memanggil getStatus setiap 5 detik.
action=getStatus&id=SS8Q2K7 > STATUS_OK:48215
- 4 langkah
Selesai
Setelah memasukkan kode, selesaikan dengan setStatus 6. Jika tidak ada kode dalam 20 menit, kredit akan otomatis dikembalikan.
action=setStatus&id=SS8Q2K7&status=6 > ACCESS_ACTIVATION
Contoh per bahasa
Ini adalah proses lengkap mulai dari menerima nomor, menunggu kode, hingga menyelesaikan. Ketuk untuk mengganti bahasa.
# 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);
}FAQ API
API menyediakan nomor dari 1,255 layanan di 145 negara dengan harga yang sama seperti di web.
- Apa itu API verifikasi SMS?
- Fitur untuk memproses pembelian nomor virtual, verifikasi kode, dan pembatalan melalui HTTP request. API SNSSIM menggunakan standar industri handler_api.
- Apakah program yang digunakan di situs verifikasi SMS lain bisa tetap digunakan?
- Untuk program yang menggunakan handler_api, cukup ubah alamat dasar dan kunci API untuk langsung terhubung.
- Apakah ada biaya terpisah untuk API?
- Tidak ada perbedaan. API dan antarmuka web menggunakan kredit dan harga yang sama.
- Berapa kali permintaan dapat dilakukan?
- Maksimal 300 permintaan per menit per kunci API. Jika melebihi, akan muncul error TOO_MANY_REQUESTS tanpa pengurangan kredit.
- Apakah nomor yang dibeli melalui API bisa direfund?
- Ya. Jika kode tidak diterima dalam 20 menit, nomor yang dibeli melalui API juga akan otomatis dikembalikan sebagai kredit.
- Di mana saya bisa membuat kunci API?
- Buat di menu API pada layar akun setelah login. Kunci hanya ditampilkan sekali saat pembuatan, segera simpan.
Coba hubungkan segera setelah membuat kunci API
Setelah mendaftar dan mengisi kredit, Anda dapat langsung membuat kunci API di layar akun.