Beranda Daftar Harga API Kontak Syarat & Ketentuan

API Reseller · v2

Dokumentasi API

Hubungkan aplikasi atau panel Anda. Parameter, contoh request, dan response tersedia berdampingan; semua contoh memakai data ilustrasi.

Buka dashboard untuk API key

Mulai integrasi

POST /api/v2

Satu endpoint untuk seluruh aksi. Ambil API key di Dashboard atau Akun, lalu kirim key dan action di setiap request.

ParameterPenggunaan
URLhttps://www.indosmm.org/api/v2
MetodePOST direkomendasikan. GET juga didukung, tetapi jangan taruh API key di URL atau log.
Requestapplication/x-www-form-urlencoded
Responseapplication/json
AutentikasiParameter key=API_KEY; akun harus aktif. Tidak memerlukan sesi login atau Bearer token.
Mata uangIDR; periksa juga field currency pada response.
Batas request120 request per menit per IP. Tangani HTTP 429.
Contoh response · JSON
{
  "balance": "150000.00",
  "currency": "IDR"
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=balance'

Mulai dari contoh ini: aksi balance hanya membaca saldo, tidak membuat pesanan. Ganti API_KEY dengan key milik akun Anda; jangan publikasikan key.

  1. Cek koneksi dengan balance.
  2. Ambil ID dan ketentuan layanan melalui services.
  3. Kirim add satu kali, simpan ID pesanan, lalu periksa status.

Daftar layanan

action=services

Ambil katalog yang tersedia untuk akun Anda. Gunakan ID service, batas jumlah, dan kemampuan layanan dari response terbaru.

ParameterPenggunaan
actionservices: wajib; sertakan key pada setiap request.

rate berupa string desimal 4 angka, min/max berupa string, dan dripfeed/refill/cancel berupa boolean. Harga katalog bukan penawaran khusus per akun.

Harga layanan standar umumnya per 1.000; layanan paket atau satuan memakai dasar berbeda. Diskon dan tarif khusus akun dapat memengaruhi tagihan. Gunakan charge dari status untuk nominal aktual, bukan asumsi bahwa setiap rate selalu per 1.000.

Contoh response · JSON
[
  {
    "service": 1,
    "name": "Instagram Followers",
    "type": "Default",
    "category": "Instagram",
    "rate": "900.0000",
    "min": "100",
    "max": "100000",
    "dripfeed": false,
    "refill": true,
    "cancel": true
  }
]
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=services'

Buat pesanan

action=add

Kirim satu pesanan menggunakan ID layanan yang benar, tautan/nama pengguna target, dan jumlah sesuai ketentuan layanan.

ParameterPenggunaan
actionadd: wajib; sertakan key pada setiap request.
serviceWajib. ID dari services.
linkWajib. Tautan atau nama pengguna sesuai layanan, bukan kata sandi.
quantityWajib. Bilangan bulat sesuai min, max, dan kelipatan yang ditentukan layanan.
runsOpsional. Jumlah putaran; mengaktifkan drip-feed jika diisi.
intervalWajib jika runs diisi. Jeda antar putaran dalam menit, minimal 1.

Mengirim add membuat pesanan nyata dan memakai saldo. Contoh di kanan hanya ilustrasi; jangan jalankan untuk sekadar mencoba koneksi.

quantity adalah jumlah per putaran. Untuk drip-feed: layanan harus mendukungnya, runs 2 sampai 500, interval minimal 1 menit. Layanan Package/SEO Package dari penyedia API tidak mendukung drip-feed.

Endpoint ini meneruskan link, quantity, runs, dan interval; parameter khusus komentar, polling, atau subscription tidak diteruskan. Pilih layanan yang sesuai. ID pesanan berarti tercatat, bukan sudah selesai.

Contoh response · JSON
{
  "order": 12849
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=add' \
  --data-urlencode 'service=1' \
  --data-urlencode 'link=https://example.com/target' \
  --data-urlencode 'quantity=1000'

Status pesanan

action=status

Pantau ID internal yang dikembalikan oleh add. Jangan memakai ID pesanan milik provider.

ParameterPenggunaan
actionstatus: wajib; sertakan key pada setiap request.
orderSatu ID pesanan; response objek tunggal.
ordersBeberapa ID dipisah koma; response objek dengan ID sebagai key.

Gunakan salah satu: order atau orders. Hanya pesanan milik pemilik API key yang bisa dibaca. Jika keduanya terisi, orders diprioritaskan.

Arti field dan status
  • charge: tagihan aktual (string desimal 4 angka).
  • start_count: hitungan awal; remains: sisa jumlah.
  • Status: Pending, Processing, In progress, Completed, Partial, Canceled, Refunded, atau Fail; kondisi lain dapat muncul sesuai proses.
Contoh response · JSON
{
  "charge": "900.0000",
  "start_count": 0,
  "status": "In progress",
  "remains": 1000,
  "currency": "IDR"
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=status' \
  --data-urlencode 'order=12849'
Beberapa pesanan: orders

Kirim orders berisi ID dipisah koma. Response berupa objek dengan ID sebagai key, bukan array.

curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=status' \
  --data-urlencode 'orders=12849,12850'
{
  "12849": {
    "charge": "900.0000",
    "start_count": 0,
    "status": "In progress",
    "remains": 1000,
    "currency": "IDR"
  },
  "12850": {
    "error": "Incorrect order ID"
  }
}

Ajukan pembatalan

action=cancel

Ajukan pembatalan untuk pesanan yang memenuhi syarat. Setiap ID memiliki hasil sendiri, termasuk error jika tidak ditemukan atau tidak dapat dibatalkan.

ParameterPenggunaan
actioncancel: wajib; sertakan key pada setiap request.
orderSatu ID; gunakan jika tidak mengirim orders.
ordersSatu atau beberapa ID dipisah koma.

Nilai cancel adalah ID permintaan pembatalan, bukan boolean atau penanda sukses 1. Request diterima tidak berarti langsung batal atau langsung refund.

Hasil selalu berupa array, meskipun hanya satu pesanan. Layanan harus mendukung cancel dan kondisi pesanan harus memenuhi syarat. Pantau hasil akhirnya melalui status.

Contoh response · JSON
[
  {
    "order": 12849,
    "cancel": 731
  },
  {
    "order": 12850,
    "cancel": {
      "error": "Incorrect order ID"
    }
  }
]
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=cancel' \
  --data-urlencode 'orders=12849,12850'

Ajukan refill

action=refill

Gunakan ketika pesanan yang sudah selesai mengalami penurunan dan masih memenuhi ketentuan refill.

ParameterPenggunaan
actionrefill: wajib; sertakan key pada setiap request.
orderSatu ID pesanan; response {"refill": ID} atau error.
ordersBeberapa ID dipisah koma; response array hasil per pesanan.

Simpan ID refill dari response untuk refill_status. ID permintaan refill tidak sama dengan ID pesanan.

Refill hanya tersedia untuk pesanan selesai yang memenuhi kemampuan layanan, masa refill, dan ketentuan provider/admin. Tidak ada jaminan semua layanan memiliki masa refill yang sama. ID diterima belum berarti refill selesai.

Contoh response · JSON
{
  "refill": 842
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=refill' \
  --data-urlencode 'order=12849'
Beberapa pesanan: orders

Response batch berupa array pasangan order/refill; error berada di hasil masing-masing ID.

curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=refill' \
  --data-urlencode 'orders=12849,12850'
[
  {
    "order": 12849,
    "refill": 842
  },
  {
    "order": 12850,
    "refill": {
      "error": "Incorrect order ID"
    }
  }
]

Status refill

action=refill_status

Baca perkembangan permintaan menggunakan ID yang dikembalikan oleh refill.

ParameterPenggunaan
actionrefill_status: wajib; sertakan key pada setiap request.
refillSatu ID permintaan refill.
refillsBeberapa ID permintaan refill dipisah koma.

Status refill: Pending, Awaiting, In progress, Completed, Rejected, atau Error. Gunakan salah satu parameter, bukan keduanya.

Contoh response · JSON
{
  "status": "Completed"
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=refill_status' \
  --data-urlencode 'refill=842'
Beberapa permintaan: refills

Response batch berupa array pasangan refill/status, bukan objek dengan ID sebagai key.

curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=refill_status' \
  --data-urlencode 'refills=842,843'
[
  {
    "refill": 842,
    "status": "Completed"
  },
  {
    "refill": 843,
    "status": {
      "error": "Refill not found"
    }
  }
]

Cek saldo

action=balance

Baca saldo akun API. Nominal balance berupa string desimal 2 angka, dengan kode mata uang pada currency.

ParameterPenggunaan
actionbalance: wajib; sertakan key pada setiap request.

Tidak memerlukan parameter tambahan selain key dan action.

Contoh response · JSON
{
  "balance": "150000.00",
  "currency": "IDR"
}
Contoh request cURL
curl --request POST 'https://www.indosmm.org/api/v2' \
  --header 'Accept: application/json' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'action=balance'

Error, batas request, dan keamanan

Periksa HTTP status dan isi JSON. Error bisnis dapat tetap memakai HTTP 200 dengan field error. Hasil batch bisa memuat sukses dan error sekaligus.

ParameterPenggunaan
Invalid API keyPeriksa API key; jangan memakai password akun.
Account is not activeAkun pemilik key tidak aktif; hubungi admin.
Invalid actionPeriksa ejaan dan aksi yang didukung.
Invalid servicePerbarui katalog dan periksa ID layanan.
Incorrect order IDPeriksa ID pesanan dan akun pemiliknya.
Refill not foundGunakan ID permintaan refill, bukan ID pesanan.

Pesan validasi lain dapat berbahasa Indonesia dan bergantung pada kondisi layanan, saldo, serta jumlah pesanan.

Contoh error JSON
{
  "error": "Invalid API key"
}
  • Simpan API key di server atau environment variable. Jangan taruh di JavaScript publik, URL, screenshot, atau log.
  • Batasi polling; gunakan batch kecil seperlunya dan jeda bertahap. Untuk HTTP 429, ikuti Retry-After bila tersedia.
  • Jika add timeout, jangan langsung kirim ulang: pesanan mungkin sudah tercatat. Periksa riwayat atau hubungi admin untuk menghindari pesanan ganda.
  • Pembatalan/refill juga mengubah data. Jangan mengulang otomatis tanpa memeriksa hasil sebelumnya.

Contoh integrasi PHP

PHP 7.3+ · cURL

Contoh aman untuk memulai: hanya mengecek saldo. Aktifkan ekstensi PHP cURL dan simpan key pada environment variable JUALFOLLOWERS_API_KEY.

http_build_query() mengirim form URL-encoded. Contoh memeriksa error koneksi, HTTP status, dan field error; jangan menonaktifkan verifikasi TLS.

Contoh request, ID, harga, dan response di halaman ini adalah ilustrasi, bukan data atau kredensial akun nyata.

Lihat API key di dashboard
Tampilkan contoh PHP
<?php
$key = getenv('JUALFOLLOWERS_API_KEY');
if (!$key) {
    throw new RuntimeException('Isi JUALFOLLOWERS_API_KEY di server.');
}
$ch = curl_init('https://www.indosmm.org/api/v2');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => ['Accept: application/json'],
    CURLOPT_POSTFIELDS => http_build_query([
        'key' => $key,
        'action' => 'balance', // Hanya membaca saldo.
    ]),
]);
$body = curl_exec($ch);
$error = curl_error($ch);
$http = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($body === false) {
    throw new RuntimeException($error);
}
if ($http < 200 || $http >= 300) {
    throw new RuntimeException('HTTP ' . $http);
}
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
if (isset($data['error'])) {
    throw new RuntimeException($data['error']);
}
echo $data['balance'] . ' ' . $data['currency'];