Integrasikan seluruh layanan SMM, Pulsa, Data, E-Wallet, Voucher Game & PPOB SoloSmartPedia secara otomatis ke dalam sistem atau website Anda dengan RESTful API yang cepat, aman, dan responsif.
API SoloSmartPedia memungkinkan sistem server, aplikasi web, bot Telegram/WhatsApp, maupun aplikasi Android Anda untuk bertransaksi secara otomatis (Host-to-Host) dengan kecepatan tinggi dan stabilitas terpelihara.
https://solosmartpedia.com/api/v1
Order diproses secara instan oleh sistem otomatis 24 jam nonstop.
Keamanan berlapis dengan API Key, IP Whitelisting, dan PIN Transaksi 6-digit.
API khusus untuk cek status, riwayat, dan pengajuan refill sosial media otomatis.
Demi menjamin keamanan saldo dan transaksi Anda, API SoloSmartPedia mengimplementasikan tiga lapis keamanan wajib.
Parameter api_key wajib disertakan pada setiap request (baik GET via query parameter maupun POST via body).
Setiap request diperiksa apakah IP pengirim cocok dengan daftar IP Whitelist yang Anda konfigurasikan di dashboard.
Setiap pembuatan order wajib menyertakan parameter pin (6 digit). Maksimal 5x kesalahan sebelum akun terkunci (HTTP 423).
HTTP 429 beserta header Retry-After (detik). Tunggu, lalu ulangi — jangan langsung mengulang berulang-ulang.Endpoint cepat dan ringan untuk mengecek sisa saldo aktif akun Anda.
{
"status": true,
"message": "Berhasil",
"data": {
"balance": 1500000
}
}
Mengambil informasi detail akun pengguna termasuk username, nama, email, saldo, tier keanggotaan, dan status akun.
{
"status": true,
"message": "Berhasil",
"data": {
"username": "reseller_indonesia",
"name": "Budi Santoso",
"email": "budi@example.com",
"balance": 2500000,
"tier": "gold",
"status": "active"
}
}
Isi saldo lewat API tanpa konfirmasi manual: buat deposit, arahkan pelanggan ke payment_url, dan saldo bertambah otomatis begitu pembayaran diterima.
POST /deposit dengan amount (nominal deposit) dan ref_id milik Anda.payment_url; pelanggan membayar tepat total_amount (nominal + unique_code QRIS). Tanpa biaya tambahan.credit_amount, yaitu sama dengan jumlah yang ditransfer pelanggan (total_amount). Tidak ada langkah konfirmasi dari Anda.GET /deposit/status (disarankan tiap 5–10 detik, berhenti bila status bukan pending) atau cek GET /balance.Akun belum verifikasi KTP: maks. total bayar Rp 200.000/transaksi dan Rp 1.000.000/hari. Maks. 5 deposit pending bersamaan. Batas request: 10 pembuatan deposit/menit per API key.
| Parameter | Wajib | Keterangan |
|---|---|---|
api_key | Ya | API key Anda |
amount | Ya | Bilangan bulat rupiah (tanpa titik/koma). Nominal deposit. |
ref_id | Disarankan | Referensi unik Anda (maks 64: huruf, angka, . : - _). Idempoten: request ulang dengan ref_id sama mengembalikan deposit yang sama, tidak membuat yang baru. |
{
"status": true,
"message": "Deposit berhasil dibuat, silakan lakukan pembayaran",
"data": {
"deposit_id": "API-260922103015AB12C",
"ref_id": "INV-1001",
"status": "pending",
"amount": 100000,
"fee": 0,
"unique_code": 23,
"total_amount": 100023,
"credit_amount": 100023,
"payment_method": "QRIS",
"payment_url": "https://...",
"reference": "DS1234...",
"is_expired": false,
"expired_at": "2026-09-22T11:30:15+07:00",
"paid_at": null,
"created_at": "2026-09-22T10:30:15+07:00"
}
}
Isi salah satu: deposit_id atau ref_id. Response sama dengan objek data di atas.
| status | Arti |
|---|---|
pending | Menunggu pembayaran. Bila is_expired = true, batas waktu lewat dan akan dibatalkan otomatis (jika sudah terlanjur dibayar, saldo tetap masuk). |
success | Sudah dibayar, saldo sudah ditambahkan (paid_at terisi). |
failed | Pembayaran gagal. |
canceled | Dibatalkan / kedaluwarsa tanpa pembayaran. |
limit (1–100, default 20), page, dan status (pending|success|failed|canceled) bersifat opsional.
{ "status": true, "message": "Berhasil",
"data": { "items": [ { ...objek deposit... } ],
"page": 1, "per_page": 20, "total": 42, "has_more": true } }
Mengembalikan enabled, min_amount, max_amount, fee_percent, expiry_minutes, max_pending, dan (bila belum verifikasi) limits. Bila enabled = false, deposit otomatis sedang dimatikan admin.
| HTTP | code | Penyebab |
|---|---|---|
| 401 | - | API key salah/nonaktif, atau IP tidak di whitelist |
| 422 | amount_too_small / amount_too_large | Di luar batas nominal |
| 422 | invalid_ref_id | Format ref_id tidak valid |
| 422 | limit_unverified / limit_unverified_daily | Batas akun belum verifikasi KTP |
| 409 | ref_id_conflict | ref_id sudah dipakai dengan nominal berbeda |
| 429 | too_many_pending | Terlalu banyak deposit pending; atau melewati batas request |
| 502 | gateway_error | Gagal membuat invoice; aman diulang dengan ref_id yang sama |
| 503 | deposit_disabled | Deposit otomatis dimatikan admin |
# 1) buat deposit
curl -X POST "https://solosmartpedia.com/api/v1/deposit" -H "Content-Type: application/json" \
-d '{"api_key":"YOUR_API_KEY","amount":100000,"ref_id":"INV-1001"}'
# 2) cek status (ulangi tiap 5-10 detik sampai status bukan "pending")
curl "https://solosmartpedia.com/api/v1/deposit/status?api_key=YOUR_API_KEY&ref_id=INV-1001"
<?php
$base = 'https://solosmartpedia.com/api/v1';
$key = 'YOUR_API_KEY';
$ch = curl_init("$base/deposit");
curl_setopt_array($ch, [
CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['api_key' => $key, 'amount' => 100000, 'ref_id' => 'INV-1001']),
]);
$res = json_decode(curl_exec($ch), true);
if ($res['status']) { header('Location: ' . $res['data']['payment_url']); } // arahkan pelanggan membayar
const BASE = 'https://solosmartpedia.com/api/v1', KEY = 'YOUR_API_KEY';
const res = await fetch(`${BASE}/deposit`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ api_key: KEY, amount: 100000, ref_id: 'INV-1001' }),
}).then(r => r.json());
if (res.status) console.log(res.data.payment_url); // tampilkan ke pelanggan
import requests
BASE, KEY = "https://solosmartpedia.com/api/v1", "YOUR_API_KEY"
res = requests.post(f"{BASE}/deposit", json={"api_key": KEY, "amount": 100000, "ref_id": "INV-1001"}).json()
if res["status"]:
print(res["data"]["payment_url"]) # tampilkan ke pelanggan
Mengambil seluruh daftar produk & layanan beserta harga terkini yang disesuaikan secara otomatis berdasarkan tier keanggotaan akun Anda (Basic, Silver, Gold, Platinum).
| Parameter | Tipe | Wajib | Deskripsi & Contoh |
|---|---|---|---|
api_key |
String |
Wajib | API Key akun Anda. |
category |
String |
Opsional | Filter nama kategori. Contoh: Pulsa, Voucher Game, Instagram Followers. |
brand |
String |
Opsional | Filter provider/brand (hanya untuk prabayar). Contoh: TELKOMSEL, DANA, MOBILE LEGENDS. |
per_page |
Integer |
Opsional | Jumlah baris per halaman (1 s/d 500). Jika tidak diisi, mengembalikan seluruh data tanpa pagination. |
page |
Integer |
Opsional | Nomor halaman aktif (Default: 1). Berlaku bila per_page diisi. |
{
"status": true,
"message": "Berhasil",
"data": [
{
"id": 101,
"category": "Pulsa Reguler",
"brand": "TELKOMSEL",
"service": "Telkomsel 10.000",
"price": 10250,
"status": "active",
"description": "Penambahan masa aktif 7 hari"
}
],
"pagination": {
"total": 450,
"per_page": 2,
"current_page": 1,
"last_page": 225,
"from": 1,
"to": 2
}
}
Membuat order pembelian pulsa, paket data, token PLN, e-wallet, atau voucher game.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
api_key |
String |
Wajib | API Key akun Anda. |
service_id |
Integer |
Wajib | ID Layanan (diperoleh dari endpoint Daftar Layanan Prabayar). |
target |
String |
Wajib | Nomor tujuan (Contoh: 081234567890, No Meter PLN, ID Game 123456(789)). |
pin |
String |
Wajib | PIN Transaksi Keamanan Akun Anda (6 digit angka). |
{
"status": true,
"message": "Order berhasil dibuat",
"data": {
"order_id": 12458,
"id_order": "f83b2a19-9430-4e2a-8d19-123456789abc",
"service": "Telkomsel 10.000",
"target": "081234567890",
"price": 10250,
"status": "Pending",
"balance": 1489750
}
}
{
"status": true,
"message": "Berhasil",
"data": {
"order_id": 12458,
"id_order": "f83b2a19-9430-4e2a-8d19-123456789abc",
"service": "Telkomsel 10.000",
"target": "081234567890",
"price": 10250,
"status": "Success",
"sn": "003291839210932810",
"created_at": "2026-07-20 14:30:15"
}
}
Sistem akan secara otomatis melakukan dua tahap sekaligus: Inquiry Tagihan ke provider dan Pembayaran (Deduct Saldo) dalam 1 kali request atomic.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
api_key |
String |
Wajib | API Key akun Anda. |
service_id |
Integer |
Wajib | ID Layanan Pascabayar (BPJS, PLN Pascabayar, PDAM, Indihome, dll). |
target |
String |
Wajib | Nomor Pelanggan / ID Tagihan. |
pin |
String |
Wajib | PIN Transaksi Keamanan Akun Anda (6 digit). |
{
"status": true,
"message": "Order berhasil dibuat",
"data": {
"order_id": 5521,
"id_order": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"service": "PLN PASCABAYAR",
"target": "531234567890",
"name": "ANDI WIJAYA",
"price": 125500,
"status": "Success",
"sn": "REF/PLN/98239102391",
"balance": 2374500
}
}
Membuat order optimasi sosial media (Followers, Likes, Views, Subscribers, Comments, dll).
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
api_key |
String |
Wajib | API Key akun Anda. |
service_id |
Integer |
Wajib | ID Layanan Social Media. |
target |
String |
Wajib | Target URL postingan atau Username akun target. |
quantity |
Integer |
Wajib | Jumlah pemesanan (harus antara min dan max layanan). |
pin |
String |
Wajib | PIN Transaksi Akun Anda (6 digit). |
custom_comments |
String |
Opsional | Daftar teks komentar per baris (jika layanan tipe custom comments). |
custom_link |
String |
Opsional | Link khusus apabila layanan membutuhkan rujukan tambahan. |
{
"status": true,
"message": "Order berhasil dibuat",
"data": {
"order_id": 8841,
"id_order": "3c9a1d2e-5b6f-7890-1234-56789abcdef0",
"service": "Instagram Followers Real Indonesia [Refill 30D]",
"target": "https://instagram.com/myaccount",
"quantity": 1000,
"price": 25000,
"status": "Pending",
"balance": 2349500
}
}
Mengajukan pengisian ulang (refill) apabila terjadi penurunan (drop) pada pesanan sosial media yang memiliki garansi refill.
refill: true (berlogo ♻️).| Parameter | Wajib | Deskripsi |
|---|---|---|
api_key |
Wajib | API Key akun Anda. |
order_id |
Wajib | ID Pesanan (nilai order_id / ID angka pesanan utama). |
{
"status": true,
"message": "Refill berhasil diajukan",
"data": {
"id_refill": "RF260720143500ABCD",
"order_id": 8841,
"status": "Pending"
}
}
Melakukan pengecekan nama pemilik rekening/meteran listrik PLN prabayar sebelum melakukan pembelian token.
| Parameter | Tipe | Wajib | Deskripsi |
|---|---|---|---|
api_key |
String |
Wajib | API Key akun Anda. |
target |
String |
Wajib | Nomor Meter / ID Pelanggan PLN (11-12 digit). |
{
"status": true,
"message": "Inquiry berhasil",
"data": {
"name": "SITI AMINAH",
"meter_no": "531209381920",
"segment_power": "R1M/900VA",
"customer_no": "531209381920"
}
}
Pilih bahasa pemrograman favorit Anda untuk melihat contoh snippet transaksi order prabayar, cek saldo, dan cek status secara lengkap.
# 1. Cek Saldo
curl -X GET "https://solosmartpedia.com/api/v1/balance?api_key=YOUR_API_KEY"
# 2. Order Prabayar (Pulsa/Data/Game)
curl -X POST "https://solosmartpedia.com/api/v1/order/prepaid" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"service_id": 101,
"target": "081234567890",
"pin": "123456"
}'
# 3. Order Social Media (SMM)
curl -X POST "https://solosmartpedia.com/api/v1/order/socialmedia" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"service_id": 55,
"target": "https://instagram.com/p/xxxxxx",
"quantity": 1000,
"pin": "123456"
}'
# 4. Cek Status Order
curl -X GET "https://solosmartpedia.com/api/v1/order/prepaid/status?api_key=YOUR_API_KEY&order_id=12458"
<?php
class SoloSmartPediaAPI
{
private string $apiKey;
private string $pin;
private string $baseUrl = "https://solosmartpedia.com/api/v1";
public function __construct(string $apiKey, string $pin = '')
{
$this->apiKey = $apiKey;
$this->pin = $pin;
}
private function request(string $endpoint, string $method = 'GET', array $data = [])
{
$url = $this->baseUrl . $endpoint;
if ($method === 'GET') {
$data['api_key'] = $this->apiKey;
$url .= '?' . http_build_query($data);
} else {
$data['api_key'] = $this->apiKey;
if ($this->pin) $data['pin'] = $this->pin;
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
}
$response = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) return ['status' => false, 'message' => 'cURL Error: ' . $err];
return json_decode($response, true);
}
public function getBalance() { return $this->request('/balance', 'GET'); }
public function orderPrepaid(int $serviceId, string $target) {
return $this->request('/order/prepaid', 'POST', ['service_id' => $serviceId, 'target' => $target]);
}
public function getStatusPrepaid(int $orderId) {
return $this->request('/order/prepaid/status', 'GET', ['order_id' => $orderId]);
}
}
// === Contoh Penggunaan ===
$api = new SoloSmartPediaAPI('YOUR_API_KEY_HERE', '123456');
// Cek Saldo
print_r($api->getBalance());
// Buat Order Pulsa
print_r($api->orderPrepaid(101, '081234567890'));
?>
const axios = require('axios');
const API_KEY = "YOUR_API_KEY_HERE";
const PIN = "123456";
const BASE_URL = "https://solosmartpedia.com/api/v1";
// 1. Cek Saldo
async function getBalance() {
const res = await axios.get(`${BASE_URL}/balance`, {
params: { api_key: API_KEY }
});
console.log("Saldo:", res.data);
}
// 2. Order Prabayar (Pulsa/Data)
async function orderPrepaid(serviceId, target) {
const res = await axios.post(`${BASE_URL}/order/prepaid`, {
api_key: API_KEY,
pin: PIN,
service_id: serviceId,
target: target
});
console.log("Order Respon:", res.data);
}
// 3. Cek Status Order
async function checkStatus(orderId) {
const res = await axios.get(`${BASE_URL}/order/prepaid/status`, {
params: { api_key: API_KEY, order_id: orderId }
});
console.log("Status Respon:", res.data);
}
getBalance();
import requests
API_KEY = "YOUR_API_KEY_HERE"
PIN = "123456"
BASE_URL = "https://solosmartpedia.com/api/v1"
# 1. Cek Saldo
def get_balance():
res = requests.get(f"{BASE_URL}/balance", params={"api_key": API_KEY})
return res.json()
# 2. Order Prabayar
def order_prepaid(service_id, target):
payload = {
"api_key": API_KEY,
"pin": PIN,
"service_id": service_id,
"target": target
}
res = requests.post(f"{BASE_URL}/order/prepaid", json=payload)
return res.json()
# 3. Cek Status
def check_status(order_id):
res = requests.get(f"{BASE_URL}/order/prepaid/status", params={"api_key": API_KEY, "order_id": order_id})
return res.json()
if __name__ == "__main__":
print(get_balance())
Setiap respons API mengembalikan status code HTTP yang relevan dan struktur JSON yang seragam.
Semua endpoint membalas JSON dengan bentuk seragam. status menunjukkan berhasil/tidak, message berupa teks yang bisa ditampilkan, dan data hanya ada saat berhasil.
{
"status": true,
"message": "Berhasil",
"data": { ... }
}
{
"status": false,
"message": "PIN tidak valid. Sisa percobaan: 3",
"code": "amount_too_small" // hanya endpoint deposit
}
HTTP 429 beserta header Retry-After (detik). Tunggu, lalu ulangi — jangan langsung mengulang berulang-ulang.| Kode | Status | Penyebab & Solusi |
|---|---|---|
| 200 | OK | Request berhasil. Pada transaksi saldo sudah dipotong; pada deposit permintaan sudah dibuat. |
| 400 | Bad Request | Parameter kurang/tidak valid, PIN kosong, saldo tidak mencukupi, layanan tidak ditemukan/nonaktif, order tidak ditemukan, atau ditolak provider. |
| 401 | Unauthorized | API key salah/nonaktif, IP pengirim belum di-whitelist, atau PIN salah (sisa percobaan tertulis di pesan). |
| 403 | Forbidden | Akun diblokir untuk melakukan pemesanan via API. Hubungi admin. |
| 404 | Not Found | Pesanan (refill) atau deposit tidak ditemukan. |
| 409 | Conflict | Deposit: ref_id sudah dipakai dengan nominal berbeda. |
| 422 | Unprocessable | Deposit: input tidak memenuhi aturan (nominal di luar batas, format ref_id, batas akun belum verifikasi KTP). |
| 423 | Locked | Akun terkunci karena PIN salah 5x berturut-turut. Hubungi admin untuk reset. |
| 429 | Too Many Requests | Melebihi batas request (tunggu sesuai header Retry-After), atau deposit pending terlalu banyak. |
| 500 | Server Error | Gangguan internal atau provider pusat. Cek status order sebelum mengulang, agar tidak terjadi order ganda. |
| 502 | Bad Gateway | Deposit: gagal membuat invoice di gateway pembayaran. Aman diulang dengan ref_id yang sama. |
| 503 | Service Unavailable | Deposit otomatis sedang dimatikan admin. |
api_key / pin di JavaScript browser atau aplikasi mobile.500 atau timeout pada order, cek status order dulu sebelum mengulang, agar tidak terjadi order ganda.ref_id pada pembuatan deposit sehingga retry aman (tidak membuat deposit ganda).order_id / deposit_id dari respons untuk pengecekan status.