Otpsmart
Otpsmart Virtual Number Store
Menu Navigasi
Silakan masuk terlebih dahulu
Koneksi Internet Terputus
Developer API Live & Stable v1.0

API Documentation

Integrasikan OTP Virtual Number, SMM Panel, dan Produk Digital (PPOB) ke platform Anda via RESTful API yang aman.

Base URL: https://otpsmart.com/api/v1
Kelola API Keys
🔐

Autentikasi & Keamanan

Semua endpoint menggunakan Laravel Sanctum Bearer Token. Cantumkan API Key di setiap header request.

Headers wajib di setiap request
# Wajib ada di semua endpoint Authorization: Bearer YOUR_API_KEY_DISINI Accept: application/json Content-Type: application/json # Hanya untuk POST
🔑

Bearer Token

Token unik per akun. Generate di halaman API Keys.

🛡️

Anti Double-Spend

Database lock aktif — saldo aman meski request bersamaan.

⏱️

Rate Limiter

60/menit

Melebihi limit → HTTP 429 Too Many Requests.

Format Respons JSON Universal

response.json — semua endpoint
{ "success": true, // true = OK, false = Gagal "message": "...", // Pesan (alasan error jika gagal) "data": { ... } // Objek/array data (pada endpoint tertentu) }
📱

Virtual OTP Numbers

Order nomor, tunggu SMS, batalkan & auto-refund.

GET /api/v1/profile

Cek Profil & Saldo

Ambil data akun yang terkait API Key Anda termasuk sisa saldo real-time. Cocok untuk ping Bot sebelum order.

Response 200 OK
{ "success": true, "data": { "id": 12, "username": "JuraganBot", "balance": 125500.50, "is_active": true }}
GET /api/v1/services

Daftar Layanan OTP

Ambil semua aplikasi yang tersedia (WA, TG, IG, dll). Gunakan nilai id untuk cek operator di langkah berikutnya.

Response 200 OK
{ "data": [ { "id": "wa", "name": "WhatsApp" }, { "id": "tg", "name": "Telegram" }, { "id": "ig", "name": "Instagram" }, ... ]}
GET /api/v1/services/{id}/operators

Harga & Operator Real-time

Daftar negara + operator dari semua server (SV1, SV2...) diurutkan dari termurah. Gunakan operator_id saat order.

Response 200 OK
{ "data": [ { "operator_id": "otpsmart:6|wa", "operator_name": "Indonesia (Telkomsel) [SV1]", "price": 1850, "status": "active" }, ... ]}
POST /api/v1/order

Beli Nomor OTP

Eksekusi pembelian. Saldo dipotong sesuai harga. Simpan id dari respons untuk polling status & cancel.

Request Body
{ "service_id": "wa", "operator_id": "tigersms:6|wa" }
Response 200 — Berhasil
{ "data": { "id": 992144, // ← Simpan ini! "phone_number": "6281234567890", "price": 1850, "status": "pending" }}
Response 403 — Saldo Kurang
{ "success": false, "message": "Saldo tidak mencukupi." }
GET /api/v1/order/{id}

Cek SMS / Status OTP

Panggil tiap 5–10 detik (polling) sampai sms_code tidak null. Auto Smart-Refund aktif: jika provider batal di tengah jalan, saldo dikembalikan otomatis.

Status: pendingwaitingsuccess / canceled
Response 200 — OTP Masuk
{ "data": { "id": 992144, "phone_number": "6281234567890", "status": "success", "sms_code": "491002", // null jika belum masuk "sms_text": "Kode WA Anda: 491-002" }}
POST /api/v1/order/{id}/cancel

Batalkan & Refund Instan

Batalkan order pending/waiting yang belum ada OTP-nya. Saldo kembali penuh otomatis. Tidak perlu request body.

⚠️

Tidak bisa jika OTP sudah masuk (sms_code sudah terisi).

Response 200 — Berhasil Dibatalkan
{ "success": true, "message": "Berhasil dibatalkan. Saldo telah dikembalikan." }
📣

SMM Panel

Beli Followers, Likes, Views dan paket sosmed lainnya.

GET /api/v1/smm/services

Katalog Layanan SMM

Ribuan layanan aktif. Filter: ?category=Instagram. Harga adalah per 1.000 unit. Gunakan id (bukan provider_service_id) saat order.

Response 200 OK
{ "total": 5688, "data": [{ "id": 152, "name": "TikTok Views | Instant | Max 10M", "category": "TikTok Views", "price_per_1000": 15.00, "min_order": 100, "max_order": 10000000 }]}
POST /api/v1/smm/order

Buat Pesanan SMM

Quantity harus antara min_order dan max_order. Harga: (price_per_1000 / 1000) × qty.

Request Body
{ "service_id": 152, "link": "https://tiktok.com/@user/...", "quantity": 500 }
Response 201 — Order Dibuat
{ "data": { "id": 8829, // ← Untuk cek status "service_name": "TikTok Views | Instant", "quantity": 500, "price": 7.50, "status": "pending" }}
GET /api/v1/smm/order/{id}

Cek Progres SMM

start_count = jumlah follower/like sebelum disuntik. remains = sisa yang belum selesai.

Status: pendinginprogresspartial / completed
Response 200 OK
{ "data": { "id": 8829, "quantity": 500, "start_count": 10500, // Sebelum disuntik "remains": 0, // Sisa belum selesai "status": "completed" }}

Produk Digital (PPOB)

Pulsa, Paket Data, Game Voucher, E-Wallet, PLN, dan lainnya.

GET /api/v1/digital/products

Katalog Produk PPOB

Filter: ?category=Telkomsel atau ?keyword=10000. Gunakan id dari respons saat order.

Response 200 OK
{ "total": 90, "data": [{ "id": 894, "name": "Axis 10.000", "category": "Axis Reguler", "price": 10500.00, "description": "Pulsa Reguler AXIS" }]}
POST /api/v1/digital/order

Topup / Beli Produk

customer_no = No. HP, ID Meter PLN, atau User ID Game. Jika provider gagal, saldo rollback penuh otomatis.

Request Body
{ "product_id": 894, "customer_no": "08312345678" }
Response 201 — Diproses
{ "data": { "id": 10034, // ← Untuk cek status "ref_id": "API-X9K3MLPQZT", "product_name": "Axis 10.000", "price": 10500, "status": "pending", "serial_number": null // Terisi saat sukses }}
GET /api/v1/digital/order/{id}

Cek SN & Konfirmasi

Dapatkan Serial Number sebagai bukti resmi transaksi. Gunakan SN ini sebagai struk untuk pelanggan Anda.

Status: pendingsuccess / failed
Response 200 — Sukses + SN
{ "data": { "id": 10034, "product_name": "Axis 10.000", "price": 10500, "status": "success", "serial_number": "AXIS090900088921B", "message": "Trx XL/Axis Berhasil" }}
💬 Chat Support