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 URLhttps://netlayer.id/api
Version1.0
FormatJSON (application/json)
AutentikasiHeader X-API-Key (per NAS)
API KeyGet 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

GET /api/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-KeyYaAPI Key untuk autentikasi. Nilai dapat dilihat pada halaman edit NAS di dashboard Netlayer.
Field Response
namestringNama lengkap pemilik akun.
companystringNama perusahaan/penyedia layanan yang terdaftar.
emailstringAlamat email akun yang digunakan untuk login.
phonestringNomor HP akun dalam format internasional tanpa tanda plus (contoh: 6285174199211).
serverstringNama 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

GET /api/profiles

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-KeyYaAPI Key untuk autentikasi.
Field Response
idintegerID unik profile. Nilai ini yang dikirim sebagai profile_id saat membuat order.
namestringNama paket yang ditampilkan ke customer (contoh: "3 Jam").
priceintegerHarga paket dalam satuan Rupiah (tanpa desimal).
validitystringMasa berlaku voucher dalam format jam/hari (contoh: 3h, 12h, 1d).
rate_limitstringLimit bandwidth dalam format download/upload, misalnya 30M/30M berarti 30 Mbps untuk masing-masing arah.
shared_usersintegerJumlah 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

POST /api/orders

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-KeyYaAPI Key untuk autentikasi.
Content-TypeYaWajib bernilai application/json agar body request dapat diparsing oleh server.
Body Parameter
profile_idintegerWajib. ID profile yang didapat dari endpoint /api/profiles. Menentukan paket, harga, dan durasi voucher.
namestringWajib. Nama pemesan/customer. Digunakan sebagai identitas pemilik voucher.
phonestringWajib. 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
successstringPesan sukses dari server, misalnya "order created successfully!".
order_idintegerID 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_idintegerID order yang didapat dari response endpoint /api/orders.
Headers
X-API-KeyYaAPI Key untuk autentikasi.
Field Response
idintegerID order (sama dengan order_id yang dikirim).
profile_idintegerID profile yang dipesan.
namestringNama customer yang diisi saat membuat order.
phonestringNomor HP customer dalam format internasional.
usernamestringKode voucher yang dihasilkan. Hanya dapat digunakan jika status = 1 (Success).
amountintegerTotal nominal pembayaran dalam Rupiah.
statusintegerStatus order: 0 = Pending, 1 = Success, 2 = Timeout/Expired.
qrcode_urlstringURL gambar QRIS untuk pembayaran. Tampilkan ke customer untuk dipindai.
expirestringWaktu kadaluarsa pembayaran (format: YYYY-MM-DD HH:mm).
createdstringWaktu 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 URLSemua endpoint diakses melalui https://netlayer.id/api. Jangan menambahkan trailing slash (/) di belakang path.
AutentikasiSetiap 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 KeyLogin 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 DataGunakan 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 LimitHindari 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 HandlingSelalu 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 IntegrasiAlur 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).
KeamananJangan 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.
Kembali