API billing: kunci, autentikasi dan endpoint
Hubungkan aplikasi billing atau sistem Anda sendiri ke iCONFIG: kirim daftar paket, tautkan pelanggan ke ONU-nya, ambil pemakaian trafik per pelanggan, isolir pelanggan yang belum bayar, baca status ONU, sampai otorisasi ONU lewat API.
1. Membuat API key
- Buka Pengaturan → API key. Hanya pengguna dengan hak Kelola API key (biasanya Administrators) yang bisa membukanya.
- Di kartu Buat key (1), isi nama, misalnya
Aplikasi billing. - Biarkan Hanya baca tercentang jika sistem Anda cukup membaca data. Hilangkan centangnya jika sistem perlu mengirim paket, menautkan pelanggan, reboot atau otorisasi ONU.
- Klik Buat. Key hanya ditampilkan sekali: salin dan simpan di pengaturan aplikasi billing Anda.

2. Cara memanggil API
- Alamat:
https://<akun-anda>.iconfig.id/api.php/<endpoint>, misalnyahttps://netmaju.iconfig.id/api.php/stats. - Autentikasi: kirim key di header
X-API-Key. - Data POST dikirim sebagai JSON dengan header
Content-Type: application/json. - Jawaban selalu JSON:
{"status": true, "response": …}. Jika gagal,statusbernilaifalsedanresponseberisi pesan kesalahan.
curl -H "X-API-Key: dno_xxxxxxxx" https://netmaju.iconfig.id/api.php/stats{
"status": true,
"response": { "total": 963, "online": 794, "los": 4, "pwrfail": 34, "offline": 131, "unconfigured": 0 }
}| Kode HTTP | Arti |
|---|---|
200 | Berhasil. |
401 | Key salah atau tidak dikirim. |
403 | Key hanya baca dipakai untuk perintah yang mengubah data. |
404 | Endpoint atau ONU tidak ditemukan. |
422 | Data yang dikirim kurang atau salah format. Pesannya menjelaskan yang diharapkan. |
402 | Langganan iCONFIG berakhir. Saat mode baca-saja, hanya permintaan GET yang dilayani. |
502 | OLT menolak atau tidak menjawab. response.output berisi jawaban OLT. |
3. Integrasi billing
Alur yang disarankan: kirim paket → tautkan pelanggan ke ONU → ambil pemakaian setiap akhir periode → isolir pelanggan yang belum bayar.
a. Kirim daftar paket
POST /api.php/packages (key tulis). Paket dengan code yang sama diperbarui, yang baru dibuat. fair_usage_gb adalah kuota pemakaian wajar per bulan; kosongkan untuk memakai kuota default (lihat Pemakaian trafik dan kuota wajar).
curl -X POST -H "X-API-Key: dno_xxxxxxxx" -H "Content-Type: application/json" \
https://netmaju.iconfig.id/api.php/packages -d '{
"packages": [
{"code": "HOME20", "name": "Home 20 Mbps", "download_mbps": 20, "upload_mbps": 20, "price": 150000, "fair_usage_gb": 700},
{"code": "BIZ50", "name": "Bisnis 50 Mbps", "download_mbps": 50, "upload_mbps": 50, "price": 400000, "fair_usage_gb": 2000}
]
}'Jawaban: {"saved": 2, "errors": []}. Daftar paket beserta jumlah ONU-nya bisa dibaca kembali dengan GET /api.php/packages.
b. Tautkan pelanggan ke ONU
POST /api.php/billing/customers (key tulis). Setiap pelanggan butuh customer_id (ID pelanggan di billing Anda) dan salah satu penanda ONU. Pencocokan dicoba berurutan: onu_id, sn, pppoe_user, lalu external_id. Nama, alamat dan telepon ikut diperbarui jika dikirim.
curl -X POST -H "X-API-Key: dno_xxxxxxxx" -H "Content-Type: application/json" \
https://netmaju.iconfig.id/api.php/billing/customers -d '{
"customers": [
{"customer_id": "PLG-1042", "pppoe_user": "pel1042@netmaju.id", "package_code": "HOME20", "name": "Budi Santoso", "phone": "081200001111"},
{"customer_id": "PLG-1043", "sn": "ZTEGC4D1D9DA", "package_code": "BIZ50"}
]
}'{
"status": true,
"response": {
"linked": 1,
"not_found": [ { "customer_id": "PLG-1043", "reason": "not found" } ],
"errors": []
}
}not_found: ONU tidak ditemukan. Jikareasonberisiambiguous …, artinya ada lebih dari satu ONU dengan nilai itu; pakai penanda lain sepertisn.errors: misalnyapackage_codebelum dikirim ke/packages.- Aman dikirim ulang: kirim semua pelanggan setiap kali ada perubahan di billing.
c. Ambil pemakaian trafik
GET /api.php/billing/usage?period=month. Pilihan period: today, yesterday, week, month, last_month, year, atau period=custom&from=2026-10-01&to=2026-10-15. Tambahkan customer_id=PLG-1042,PLG-1043 untuk pelanggan tertentu saja. Hanya ONU yang sudah ditautkan ke pelanggan yang muncul.
curl -H "X-API-Key: dno_xxxxxxxx" "https://netmaju.iconfig.id/api.php/billing/usage?period=last_month&customer_id=PLG-1042"{
"status": true,
"response": {
"period": "last_month", "from": "2026-09-01", "to": "2026-09-30",
"customers": [
{
"customer_id": "PLG-1042", "sn": "ZTEGC4D1D9DA", "name": "BUDI SANTOSO", "status": "online",
"package_code": "HOME20", "quota_gb_month": 700,
"download_bytes": 412316860416, "upload_bytes": 38654705664, "total_bytes": 450971566080,
"quota_bytes": 751619276800, "quota_used_pct": 60
}
]
}
}d. Isolir pelanggan yang belum bayar
POST /api.php/billing/suspend menonaktifkan ONU pelanggan di OLT, sehingga internetnya putus. POST /api.php/billing/resume mengaktifkannya kembali setelah membayar. Keduanya butuh key tulis. Semua ONU yang tertaut ke customer_id itu ikut diubah. Maksimal 100 pelanggan per request.
curl -X POST -H "X-API-Key: dno_xxxxxxxx" -H "Content-Type: application/json" \
https://netmaju.iconfig.id/api.php/billing/suspend -d '{"customers": ["PLG-1042", "PLG-1077"]}'{
"status": true,
"response": {
"done": [ { "customer_id": "PLG-1042", "sn": "ZTEGC4D1D9DA" } ],
"skipped": [ { "customer_id": "PLG-1077", "sn": "ZTEG7A21B0C4", "reason": "already disabled" } ],
"not_found": [],
"errors": []
}
}skipped: ONU sudah dalam keadaan yang diminta. Aman dipanggil berulang kali.not_found: belum ada ONU yang tertaut kecustomer_iditu. Tautkan dulu lewat/billing/customers.errors: OLT menolak atau tidak bisa dihubungi. Coba lagi nanti; ONU lain dalam request yang sama tetap diproses.- Untuk satu ONU berdasarkan SN:
POST /api.php/onu/{sn}/disabledan/enable.
4. Endpoint lainnya
| Metode dan endpoint | Kegunaan |
|---|---|
GET /api.php/stats | Jumlah ONU total, online, LOS, power fail, offline, dan yang menunggu otorisasi. |
GET /api.php/olts | Daftar OLT dan hasil poll terakhir. |
GET /api.php/onus | Daftar ONU. Filter: status, olt_id, board, port, zone_id, sector_id, odb_id, q (SN / nama / external ID). Halaman: limit (bawaan 1000, maks 5000) dan offset. |
GET /api.php/onu/{sn} | Detail satu ONU dari data iCONFIG. |
GET /api.php/onu/{sn}/status | Status dan sinyal terkini, langsung dibaca dari OLT. Lebih lambat; jangan dipanggil untuk ratusan ONU sekaligus. |
GET /api.php/unconfigured | ONU yang menunggu otorisasi. |
POST /api.php/onu/{sn}/reboot | Reboot ONU (key tulis). |
POST /api.php/onu/{sn}/disable, /enable | Nonaktifkan / aktifkan ONU di OLT (key tulis). |
POST /api.php/authorize | Otorisasi ONU (key tulis), lihat di bawah. |
Nilai status ONU: online, los, pwrfail, offline, unknown (N/A) dan disabled.
Otorisasi ONU lewat API
Wajib: olt_id, board, port, sn, name, vlan. Opsional: mode (routing / bridging), onu_type, zone, sector, odb, odb_port, download dan upload (nama profil kecepatan), pppoe_user, pppoe_pass, address, phone, external_id, latitude, longitude, comment. Zona, wilayah, ODP, tipe ONU dan profil ditulis dengan nama seperti di aplikasi. Ambil board, port dan sn dari GET /api.php/unconfigured.
curl -X POST -H "X-API-Key: dno_xxxxxxxx" -H "Content-Type: application/json" \
https://netmaju.iconfig.id/api.php/authorize -d '{
"olt_id": 7, "board": 2, "port": 4, "sn": "ZTEGC4D1D9DA",
"name": "BUDI SANTOSO", "vlan": 1024, "mode": "routing", "onu_type": "ZTE-F609",
"pppoe_user": "pel1042@netmaju.id", "pppoe_pass": "rahasia",
"zone": "POP PUSAT", "download": "Tanpa batas", "upload": "Tanpa batas"
}'Jawaban: {"onu_id": 1312, "onu": 6}, yaitu ID ONU di iCONFIG dan nomor ONU di port PON.
api:<nama key>.