API verifikasi SMS
Beli nomor dan baca kode verifikasi lewat API JSON. Tanpa KYC, hanya kripto.
Bagaimana bagian-bagian API ini terhubung?
- Buat akun dan simpan frasa benih yang dikembalikan. Itu satu-satunya kredensial dan tidak bisa disetel ulang.
- Buat pengisian saldo, kirim kriptonya, dan tunggu sampai dikreditkan.
- Beli nomor untuk layanan dan negara yang Anda butuhkan — saldo terpotong seketika.
- Tanyakan kode SMS-nya secara berkala. Bila tidak ada kode sebelum pesanan kedaluwarsa, dananya kembali otomatis.
Isi sekali, beli berkali-kali: satu pengisian saldo menanggung sebanyak nomor yang dijangkau saldonya, jadi hanya pembelian pertama yang menunggu konfirmasi.
Autentikasi
Kirim frasa benih akun sebagai token bearer. Tidak ada kunci API terpisah dan tidak ada panggilan masuk — frasa benih itu adalah kredensialnya.
Authorization: Bearer YOUR-SEED-PHRASE
Endpoint katalog sama sekali tidak memerlukan autentikasi, jadi Anda bisa menelusuri layanan, negara, dan harga sebelum sebuah akun ada. Semua yang menyangkut uang atau pesanan memerlukan header itu.
URL dasar
Semua endpoint bersifat relatif terhadap:
https://otpdrop.com/api/v1
Tanggapan berupa JSON. Badan permintaan POST diterima sebagai application/json atau
application/x-www-form-urlencoded.
Kesalahan
Kegagalan mengembalikan status di luar 2xx dan satu objek kesalahan.
{
"error": {
"code": "invalid_request",
"message": "unknown service: \"whatsap\""
}
}
| Status | Artinya |
|---|---|
200 | Berhasil |
201 | Dibuat — sebuah akun, pengisian saldo, atau pesanan kini ada |
401 | Frasa benih pada header Authorization hilang atau tidak sah |
422 | Permintaan dimengerti tetapi tidak dapat dijalankan |
500 | Ada yang gagal di sisi kami |
Pesan yang lazim pada 422:
| Pesan | Penyebab |
|---|---|
insufficient_funds | Saldo di bawah harga — buat pengisian saldo dulu |
unknown service | Kode layanan itu tidak ada; lihat «daftar layanan» |
unknown country | Kode negara itu tidak ada; lihat «daftar negara» |
unknown coin | Koin tidak diterima; lihat endpoint pengisian saldo |
amount_usd must be between… | Pengisian saldo dibatasi $25–$1000 |
Apakah ada batas frekuensi?
Tidak ada kuota yang diumumkan dan tidak ada kunci API untuk dicekik, tetapi memanggil endpoint dalam gelung bukan tanpa biaya. Dua di antaranya adalah endpoint untuk pemeriksaan berkala dan layak diperlakukan dengan hati-hati.
| Endpoint | Irama yang wajar | Alasannya |
|---|---|---|
| Katalog dan penawaran harga | Simpan di singgahan lokal | Harga jarang berubah; tak perlu mengambil katalog pada tiap permintaan. |
/topups/{id} | Tiap 10-15 detik | Konfirmasi jaringan memakan menit, bukan milidetik. Memeriksa lebih cepat tidak memberi tahu apa pun lebih awal. |
/orders/{id}/sms | Tiap 3-5 detik | Kode biasanya tiba dalam hitungan detik; gelung yang lebih rapat hanya menambah beban. |
| Pembelian | Seperlunya | Tiap pembelian memotong saldo sungguhan, jadi gelung yang lepas kendali membebani uang Anda sebelum membebani kami. |
Lalu lintas yang tampak seperti serangan akan diblokir di tepi jaringan tanpa 429 yang
sopan. Bila Anda punya alasan sah untuk memeriksa lebih sering, tanyakan dulu lewat
halaman kontak.
Daftar layanan
GET/api/v1/services
Setiap layanan dengan kode, kategori, dan harga termurahnya. Tidak perlu autentikasi.
Permintaan
curl -s https://otpdrop.com/api/v1/services
Tanggapan
{
"services": [
{
"code": "binance",
"name": "Binance",
"category": "Finance",
"from_price_cents": 85,
"color": "#F0B90B",
"icon": "binance"
}
],
"count": 133
}
Daftar negara
GET/api/v1/countries
Every country with its dial code and how many services are available there. No authentication required.
Permintaan
curl -s https://otpdrop.com/api/v1/countries
Tanggapan
{
"countries": [
{
"code": "us",
"name": "United States",
"dial_code": "+1",
"service_count": 133
}
],
"count": 197
}
Matriks harga
GET/api/v1/catalog
The most useful service and country combinations with their prices, cheapest first. No authentication required.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
limit | integer | opsional | How many rows to return, 1 to 500. Defaults to 12. |
Permintaan
curl -s 'https://otpdrop.com/api/v1/catalog?limit=2'
Tanggapan
{
"items": [
{
"service": "badoo",
"country": "us",
"price_cents": 35
}
],
"count": 2
}
Tanyakan harga
GET/api/v1/quote
The exact price for one service and country before you commit to buying. No authentication required.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
service | string | wajib | Service code, e.g. telegram |
country | string | wajib | Country code, e.g. us |
Permintaan
curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'
Tanggapan
{
"service": "telegram",
"country": "us",
"price_cents": 111,
"price_usd": "1.11",
"currency": "USD",
"purchasable": true
}
Buat akun
POST/api/v1/accounts
Generates an account and returns its seed. This is the only time the seed is ever shown. No authentication required.
Permintaan
curl -s -X POST https://otpdrop.com/api/v1/accounts
Tanggapan
{
"public_id": "acc_7f3c1a92",
"seed": "PABh-ZbRt-9xKm-Lq4V",
"seed_prefix": "PABh",
"balance_cents": 0,
"warning": "This seed is shown exactly once, right now..."
}
Buat pengisian saldo
POST/api/v1/topups
Claims a deposit address and returns the exact amount to send, as coin_amount, at the rate in rate_usd. Each top-up gets its own address, and it expires at expires_at. Send only the named coin, on the named network, before then.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
amount_usd | number | wajib | How much to add to the balance, in USD. Minimum 25, maximum 1000. |
coin | string | wajib | BTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more |
Permintaan
curl -s -X POST https://otpdrop.com/api/v1/topups \
-H 'Authorization: Bearer YOUR-SEED' \
-H 'content-type: application/json' \
-d '{"amount_usd": 25, "coin": "XMR"}'
Tanggapan
{
"topup_id": "top_019195919c80fc8f",
"status": "awaiting_payment",
"coin": "XMR",
"address": "89Rm4XN39m9PCr8Sr3yAFnXvLRRWQVEE...",
"amount_cents": 2500,
"amount_usd": "25.00",
"coin_amount": "0.1337",
"rate_usd": 187.02,
"bonus_cents": 0,
"credited_total_cents": 2500,
"expires_at": 1788532810
}
Status pengisian saldo
GET/api/v1/topups/{id}
Whether a deposit has been credited. Confirmation is not instant — poll this rather than assuming the funds arrived.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
id | string | wajib | The top-up id, in the path |
Permintaan
curl -s https://otpdrop.com/api/v1/topups/top_019195919c80fc8f \ -H 'Authorization: Bearer YOUR-SEED'
Tanggapan
{
"topup_id": "top_019195919c80fc8f",
"status": "credited",
"coin": "XMR",
"amount_usd": "25.00",
"coin_amount": "0.1337",
"credited_total_cents": 2500,
"expires_at": 1788532810
}
Beli nomor
POST/api/v1/orders
Debits the balance and issues a number immediately. There is no per-purchase address and no second wait. Fails with insufficient_funds if the balance is short.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
service | string | wajib | Service code, e.g. telegram |
country | string | wajib | Country code, e.g. us |
Permintaan
curl -s -X POST https://otpdrop.com/api/v1/orders \
-H 'Authorization: Bearer YOUR-SEED' \
-H 'content-type: application/json' \
-d '{"service": "telegram", "country": "us"}'
Tanggapan
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
Daftar pesanan Anda
GET/api/v1/orders
Every order on the account, newest first, with status, number and price. Useful for reconciling state after a restart rather than for polling.
Permintaan
curl -s https://otpdrop.com/api/v1/orders \ -H 'Authorization: Bearer YOUR-SEED'
Tanggapan
{
"orders": [
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
],
"count": 1
}
Ambil satu pesanan
GET/api/v1/orders/{id}
The current state of one order: its number, status and price.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
id | string | wajib | The order id, in the path |
Permintaan
curl -s https://otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c \ -H 'Authorization: Bearer YOUR-SEED'
Tanggapan
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
Ambil kode SMS
GET/api/v1/orders/{id}/sms
Poll this until arrived turns true. If the order expires with nothing delivered, the price returns to your balance automatically.
Parameter
| Nama | Tipe | Keterangan | |
|---|---|---|---|
id | string | wajib | The order id, in the path |
Permintaan
curl -s https://otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c/sms \ -H 'Authorization: Bearer YOUR-SEED'
Tanggapan
{
"order_id": "ord_1ad450bf7a42519c",
"status": "paid",
"arrived": false,
"code": null
}
Seperti apa integrasi yang lengkap?
Dari akun sampai kode dalam enam panggilan. Semua di bawah ini nyata: tempel dan ia berjalan.
# 1. Buat akun dan simpan frasa benihnya
SEED=$(curl -s -X POST https://otpdrop.com/api/v1/accounts | jq -r .seed)
# 2. Isi saldonya — kirim coin_amount ke alamat yang dikembalikan
curl -s -X POST https://otpdrop.com/api/v1/topups \
-H "Authorization: Bearer \$SEED" \
-H 'content-type: application/json' \
-d '{"amount_usd": 25, "coin": "USDT"}'
# 3. Periksa berkala sampai setorannya dikreditkan
curl -s https://otpdrop.com/api/v1/topups/TOPUP_ID \
-H "Authorization: Bearer \$SEED" | jq .status
# 4. Cek harganya sebelum memutuskan
curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'
# 5. Beli — saldo terpotong dan nomor keluar sekaligus
ORDER=$(curl -s -X POST https://otpdrop.com/api/v1/orders \
-H "Authorization: Bearer \$SEED" \
-H 'content-type: application/json' \
-d '{"service": "telegram", "country": "us"}' | jq -r .order_id)
# 6. Periksa berkala untuk kodenya
until curl -s https://otpdrop.com/api/v1/orders/\$ORDER/sms \
-H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done
Urutan yang sama dalam Python, tanpa shell:
import time, requests
API = "https://otpdrop.com/api/v1"
seed = requests.post(f"{API}/accounts").json()["seed"]
auth = {"Authorization": f"Bearer {seed}"}
topup = requests.post(f"{API}/topups", headers=auth,
json={"amount_usd": 25, "coin": "USDT"}).json()
print("send", topup["coin_amount"], topup["coin"], "to", topup["address"])
while requests.get(f"{API}/topups/{topup['topup_id']}",
headers=auth).json()["status"] != "credited":
time.sleep(15)
order = requests.post(f"{API}/orders", headers=auth,
json={"service": "telegram", "country": "us"}).json()
print("number:", order["phone"])
while True:
sms = requests.get(f"{API}/orders/{order['order_id']}/sms",
headers=auth).json()
if sms["arrived"]:
print("code:", sms["code"])
break
time.sleep(4)
Server MCP
Operasi yang sama tersedia lewat Model Context Protocol di https://otpdrop.com/mcp, sebagai sebelas
alat. Untuk menambahkannya ke Claude Code:
claude mcp add --transport http otpdrop https://otpdrop.com/mcp
Penyiapan dan daftar alat selengkapnya ada di halaman untuk agen.
Berkas penemuan
Keterangan layanan yang terbaca mesin, semuanya disajikan tanpa autentikasi.
| Berkas | Isinya |
|---|---|
/openapi.json | Skema OpenAPI 3.1 selengkapnya |
/.well-known/agent.json | Kemampuan, model autentikasi, dan aturan usaha |
/llms.txt | Pengantar singkat untuk model bahasa |
/llms-full.txt | Sama, dengan katalog lengkap di dalamnya |
Pertanyaan yang sering diajukan
Apakah API OTPDrop memerlukan kunci API?
Tidak. Tidak ada yang perlu diajukan dan tidak ada langkah persetujuan. Kredensialnya adalah frasa benih akun, dikirim sebagai token bearer, dan endpoint katalog sama sekali tidak memerlukan kredensial.
Berapa biaya API OTPDrop?
Tidak ada, di luar nomor yang Anda beli. Tidak ada langganan, tidak ada biaya per panggilan, dan tidak ada volume minimum — Anda membayar harga yang sama seperti pemakai situs.
Bahasa pemrograman apa saja yang bisa dipakai dengan API ini?
Bahasa apa pun yang bisa membuat permintaan HTTPS. Ini JSON biasa di atas HTTP dengan sebuah header bearer, jadi tidak ada SDK yang perlu dipasang dan tidak ada yang perlu disamakan dengan rilis kami.
Apa yang terjadi bila kode SMS tidak pernah datang?
Pesanan mengembalikan dananya sendiri ke saldo Anda ketika kedaluwarsa, dan Anda bisa membatalkan lebih awal lewat situs. Anda ditagih untuk kode yang terkirim, bukan untuk percobaan.
Apakah API REST sama dengan server MCP?
Ya, dan itu disengaja. Tiap endpoint REST adalah terjemahan dari satu panggilan alat MCP, sehingga keduanya tidak bisa menyimpang: memperbaiki yang satu berarti memperbaiki yang lain. Pilih mana pun yang cocok untuk klien Anda.
Bisakah menguji API tanpa mengeluarkan biaya?
Katalog, penawaran harga, dan pembuatan akun gratis, jadi Anda bisa membangun dan menguji hampir seluruh integrasi sebelum mengisi saldo. Hanya pembelian yang berbiaya.