NETLAYER REST API
Dokumentasi Resmi — Versi 1.0
Dokumentasi resmi REST API Netlayer.id. API ini memungkinkan Anda untuk mengintegrasikan
layanan voucher hotspot Netlayer ke dalam aplikasi, website, atau sistem pihak ketiga
yang Anda kembangkan sendiri tanpa perlu membangun infrastruktur RADIUS/hotspot dari nol.
Semua endpoint menggunakan metode komunikasi HTTP/HTTPS, mengembalikan data dalam
format JSON, dan diakses melalui base URL yang sama. Untuk setiap request,
sertakan header X-API-Key sebagai autentikasi. Request tanpa header tersebut
akan ditolak dengan status 401 Unauthorized.
Ringkasan API
| Base URL | https://netlayer.id/api |
| Version | 1.0 |
| Format | JSON (application/json) |
| Autentikasi | Header X-API-Key (per NAS) |
| API Key | Get API_KEY |
Cara Mendapatkan API Key
API Key bersifat unik untuk setiap NAS. Artinya, jika Anda memiliki beberapa NAS
(server hotspot) yang terdaftar, masing-masing NAS memiliki API Key-nya sendiri. API Key
digunakan untuk mengaitkan setiap request yang Anda kirim dengan NAS tertentu, sehingga
order voucher yang dibuat akan masuk ke server yang benar. Berikut langkah-langkah
untuk memperoleh API Key:
| 1 |
Login ke Dashboard Utama
Buka https://netlayer.id dan
masuk menggunakan akun Netlayer Anda (email dan password yang terdaftar).
|
| 2 |
Buka Daftar NAS
Setelah berhasil login, buka menu NAS pada dashboard. Anda akan melihat
daftar seluruh NAS/server hotspot yang terdaftar pada akun Anda.
|
| 3 |
Klik Tombol Edit pada NAS yang Diinginkan
Pada baris NAS yang ingin Anda ambil API Key-nya, klik tombol
Edit. Pastikan Anda memilih NAS yang benar, karena setiap NAS
memiliki API Key yang berbeda.
|
| 4 |
Salin API Key
Pada halaman edit NAS, Anda akan melihat field API Key berisi
string unik. Salin (copy) nilai tersebut dan simpan di tempat yang aman
(misalnya password manager atau environment variable pada server Anda).
|
Nilai API Key inilah yang nantinya dikirim melalui header X-API-Key pada
setiap request ke endpoint API. Anda juga dapat mengakses halaman daftar NAS melalui
tombol Get API_KEY di bawah ini.
1. Endpoints
Berikut adalah daftar endpoint yang tersedia pada versi 1.0. Semua endpoint bersifat
synchronous, artinya response dikembalikan langsung setelah server selesai
memproses permintaan Anda. Gunakan metode HTTP sesuai tabel di bawah ini.
| GET |
/api/info |
Informasi akun & verifikasi API Key. |
| GET |
/api/profiles |
Daftar paket/profile hotspot yang aktif. |
| POST |
/api/orders |
Membuat order voucher baru. |
| GET |
/api/status/{order_id} |
Memeriksa status pembayaran order. |
2. Get Info
Endpoint ini berfungsi untuk mengambil informasi akun yang terhubung dengan
API Key Anda. Data yang dikembalikan meliputi nama pemilik akun, nama perusahaan,
email, nomor telepon, dan nama server (NAS) yang terdaftar. Endpoint ini sangat
berguna sebagai langkah awal untuk memverifikasi bahwa API Key Anda valid
sebelum melakukan request pada endpoint lain, serta untuk menampilkan identitas
akun pada dashboard aplikasi Anda.
Best Practice: Panggil endpoint ini pertama kali saat inisialisasi aplikasi untuk memastikan
koneksi dan API Key berjalan dengan baik sebelum melakukan order voucher.
Headers
| X-API-Key | Ya | API Key untuk autentikasi. Nilai dapat dilihat pada halaman edit NAS di dashboard Netlayer. |
Field Response
| name | string | Nama lengkap pemilik akun. |
| company | string | Nama perusahaan/penyedia layanan yang terdaftar. |
| email | string | Alamat email akun yang digunakan untuk login. |
| phone | string | Nomor HP akun dalam format internasional tanpa tanda plus (contoh: 6285174199211). |
| server | string | Nama server/NAS yang terhubung dengan API Key ini (contoh: RB951Ui-2HND). |
Contoh Request (cURL)
curl -X GET "https://netlayer.id/api/info" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Accept: application/json"
<?php
$ch = curl_init('https://netlayer.id/api/info');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
const res = await fetch('https://netlayer.id/api/info', {
method: 'GET',
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Accept': 'application/json'
}
});
const data = await res.json();
console.log(data);
Contoh Response
{
"name": "Demo User",
"company": "NETLAYER.ID",
"email": "demo@netlayer.id",
"phone": "6285174199211",
"server": "RB951Ui-2HND"
}
3. Get Profile List
Endpoint ini digunakan untuk mengambil daftar paket/profile hotspot yang
aktif pada server NAS yang terhubung dengan API Key Anda. Setiap profile merepresentasikan
satu paket voucher hotspot (misalnya "1 Jam", "3 Jam", "1 Hari", "Unlimited 30 Hari")
beserta atribut harga, durasi masa aktif, rate limit bandwidth, dan jumlah pengguna
yang boleh berbagi. Data yang dikembalikan dari endpoint ini wajib dipanggil
sebelum membuat order, karena Anda membutuhkan id profile yang akan
disertakan pada body request /api/orders.
Headers
| X-API-Key | Ya | API Key untuk autentikasi. |
Field Response
| id | integer | ID unik profile. Nilai ini yang dikirim sebagai profile_id saat membuat order. |
| name | string | Nama paket yang ditampilkan ke customer (contoh: "3 Jam"). |
| price | integer | Harga paket dalam satuan Rupiah (tanpa desimal). |
| validity | string | Masa berlaku voucher dalam format jam/hari (contoh: 3h, 12h, 1d). |
| rate_limit | string | Limit bandwidth dalam format download/upload, misalnya 30M/30M berarti 30 Mbps untuk masing-masing arah. |
| shared_users | integer | Jumlah maksimal perangkat yang dapat menggunakan satu kode voucher secara bersamaan. |
Contoh Request (cURL)
curl -X GET "https://netlayer.id/api/profiles" \
-H "X-API-Key: " \
-H "Accept: application/json"
<?php
$ch = curl_init('https://netlayer.id/api/profiles');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$profiles = json_decode($response, true);
print_r($profiles);
const res = await fetch('https://netlayer.id/api/profiles', {
method: 'GET',
headers: {
'X-API-Key': '',
'Accept': 'application/json'
}
});
const profiles = await res.json();
console.log(profiles);
Contoh Response
[
{
"id": 1360,
"name": "3 Jam",
"price": 1500,
"validity": "3h",
"rate_limit": "30M/30M",
"shared_users": 1
},
{
"id": 1361,
"name": "12 Jam",
"price": 2500,
"validity": "12h",
"rate_limit": "10M/10M",
"shared_users": 1
}
]
4. Create New Order
Endpoint ini berfungsi untuk membuat order voucher baru. Setelah order berhasil
dibuat, sistem Netlayer akan mengembalikan order_id yang dapat Anda
gunakan untuk melakukan pengecekan status pembayaran. Customer kemudian akan menerima
QRIS untuk melakukan pembayaran; QR code tersebut dapat diakses melalui field
qrcode_url pada endpoint /api/status/{order_id}.
Order yang dibuat akan berstatus pending sampai customer menyelesaikan pembayaran.
Jika melewati batas waktu expire, order akan otomatis dianggap gagal.
Pastikan Anda mengirim phone dalam format internasional tanpa tanda plus
agar notifikasi WhatsApp/SMS dapat terkirim dengan benar.
Headers
| X-API-Key | Ya | API Key untuk autentikasi. |
| Content-Type | Ya | Wajib bernilai application/json agar body request dapat diparsing oleh server. |
Body Parameter
| profile_id | integer | Wajib. ID profile yang didapat dari endpoint /api/profiles. Menentukan paket, harga, dan durasi voucher. |
| name | string | Wajib. Nama pemesan/customer. Digunakan sebagai identitas pemilik voucher. |
| phone | string | Wajib. Nomor HP pemesan dalam format internasional tanpa tanda plus (contoh: 6285174199211). Digunakan untuk pengiriman notifikasi voucher. |
Contoh Request (cURL)
curl -X POST "https://netlayer.id/api/orders" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"profile_id": 1360,
"name": "Your Name",
"phone": "6285174199211"
}'
<?php
$payload = [
'profile_id' => 1360,
'name' => 'Your Name',
'phone' => '6285174199211',
];
$ch = curl_init('https://netlayer.id/api/orders');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY',
'Content-Type: application/json',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
const res = await fetch('https://netlayer.id/api/orders', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
profile_id: 1360,
name: 'Your Name',
phone: '6285174199211'
})
});
const data = await res.json();
console.log(data);
Field Response
| success | string | Pesan sukses dari server, misalnya "order created successfully!". |
| order_id | integer | ID order yang baru dibuat. Simpan nilai ini untuk pengecekan status. |
Contoh Response
{
"success": "order created successfully!",
"order_id": 10
}
5. Check Order Status
| GET |
/api/status/{order_id} |
Endpoint ini berfungsi untuk mengecek status pembayaran dan detail order yang
sebelumnya telah dibuat melalui /api/orders. Gunakan endpoint ini untuk
memantau apakah customer sudah membayar atau belum. Response menyertakan
qrcode_url yang menunjuk ke gambar QRIS yang dapat ditampilkan ke customer
untuk dipindai melalui aplikasi e-wallet/mobile banking.
Setelah pembayaran berhasil diverifikasi, field status akan berubah menjadi
1 dan field username dapat digunakan pada halaman login hotspot.
Lakukan polling secara berkala (misalnya setiap 5–10 detik) untuk mendeteksi perubahan
status.
Keterangan Nilai Status
| Status |
Keterangan |
Penjelasan |
| 0 |
Pending |
Order sudah dibuat namun customer belum melakukan pembayaran. QRIS masih aktif dan dapat dipindai. Username voucher belum dapat digunakan pada halaman login hotspot meskipun sudah muncul pada response. |
| 1 |
Success |
Pembayaran telah diterima dan diverifikasi oleh sistem. Voucher aktif dan username sudah dapat digunakan untuk login ke hotspot. |
| 2 |
Timeout |
Customer tidak menyelesaikan pembayaran sebelum waktu expire. Order dianggap gagal dan tidak dapat dibayar lagi. Silakan buat pesanan baru untuk mendapatkan QRIS baru. |
Perhatian: Field username yang muncul pada response
belum dapat digunakan jika nilai status masih 0 / Pending.
Username baru bisa dipakai untuk login ke halaman hotspot setelah customer
menyelesaikan pembayaran dan status berubah menjadi 1 / Success. Pastikan
aplikasi Anda menunggu hingga status bernilai 1 sebelum menampilkan kode
voucher kepada customer.
Path Parameter
| order_id | integer | ID order yang didapat dari response endpoint /api/orders. |
Headers
| X-API-Key | Ya | API Key untuk autentikasi. |
Field Response
| id | integer | ID order (sama dengan order_id yang dikirim). |
| profile_id | integer | ID profile yang dipesan. |
| name | string | Nama customer yang diisi saat membuat order. |
| phone | string | Nomor HP customer dalam format internasional. |
| username | string | Kode voucher yang dihasilkan. Hanya dapat digunakan jika status = 1 (Success). |
| amount | integer | Total nominal pembayaran dalam Rupiah. |
| status | integer | Status order: 0 = Pending, 1 = Success, 2 = Timeout/Expired. |
| qrcode_url | string | URL gambar QRIS untuk pembayaran. Tampilkan ke customer untuk dipindai. |
| expire | string | Waktu kadaluarsa pembayaran (format: YYYY-MM-DD HH:mm). |
| created | string | Waktu order dibuat (format: YYYY-MM-DD HH:mm). |
Contoh Request (cURL)
curl -X GET "https://netlayer.id/api/status/19" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Accept: application/json"
<?php
$orderId = 19;
$ch = curl_init("https://netlayer.id/api/status/{$orderId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY',
'Accept: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
const orderId = 19;
const res = await fetch(`https://netlayer.id/api/status/${orderId}`, {
method: 'GET',
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Accept': 'application/json'
}
});
const data = await res.json();
console.log(data);
Contoh Response
{
"id": 19,
"profile_id": 1360,
"name": "Your Name",
"phone": "6285174199211",
"username": "V3CRF6B",
"amount": 2000,
"status": 0,
"qrcode_url": "https://netlayer.id/qrcode/c3a633de.png",
"expire": "2026-09-11 11:36",
"created": "2026-09-11 11:21"
}
6. Catatan Umum
Bagian ini merangkum hal-hal penting yang perlu Anda perhatikan saat mengintegrasikan
aplikasi dengan REST API Netlayer agar komunikasi berjalan lancar dan aman.
| Base URL | Semua endpoint diakses melalui https://netlayer.id/api. Jangan menambahkan trailing slash (/) di belakang path. |
| Autentikasi | Setiap endpoint wajib menyertakan header X-API-Key. Tanpa header tersebut, server akan mengembalikan 401 Unauthorized. API Key bersifat rahasia dan spesifik untuk setiap NAS. |
| Cara Ambil API Key | Login ke dashboard utama Netlayer, buka menu NAS, klik tombol Edit pada NAS yang diinginkan, lalu salin nilai API Key yang tertera pada halaman edit NAS tersebut. |
| Format Data | Gunakan JSON pada body request, dan set header Content-Type: application/json agar server dapat memparsing request dengan benar. Jangan gunakan application/x-www-form-urlencoded. |
| Rate Limit | Hindari spam request. Gunakan jeda minimal 1 detik antar request, terutama pada endpoint /api/status/{order_id} yang biasanya dipanggil berulang untuk polling. Untuk polling status order, interval 5–10 detik sudah cukup. |
| Error Handling | Selalu tangani error response untuk mencegah aplikasi crash. Periksa field error atau message pada body response untuk mengetahui detail penyebab kegagalan. Kode HTTP yang umum muncul antara lain 400 (bad request), 401 (unauthorized), dan 404 (not found). |
| Alur Integrasi | Alur standar integrasi: (1) panggil /api/info untuk memverifikasi API Key, (2) panggil /api/profiles untuk menampilkan daftar paket, (3) panggil /api/orders saat customer memilih paket, lalu (4) polling /api/status/{order_id} sampai status berubah menjadi 1 (sukses). |
| Keamanan | Jangan pernah mengekspos API Key di sisi client (browser/mobile app). Simpan API Key di backend Anda dan gunakan sebagai proxy untuk memanggil API Netlayer. |
Peringatan Keamanan: API Key memiliki hak penuh untuk membuat order voucher pada NAS Anda.
Jangan pernah commit API Key ke repository publik, jangan kirim melalui chat, dan segera
rotasi jika mencurigai kebocoran.