Dokumentasi API

CentralOTP Unified API

CentralOTP API adalah satu pintu untuk membuat order OTP, SMM, App Premium, Top Up Game, dan Prepaid/PPOB. Satu API key dapat dipakai untuk semua produk yang aktif di akun kamu.

Base URL https://api.centralotp.shop/api/v1

Fitur API

Satu API KeySatu credential untuk semua produk.
Satu SaldoSaldo web dipakai bersama untuk OTP, SMM, Top Up, App Premium, dan Prepaid.
IdempotencyMencegah double order saat client retry request.
Refund OtomatisOrder gagal atau OTP expired tanpa kode akan diproses sesuai aturan refund web/API.
Webhook CallbackServer kamu bisa menerima update status order otomatis.
API LogsDashboard developer menampilkan riwayat request dan statusnya.

Authentication

Semua endpoint private wajib memakai API key dari dashboard Developer. API key dikirim lewat header `Authorization`.

Authorization: Bearer cotp_live_xxxxxxxxxxxxxxxxx

Jangan kirim API key di query string atau membagikannya ke frontend publik.

Konsep Utama

Balancesaldo userSemua order akan memotong saldo akun web.
Product Typeotp, smm, app_premium, topup, prepaidMenentukan jenis order yang dibuat.
PayloadobjectIsi payload berbeda sesuai produk.
Idempotency Keystring unikDipakai agar retry request tidak membuat order ganda.
Order IDord_...ID internal untuk cek status order.

Produk Yang Didukung

OTP

Nokos OTP

Beli nomor virtual untuk menerima kode OTP. Website/API akan refund jika expired tanpa kode.

SMM

Suntik Sosmed

Order follower, like, view, comment, dan layanan sosial media lain sesuai katalog provider.

APP

App Premium

Beli akun, lisensi, atau paket aplikasi premium. Hasil order dikembalikan di payload order.

GAME

Top Up Game

Top up game memakai user ID/server ID dan pilihan nominal produk.

PPOB

Prepaid

Pulsa, paket data, e-wallet, voucher, dan produk digital lain.

Developer Dashboard

Developer dashboard adalah tempat user mengatur akses API sebelum dipakai di sistem sendiri.

Generate API KeyMembuat API key baru. Secret hanya ditampilkan sekali.
Reset API KeyMengganti API key jika key lama bocor atau ingin rotasi berkala.
Webhook URLURL callback untuk menerima update status order otomatis.
API LogsRiwayat request API, status response, dan waktu request.
Rate LimitLimit request per menit untuk menjaga stabilitas layanan.
Product AccessDaftar produk yang aktif untuk API key user.

Endpoint Utama

GET/balanceCek saldo akun API.
GET/productsList kategori produk yang tersedia.
GET/transactionsRiwayat mutasi saldo.
POST/ordersMembuat order semua produk.
GET/ordersList order akun.
GET/orders/:idCek detail dan status order.
POST/orders/:id/cancelCancel order jika produk/status mengizinkan.

Contoh Request

Cek Saldo

curl https://api.centralotp.shop/api/v1/balance \
  -H "Authorization: Bearer cotp_live_xxxxxxxxx"

Order OTP

POST /api/v1/orders
{
  "product_type": "otp",
  "idempotency_key": "otp-20260702-0001",
  "payload": {
    "service_id": "whatsapp",
    "country_id": "id",
    "operator_id": "any"
  }
}

Order SMM

POST /api/v1/orders
{
  "product_type": "smm",
  "idempotency_key": "smm-20260702-0001",
  "payload": {
    "service_id": "12345",
    "target": "https://instagram.com/username",
    "quantity": 100
  }
}

Order Top Up Game

POST /api/v1/orders
{
  "product_type": "topup",
  "idempotency_key": "topup-20260702-0001",
  "payload": {
    "game_id": "mobile-legends",
    "product_id": "diamond-86",
    "user_id": "123456789",
    "server_id": "1234"
  }
}

Payload Produk

Semua order memakai endpoint yang sama, tapi isi `payload` berbeda sesuai `product_type`.

otpservice_idID aplikasi OTP, contoh WhatsApp atau Telegram.
otpcountry_idNegara nomor OTP.
otpoperator_idOperator/provider yang dipilih, atau `any` jika tersedia.
smmservice_idID layanan SMM.
smmtargetURL/posting/profile tujuan.
smmquantityJumlah order.
app_premiumproduct_id, variant_id, qtyProduk dan paket yang dibeli.
topupgame_id, product_id, user_id, server_idGame, nominal, dan data akun game.
prepaidproduct_id, destinationProduk PPOB dan nomor tujuan.

Status Order

creatingawalOrder sedang dibuat di sistem.
pendingmenungguOrder sudah diterima provider dan menunggu hasil.
processingprosesProvider sedang memproses order.
successselesaiOrder selesai.
expiredkedaluwarsaKhusus OTP, waktu tunggu habis.
failedgagalOrder gagal dan akan diproses refund jika memenuhi aturan.
refundedrefundSaldo order sudah dikembalikan.

Refund Rules

OTP expired tanpa kodeRefund untuk website/API.
OTP cancel sebelum kode masukRefund jika masih memenuhi batas cancel.
OTP sudah menerima kodeTidak refund.
SMM/App/Top Up/Prepaid failedRefund setelah provider menyatakan gagal/error.
Order successTidak refund.

Webhook Callback

Webhook bersifat opsional. Jika user mengatur callback URL, CentralOTP akan mengirim update saat status order berubah.

POST https://domain-kamu.com/callback
X-CentralOTP-Signature: sha256=...

{
  "event": "order.updated",
  "order_id": "ord_xxx",
  "product_type": "otp",
  "status": "success"
}

Checklist Integrasi

1. Buat akunDaftar di website utama dan login ke dashboard.
2. Isi saldoTop up saldo web. Saldo web tidak terhubung ke Telegram Mini App.
3. Generate API keyBuka Developer API dan buat API key.
4. Simpan API key amanJangan expose API key di frontend publik.
5. Coba endpoint balancePastikan auth dan koneksi API sudah benar.
6. Kirim order dengan idempotency keyGunakan key unik untuk setiap order.
7. Cek status orderPolling `/orders/:id` atau aktifkan webhook.
8. Tangani refundSelalu baca field `refunded` dan status terbaru.

Error Code

UNAUTHORIZED401API key tidak ada atau tidak valid.
INSUFFICIENT_BALANCE402Saldo tidak cukup.
VALIDATION_ERROR400Payload tidak lengkap atau format salah.
PRODUCT_DISABLED403Produk belum aktif untuk akun.
ORDER_NOT_FOUND404Order tidak ditemukan.
PROVIDER_ERROR502Provider sedang bermasalah.
{
  "success": false,
  "code": "INSUFFICIENT_BALANCE",
  "message": "Saldo tidak cukup."
}