Lewati ke konten utama
100+
Negara
1.000+ layanan. Bayar dengan kripto, tanpa KYC.
Beli Nomor

API Verifikasi SMS — SMSNoKYC

Otomatiskan verifikasi OTP dari ujung ke ujung. Pesan nomor virtual di 190+ negara, baca kode SMS dalam hitungan detik, sewa jalur khusus jangka panjang, dan kendalikan setiap pesanan lewat satu permukaan REST — tanpa kunci API, tanpa KYC, dibayar dengan mata uang kripto.

Waktu baca: 5 menit REST · JSON · OpenAPI 3.0 Spesifikasi OpenAPI →

Autentikasi diperlukan. Setiap permintaan bertumpu pada cookie sesi, jadi Anda harus masuk ke akun SMSNoKYC. Bangun sesi lewat antarmuka web atau titik autentikasi sebelum memanggil.

Mengapa pengembang memilih API SMSNoKYC

SMSNoKYC adalah API verifikasi SMS paling fleksibel untuk pengembang yang membutuhkan anonimitas, jangkauan global, dan harga yang dapat diprediksi. Berbeda dengan penyedia SMS-OTP lama yang membatasi akses di balik kontrak perusahaan, minimum bulanan, dan kuesioner KYC, SMSNoKYC bekerja dengan klien HTTPS apa pun, menagih secara ketat per nomor, dan menerima 20+ mata uang kripto termasuk Bitcoin, Monero, Ethereum, USDT, USDC, Solana, Litecoin, XRP, TRON, dan Toncoin.

Kasus penggunaan tipikal meliputi otomatisasi pendaftaran akun untuk QA berskala besar, pengambilan kata sandi sekali pakai untuk agen headless dan bot CI, validasi alur yang memerlukan nomor telepon dalam continuous integration, menyewa nomor jangka panjang khusus untuk akun Telegram atau WhatsApp yang membutuhkan penerimaan SMS tanpa gangguan, dan menggerakkan verifikasi terdistribusi secara geografis di 190+ negara dengan kontrol tingkat operator eksplisit — virtual, fisik, atau premium.

Autentikasi

API menggunakan autentikasi sesi berbasis cookie. Untuk melakukan autentikasi secara terprogram:

  1. Kirim permintaan POST ke /auth-api.php dengan seed phrase Anda
  2. Simpan session cookie dari respons
  3. Sertakan cookie dalam semua permintaan API berikutnya
POST /auth-api.php

Autentikasi dengan seed phrase Anda dan buat sesi.

ParameterJenisWajibDeskripsi
actionstringwajib diisiHarus berupa "login"
seedstringwajib diisiSeed akses 16 karakter Anda (mis. AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Respons Berhasil
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Respons Error
{ "success": false, "error": "Invalid seed." }

URL Dasar

Semua endpoint API relatif terhadap:

https://smsnokyc.com/api.php?action={action}

Semua respons berformat JSON. Endpoint POST menerima body permintaan application/json maupun application/x-www-form-urlencoded.

Batas Laju

API memberlakukan batas permintaan berikut:

EndpointLimitWindow
Autentikasi5 percobaan15 menit
Semua endpoint lainnyaTidak ada batas maksimum

Pembatasan permintaan: Autentikasi dibatasi hingga 5 percobaan per 15 menit. Endpoint lain saat ini tidak dibatasi, namun penggunaan berlebihan dapat diperlambat. Gunakan interval permintaan yang wajar.

Penanganan Error

Semua error mengembalikan objek JSON dengan field <code>error</code>:

{ "error": "Description of what went wrong" }
Kode HTTPMeaning
200Berhasil (periksa isi respons untuk kesalahan pada level aplikasi)
403Token CSRF tidak valid
405Metode HTTP salah (mis. GET pada endpoint yang hanya menerima POST)
429Batas laju terlampaui

Error umum pada level aplikasi:

ErrorCause
"Login required"Sesi kedaluwarsa atau tidak terautentikasi
"Insufficient balance"Dana tidak mencukupi — menyertakan kolom need dan have
"Service not available for this country"Stok kosong atau layanan tidak aktif untuk negara yang dipilih
"Missing country or service"Parameter yang diperlukan tidak diberikan

List Countries

GET /api.php?action=countries

Mengembalikan semua negara aktif dengan nomor virtual yang tersedia. Tidak diperlukan autentikasi.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
Respons
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

List Services

GET /api.php?action=services&country={code}

Mengembalikan layanan yang tersedia untuk negara tertentu, termasuk harga dan stok. Tanpa kode negara, mengembalikan semua layanan tanpa harga.

ParameterJenisWajibDeskripsi
countrystringopsionalKode negara ISO 3166-1 alpha-2 (mis. us, gb, de)
Respons (dengan negara)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

List Operators

GET /api.php?action=operators&country={code}

Mengembalikan operator (operator) yang tersedia untuk negara tertentu. Setiap operator memiliki jenis dan pengganda harga yang diterapkan pada harga layanan dasar.

ParameterJenisWajibDeskripsi
countrystringwajib diisiKode negara ISO 3166-1 alpha-2
Respons
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Jenis operator: virtual — Nomor VoIP, termurah, mungkin diblokir oleh beberapa layanan. physical — kartu SIM nyata, tingkat keberhasilan lebih tinggi. premium — pengiriman tercepat (~10 dtk), tingkat keberhasilan tertinggi.

Beli Nomor (Aktivasi SMS)

POST /api.php?action=buy

Beli nomor virtual untuk verifikasi SMS sekali pakai. Nomor aktif selama 20 menit. Jika tidak ada SMS yang diterima, saldo Anda akan dikembalikan secara otomatis.

ParameterJenisWajibDeskripsi
countrystringwajib diisiKode negara (mis. us)
service_idintegerwajib diisiID Layanan dari Daftar Layanan
operator_idintegeropsionalID Operator dari Daftar Operator. Abaikan untuk operator default.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Respons Berhasil
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Error: Saldo Tidak Mencukupi
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

List Orders

GET /api.php?action=orders

Mengembalikan 50 pesanan terbaru Anda, termasuk nomor telepon dan kode SMS. Lakukan polling pada endpoint ini untuk memeriksa kode SMS masuk pada pesanan aktif.

Respons
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Status pesanan: active — menunggu SMS. completed — SMS diterima. cancelled — dibatalkan oleh pengguna. refunded — pengembalian otomatis (tidak ada SMS sebelum batas waktu). expired — kedaluwarsa.

Cek Harga Sewa

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Cek harga sewa nomor khusus dari operator tertentu untuk durasi tertentu.

ParameterJenisWajibDeskripsi
countrystringwajib diisiKode negara
operator_idintegerwajib diisiID Operator
durationintegerwajib diisiDurasi sewa dalam hari: 7, 14, 30, atau 90
Respons
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Sewa Nomor

POST /api.php?action=rental_buy

Sewa satu atau lebih nomor telepon khusus. Nomor tersebut sepenuhnya milik Anda selama seluruh periode sewa dan menerima SMS masuk tak terbatas.

ParameterJenisWajibDeskripsi
countrystringwajib diisiKode negara
operator_idintegerwajib diisiID Operator
durationintegerwajib diisi7, 14, 30, atau 90 hari
qtyintegeropsionalJumlah nomor yang akan disewa (1–10, default: 1)
Respons Berhasil
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Dapatkan Info Pengguna

GET /api.php?action=user

Mengembalikan informasi akun dan saldo pengguna saat ini. Gunakan ini untuk memeriksa status autentikasi dan dana yang tersedia.

Terautentikasi
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Tidak Terautentikasi
{ "logged_in": false }

Contoh Alur Kerja Lengkap

Berikut contoh Python lengkap yang melakukan autentikasi, menemukan layanan, membeli nomor, dan memeriksa kode SMS:

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Pertanyaan yang Sering Diajukan

Untuk apa API verifikasi SMSNoKYC?

Ia membuka katalog yang sama dengan situs bagi kode Anda sendiri: nomor virtual di 190+ negara untuk verifikasi OTP sekali pakai dan untuk sewa 7-90 hari. Lewat antarmuka REST JSON yang sederhana, Anda bisa menelusuri aplikasi, membaca harga langsung, memesan nomor, mengambil kode masuk, dan mengembalikan aktivasi yang gagal — tanpa KYC, ditagih hanya dengan kripto.

Apakah butuh kunci API atau token OAuth?

Tidak. Autentikasi berupa cookie sesi: kirim sekali frasa akses 16 karakter Anda via POST ke /auth-api.php, lalu teruskan cookie yang dikembalikan pada setiap panggilan berikutnya. Tak ada yang perlu disediakan, dirotasi, atau dicabut — Anda masuk sekali per sesi dan tetap masuk selama cookie hidup.

Berapa biaya API?

Memanggil API gratis — tanpa biaya bulanan, tanpa langganan, tanpa volume minimum. Anda hanya membayar per nomor: aktivasi sekali pakai mulai 0,05 $, sewa khusus mulai beberapa dolar untuk 7 hari. Semua dipotong dari saldo prabayar Anda, dan setiap aktivasi yang tak pernah menerima SMS dikembalikan dengan sendirinya.

Bahasa dan kerangka kerja apa yang bisa memanggilnya?

Apa pun yang bisa mengirim permintaan HTTPS berfungsi — Python (requests, httpx), Node.js (fetch, axios), Go, PHP, Ruby, Java, C#, cURL dari Bash, dan selebihnya. Dokumentasi menyertakan contoh siap salin dalam cURL, Python, dan JavaScript, dan berkas OpenAPI 3.0 lengkap di /openapi.json memungkinkan Anda membuat klien bertipe dalam bahasa pilihan Anda.

Apa yang terjadi jika kode verifikasi tak pernah tiba?

Setiap aktivasi punya jendela 20 menit. Jika tak ada yang tiba sebelum jendela tutup, pesanan batal dengan sendirinya dan harga penuh kembali ke saldo — tanpa tiket, tanpa percobaan ulang manual. Saldo yang dikembalikan bisa langsung Anda pakai untuk nomor lain, mungkin di kategori operator lain (virtual, fisik, atau premium) demi tingkat keberhasilan lebih baik.

Apakah API punya batas laju?

Masuk dibatasi 5 percobaan per 15 menit per IP untuk memblokir tebakan frasa. Selebihnya — katalog, pembelian, pesanan, sewa — untuk saat ini tanpa batas keras, tetapi jaga jeda yang wajar: menanyai /api.php?action=orders tiap 3-5 detik sudah lebih dari cukup untuk membaca SMS, dan lonjakan terus-menerus di atas sekitar 10 permintaan/detik bisa dibatasi di tingkat WAF.