My SMM Panel API v1

Dokumentasi API Resmi
My SMM Panel untuk Reseller

REST API yang cepat, aman, dan mudah digunakan untuk membangun panel SMM Anda sendiri. Integrasikan layanan, lakukan pemesanan, dan pantau status pesanan secara otomatis langsung dari sistem Anda.

Getting Started

Pendahuluan

Selamat datang di Dokumentasi Resmi API My SMM Panel untuk Reseller.

API My SMM Panel memungkinkan Anda sebagai Reseller atau Developer untuk membangun panel SMM Anda sendiri dan mengintegrasikan layanan (services), melakukan pemesanan (orders), serta memeriksa status pesanan secara otomatis langsung ke dalam platform Anda.

Kami memfasilitasi integrasi tersebut dengan menyediakan REST API yang cepat, aman, dan mudah digunakan, dengan format pertukaran data standar yaitu JSON.

Base URL

Semua request atau permintaan ke API My SMM Panelmenggunakan metode HTTP standar dan diarahkan secara penuh ke Base URL berikut:

bash
/api/v1

Fitur Utama API

Restful API

Menggunakan standar JSON HTTP Response dan Request sehingga sangat mudah di-parsing oleh bahasa pemrograman populer (PHP, Node.js, Python, Golang, dan lain-lain).

Cepat & Aman

Setiap transaksi divalidasi dengan API Key khusus untuk membatasi akses ilegal yang terenkripsi dan juga didukung fitur IP Whitelist opsional.

Real-time Status

Anda bisa memantau dan memperbarui status pesanan dari pelanggan Anda ke provider server kapan saja secara real-time.

Otomatisasi Penuh

Otomatisasi pemotongan saldo, order panel massal, hingga sinkronisasi pembaruan layanan, dapat membantu panel SMM milik Anda berjalan autopilot 24 jam x 7.

Catatan Penting

  • Semua Harga (Rate) yang ditampilkan dalam integrasi API kami adalah harga untuk nominal / kuantitas 1000 pesanan (quantity = 1000).
  • Seluruh Response Format adalah dalam bentuk JSON Payload. Pastikan script integrasi sistem Anda mengirimkan header Content-Type: application/json.
  • Apabila fitur keamanan API Whitelist Aktif pada pengaturan Anda, pastikan Alamat IP Publik (Public IP Range) dari Server Website / Panel Anda sudah terdaftar di Dashboard.
Getting Started

Autentikasi API

Cara mengotentikasi request API dari sistem/server Anda ke sistem My SMM Panel.

Setiap request yang dikirimkan ke endpoint API sistem My SMM Panel wajib menyertakan API Key Anda yang unik. API Key ini bertindak sebagai paspor akun Anda agar sistem kami dapat memproses order atas nama Anda dan menagih/memotong saldo pada nilai yang tepat secara algoritmik dari saldo Anda.

Anda dapat menemukan API Key saat ini, atau membuat API Key yang baru (me-reset) di halaman "Pengaturan Profil" dalam Dashboard My SMM Panel Anda.

JANGAN BAGIKAN API KEY ANDA
API Key memberikan kontrol penuh secara administratif ke saldo utama Anda. Peretas yang mengetahui API Key Anda dapat menghabiskan saldo server Anda. Jangan sekali-sekali menuliskan API Key di frontend code Anda (seperti tampilan HTML atau Javascript pada browser), selalu konfigurasikan dan panggil API Key Anda menggunakan backend server (seperti kode program PHP / Node.js backend).

Cara Mengirimkan API Key

Sistem kami mendukung 3 (tiga) cara berbeda untuk mengirimkan API Key pada setiap request Anda. Anda dapat memilih salah satu metode yang paling mudah diintegrasikan oleh library bahasa pemrograman / framework Anda.

1. Header X-Api-Key (Rekomendasi)

Pendekatan paling bersih adalah meletakkan key di Header Request custom, yaitu X-Api-Key.

Auth with Header
curl -X GET -H "X-Api-Key: YOUR_API_KEY" /api/v1/balance

2. Header Authorization: Bearer

Jika sistem atau framework frontend/backend Anda sudah otomatis menggunakan skema Bearer token untuk authorization, Anda bisa memakainya.

Auth with Bearer
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" /api/v1/balance

3. Query Parameter api_key

Jika framework Anda tidak mengizinkan kustom HTTP Header (yang terjadi di beberapa sistem web lawas), Anda dapat meletakkannya langsung di URL query string.

Auth with Query Params
curl -X GET "/api/v1/balance?api_key=YOUR_API_KEY"

Memahami Response Error Authentication

Jika Anda mendapati konektivitas request tidak membuahkan hasil success, Anda kemungkinan menerima respons gagal pada HTTP code berikut karena berbagai alasan otentikasi. Jika API Key Anda keliru atau IP Server Anda belum didaftarkan (bila kontrol fitur IP Whitelist sedang ON), Anda akan menerima response HTTP 401 Unauthorized atau 403 Forbidden:

401 - Unauthorized
{
  "error": "Invalid API key or inactive account"
}
403 - Forbidden
{
  "error": "IP not whitelisted"
}

Pastikan Anda menangkap exception code 400/401/403/500 pada logika try-catch aplikasi Anda untuk menampilkan pesan error dengan rapi alih-alih merusak antarmuka aplikasi.

API Endpoints

API Reference

Dokumentasi lengkap My SMM Panel API v1 untuk integrasi panel SMM Anda.

Base URL

bash
/api/v1

Autentikasi

Semua endpoint memerlukan API Key. Anda bisa mengirimkannya melalui:

  • Header (Rekomendasi): X-Api-Key: YOUR_API_KEY
  • Query Parameter: ?api_key=YOUR_API_KEY
Contoh Header
curl -H "X-Api-Key: YOUR_API_KEY" "/api/v1/balance"

Endpoint yang Tersedia

MethodEndpointDeskripsi
GET/api/v1/servicesDaftar semua layanan aktif
POST/api/v1/orderMembuat pesanan baru
GET/api/v1/statusCek status pesanan (single/multi)
GET/api/v1/balanceCek saldo akun
POST/api/v1/refillRequest refill pesanan
GET/api/v1/refill_statusCek status refill
POST/api/v1/cancelBatalkan pesanan

Format Response

Semua response menggunakan format JSON. Response error akan selalu memiliki field error:

Response Error
{
  "error": "Pesan error di sini"
}

Rate Limiting

Hindari mengirim request terlalu sering. Rekomendasi:

  • Balance check: Maksimal 1x per menit
  • Status check (cron): Setiap 5-15 menit
  • Service sync: Setiap 24 jam
Endpoint

List Services (Layanan)

GET/api/v1/services

Mendapatkan daftar rekapitulasi lengkap dari semua layanan panel yang berstatus Active beserta hitungan biayanya (rate).

Anda dapat menggunakan endpoint canggih ini untuk mem-fetch atau mensinkronkan data katalog daftar layanan dari provider pusat sistem kami ke panel Anda. Dari sana, Anda dapat menaikkan harganya secara fleksibel (markup margin reseller di web aplikasi Anda), lalu menampilkan katalog yang bisa dibeli oleh pengguna panel Anda.

Sangat disarankan bagi panel aplikasi developer untuk men-setting rutinitas Cronjob sinkronisasi database Layanan secara otomatis setidaknya setiap 24 jam sekali atau seperlunya, karena perubahan pada id provider, status ketersediaan, update min/max order, dan harga (Rate Api) sangat mungkin berubah kapan saja.

Query Parameters

api_keystringqueryREQUIRED
Kunci API Rahasia Anda (Abaikan apabila Anda menggunakan API HEADER).
categorystringquery
(Opsional) Filter pencarian hanya menampilkan layanan berdasarkan nama kategori tertentu (case-insensitive).
searchstringquery
(Opsional) Pencocokan teks dari seluruh nama layanan yang ada (Misal: "followers").

Contoh Request

cURL
curl -X GET -H "X-Api-Key: YOUR_API_KEY_HERE" "/api/v1/services"

Response Data Format

Respons JSON akan memberikan List/Array of Data Objects yang berisi seluruh objek layanan aktif yang memenuhi parameter query Anda.

200 OK
[
  {
    "service": 1,
    "name": "Instagram Followers Terbaik [Quality S+]",
    "type": "Default",
    "category": "Instagram",
    "rate": 15000.0,
    "min": 100,
    "max": 50000,
    "refill": true,
    "description": "High quality followers. Garansi drop 30 hari.",
    "cancel": false
  },
  {
    "service": 2,
    "name": "TikTok Views Auto Fast Server V1",
    "type": "Default",
    "category": "TikTok",
    "rate": 500.0,
    "min": 1000,
    "max": 1000000,
    "refill": false,
    "description": "Masuk sangat instan. Cukup masukkan link Video.",
    "cancel": false
  }
]

Penjelasan Field

FieldTipeKeterangan
serviceIntegerID Layanan asli provider. WAJIB disimpan di DB Anda karena harus dipakai sebagai payload identifikasi /order saat melakukan pemesanan.
nameStringNama / identitas layanan resmi.
typeStringTipe layanan (contoh: Default, Custom Comments, dll).
categoryStringKategori pengelompokan layanan (Instagram, YouTube, TikTok, dll).
rateNumberHarga provider per 1000 kuantitas. Sudah menyesuaikan margin Reseller dari role Anda.
minIntegerValidasi limit batas minimal order kuantitas untuk layanan ini.
maxIntegerValidasi limit batas maksimal order kuantitas. Jangan dilampaui agar order tidak ditolak.
refillBooleanApakah order ini menjanjikan garansi refill apabila target turun/drop.
descriptionStringCatatan / pedoman penting tentang spesifikasi layanan dan format link target.
cancelBooleanApakah pesanan ini dapat dibatalkan setelah dibuat.
ATURAN HITUNG HARGA PER 1000 PCS
Nilai pada tag rate TIDAK melambangkan harga per 1 item, melainkan harga murni dalam standar volume per 1000 jumlah pesanan (per 1k pcs).
Rumus Kalkulasi
// Contoh logik di CMS Anda:
const TOTAL_HARGA_DASAR = (user_quantity / 1000) * provider_API_RATE;

// Tambahkan margin untuk cuan panel Anda, misal + Rp 3000
const TOTAL_DITAGIH_KE_USER = TOTAL_HARGA_DASAR + 3000;
Endpoint

Create Order

POST/api/v1/order

Melakukan pemesanan layanan dan sistem akan memotong saldo dari akun Anda otomatis.

Gunakan Endpoint ini ketika pelanggan pada Panel/Platform Anda menekan tombol "Buat Pesanan Baru". Sistem kami di backend akan secara cerdas memvalidasi id layanan, mengecek batasan server min/max, serta akan memotong saldo Anda secara otomatis sesuai harga API terbaik yang ditawarkan.

Body Parameters (JSON)

Endpoint ini membutuhkan tipe metode POST. Anda juga wajib memastikan Request Header memuat properti Content-Type: application/json.

serviceinteger | stringbodyREQUIRED
ID Layanan yang ingin dipesan (didapat dari respons GET /api/v1/services).
linkstringbodyREQUIRED
Target / URL / Destinasi pesanan pelanggan Anda (misalnya @username Instagram, URL Link postingan TikTok, dll).
quantityintegerbodyREQUIRED
Jumlah besaran pesanan. Harus berada di dalam batas rentang min dan max dari layanan terkait.

Contoh Request

Body JSON
{
  "service": 12,
  "link": "https://instagram.com/user_client_1",
  "quantity": 1000
}
cURL
curl -X POST \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service":12, "link":"https://instagram.com/user_client_1","quantity":1000}' \
  "/api/v1/order"

Response

Jika validasi lolos dan sukses, saldo Anda akan terpotong secara otomatis.

DOKUMENTASI PENTING
Anda wajib menangkap (parsing) hasil properti order (ID transaksi internal) dan menyimpannya di database sisi Anda. Properti ID ini esensial untuk pelacakan sinkronisasi melalui endpoint Check Status.
200 OK
{
  "order": 9210,
  "invoice": "API1024322",
  "service": 12,
  "link": "https://instagram.com/user_client_1",
  "quantity": 1000,
  "charge": 15000.0,
  "status": "pending",
  "currency": "IDR",
  "remains": 135000.0
}

Penjelasan Field

FieldTipeKeterangan
orderIntegerSUPER PENTING: ID Pesanan unik. Simpan di database panel Anda untuk Check Status.
invoiceStringNomor invoice referensi internal di billing Provider.
serviceIntegerReferensi ID layanan yang berhasil tereksekusi.
linkStringTarget dari pesanan awal.
quantityIntegerAngka volume pesanan yang dikonfirmasi.
chargeNumberBiaya yang sudah resmi dipotong dari balance Anda.
statusStringStatus awal pesanan (umumnya 'pending' saat inisiasi).
remainsNumberSisa balance akun API Anda setelah order ini.

Troubleshooting

400 - Saldo Kurang
{
  "error": "Insufficient balance. Required: 8500.00, Available: 5000.00"
}
400 - Melebihi Min/Max
{
  "error": "Quantity must be between 100 and 50000"
}
Endpoint

Check Status

GET/api/v1/status

Mendapatkan pembaruan status real-time dari satu (single) atau beberapa pesanan (multiple) sekaligus.

Di dalam sistem panel SMM yang autopilot, sangat disarankan Anda untuk membangun skrip Cronjob yang berjalan setiap 5 - 15 menit dari server hosting panel Anda ke endpoint ini untuk memeriksa konfirmasi laporan status terbaru dari Provider.

Sistem kami mendukung pengecekan status single (1 pesanan) maupun multiple (banyak pesanan sekaligus, dengan limit maksimal 100 ID pesanan per 1 request HTTP untuk efisiensi beban server).

Query Parameters

Anda harus memberikan salah satu dari parameter berikut (order ATAU orders), jangan menggunakan keduanya.

api_keystringqueryREQUIRED
Kunci API Anda (Jika tidak menggunakan Header X-Api-Key).
orderintegerquery
Nomor ID Order yang Anda dapatkan dari respons POST /order sebelumnya. Gunakan untuk mengecek 1 pesanan independen.
ordersstringquery
Mengecek banyak status pesanan secara massal. Pisahkan ID dengan koma (Contoh: 1010,1011,1012). Maksimal 100 ID per request.

Single Order Status

cURL
curl -X GET -H "X-Api-Key: YOUR_API_KEY" "/api/v1/status?order=9210"
Response Single
{
  "order": 9210,
  "invoice": "API1234567",
  "service": "Instagram Followers [Quality V1]",
  "charge": 15000.0,
  "status": "processing",
  "start_count": 0,
  "remains": 0,
  "currency": "IDR"
}

Multiple Orders Status

Untuk siklus Cronjob update status, kami amat merekomendasikan mode multiple agar pengecekan dikelompokkan ke pengiriman muatan massal hingga 100 ID per antrian agar sistem panel web Anda tidak timeout.

cURL
curl -X GET -H "X-Api-Key: YOUR_API_KEY" "/api/v1/status?orders=9210,9211,9212"

Berbeda dengan respons single, struktur response untuk mode multiple membalas formasi JSON Object Map Dictionary, di mana key-nya adalah string ID Order Provider.

Response Multiple
{
  "9210": {
    "order": 9210,
    "invoice": "API1234567",
    "service": "Instagram Followers [Quality V1]",
    "charge": 15000.0,
    "status": "success",
    "start_count": 100,
    "remains": 0,
    "currency": "IDR"
  },
  "9211": {
    "order": 9211,
    "invoice": "API998877",
    "service": "TikTok Views Auto Fast",
    "charge": 500.0,
    "status": "processing",
    "start_count": 210,
    "remains": 0,
    "currency": "IDR"
  }
}

Indikator Status

FieldTipeKeterangan
pendingenumBerhasil dicatat: Pesanan masuk antrean provider dan segera dipersiapkan.
processingenumOperasi sedang berlangsung: Server sedang mensuplai jumlah ke target.
successenumSelesai: Pesanan tuntas tersuplai sesuai kuantitas target.
error / canceledenumTertolak/terhambat (limit, link salah, server drop). Mutasi refund dipotong sebagian/dikembalikan.
partialenumSelesai sebagian: Sebagian saldo dikembalikan ke akun API Anda.

Field start_count adalah jumlah follower / like lama yang sudah ada di tautan target sewaktu panel baru di-start injeksi. Field remains adalah volume sisa layanan pesanan yang belum dieksekusi mesin provider ketika terjadi error/cancel/partial.

Endpoint

Check Balance

GET/api/v1/balance

Melihat sisa saldo akun reseller Anda saat ini secara real-time.

Langkah pertama dalam integrasi biasanya adalah mengecek fungsionalitas dan saldo akun Anda. Endpoint ini mengembalikan sisa saldo (balance) Anda secara rinci, dan mata uang (currency) sistem yang sedang digunakan yaitu IDR.

Tips Pengembangan
Sebaiknya integrasikan request endpoint balance sewaktu pengguna Anda masuk halaman Dashboard, namun hindari memanggil endpoint ini terlalu sering (looping brutal) menggunakan cron job. Gunakan endpoint ini di panel admin Anda sebagai laporan saldo Provider.

Query Parameters

api_keystringqueryREQUIRED
Kunci API Anda (jika tidak menggunakan Header X-Api-Key).

Contoh Request

cURL
curl -X GET -H "X-Api-Key: YOUR_API_KEY_HERE" "/api/v1/balance"

Response

200 OK
{
  "balance": 150000.50,
  "currency": "IDR"
}
FieldTipeKeterangan
balanceNumberJumlah saldo / balance akun Anda saat ini.
currencyStringMata uang sistem (default selalu IDR).
Endpoint

Create Refill

POST/api/v1/refill

Mengajukan permintaan refill untuk pesanan yang memiliki garansi refill.

Gunakan endpoint ini untuk mengajukan refill pada pesanan yang sudah selesai namun mengalami penurunan (drop). Pastikan layanan yang dipesan memiliki properti refill: true pada daftar layanan.

Body Parameters (JSON)

orderintegerbody
ID Order untuk refill satu pesanan.
ordersstringbody
ID Order dipisahkan koma untuk refill banyak pesanan sekaligus (maks 100 ID). Contoh: "1010,1011,1012"
Gunakan salah satu parameter order atau orders, jangan keduanya bersamaan.

Contoh Request (Single)

cURL
curl -X POST \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order": 9210}' \
  "/api/v1/refill"

Response Single

200 OK
{
  "refill": "1"
}

Contoh Request (Multiple)

cURL
curl -X POST \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orders": "9210,9211,9212"}' \
  "/api/v1/refill"

Response Multiple

200 OK
[
  { "order": 9210, "refill": 1 },
  { "order": 9211, "refill": 2 },
  { "order": 9212, "refill": { "error": "Service does not support refill" } }
]
400 Error
{
  "error": "Order not found"
}
Endpoint

Get Refill Status

GET/api/v1/refill_status

Mengecek status permintaan refill yang sudah diajukan.

Setelah mengajukan refill melalui endpoint /api/v1/refill, gunakan endpoint ini untuk melacak status refill tersebut.

Query Parameters

api_keystringqueryREQUIRED
Kunci API Anda (jika tidak menggunakan Header X-Api-Key).
refillstringqueryREQUIRED
ID Refill yang didapat dari response endpoint Create Refill.

Contoh Request

cURL
curl -X GET -H "X-Api-Key: YOUR_API_KEY" "/api/v1/refill_status?refill=1"

Response

200 OK
{
  "status": "Completed"
}
404 Not Found
{
  "error": "Refill not found"
}

Status Refill

FieldTipeKeterangan
PendingenumRefill sedang dalam antrean.
ProcessingenumRefill sedang diproses.
CompletedenumRefill berhasil diselesaikan.
RejectedenumRefill ditolak oleh provider.
Endpoint

Cancel Order

POST/api/v1/cancel

Membatalkan pesanan yang sedang berjalan dan mengembalikan saldo secara otomatis.

Gunakan endpoint ini untuk membatalkan satu atau beberapa pesanan yang masih dalam status pending atau processing. Saldo akan dikembalikan (refund) secara otomatis jika pembatalan berhasil diproses oleh provider.

Tidak semua layanan mendukung pembatalan. Pesanan dengan status success atau canceled tidak dapat dibatalkan.

Body Parameters (JSON)

ordersstringbodyREQUIRED
ID Order yang ingin dibatalkan, dipisahkan koma. Maksimal 100 ID per request. Contoh: "9210,9211"

Contoh Request

cURL
curl -X POST \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orders": "9210,9211"}' \
  "/api/v1/cancel"

Response

200 OK
[
  { "order": 9210, "cancel": 1 },
  { "order": 9211, "cancel": { "error": "Order already success" } }
]
FieldTipeKeterangan
cancel: 1successPembatalan berhasil, saldo telah dikembalikan.
cancel: { error }failPembatalan gagal dengan pesan error.

Kemungkinan Pesan Error

  • Order not found — ID order tidak ditemukan atau bukan milik Anda.
  • Order already success — Pesanan sudah selesai, tidak bisa dibatalkan.
  • Order already canceled — Pesanan sudah dibatalkan sebelumnya.
  • No provider data — Pesanan belum dikirim ke provider.

Butuh bantuan integrasi atau menemukan bug?

Hubungi tim support kami melalui menu Support di Dashboard Anda.