VPS Panduan
ID
Masuk
  1. Panduan
  2. Developer

API untuk developer

Referensi REST API: membuat token, lalu membaca dan mengendalikan server, snapshot, faktur, dan pesanan dari skrip Anda sendiri.

Developer 4 menit baca

Dasar

Hal Nilai
Alamat dasar https://vps.radiuslink.id/api/v1
Autentikasi Header Authorization: Bearer TOKEN
Format JSON. Kirim Accept: application/json
Batas 60 permintaan per menit per token. Sisa kuota ada di header X-RateLimit-*
Uang Rupiah, bilangan bulat, tanpa desimal (price_idr, total_idr)
Waktu ISO 8601

API hanya menampilkan milik akun pemilik token. Apa pun yang bukan milik Anda dijawab 404.

Membuat token

  1. Di panel, buka Pengaturan, lalu Token API.
  2. Tekan Buat token, beri nama, lalu pilih Akses:
    • Hanya baca: melihat server, tagihan, dan metrik.
    • Baca dan tulis: semua yang bisa dibaca, ditambah aksi daya dan perubahan lain.
  3. Salin tokennya. Token tampil satu kali; kami hanya menyimpan sidiknya.

Token hilang atau bocor? Cabut dari halaman yang sama, lalu buat yang baru. Perlakukan token seperti kata sandi, dan pakai Hanya baca untuk dasbor dan pemantauan.

Contoh pertama

curl https://vps.radiuslink.id/api/v1/servers \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json"

Jawabannya:

{
  "data": [
    {
      "id": 12,
      "hostname": "toko-saya",
      "status": "running",
      "os": "ubuntu-24.04",
      "plan": { "code": "core", "name": "Core", "vcpu": 2, "ram_mb": 4096, "disk_gb": 64 },
      "locked": false,
      "current_task": null,
      "due_at": "2026-11-01T02:00:00+00:00"
    }
  ]
}

status adalah salah satu dari provisioning, running, stopped, rebuilding, suspended, terminating, terminated, error.

Membaca (akses Hanya baca)

Metode Path Hasil
GET /servers Semua server Anda
GET /servers/{id} Satu server dan tugas yang sedang berjalan padanya
GET /servers/{id}/metrics?range=day Grafik pemakaian. range: hour, day, week, month, year
GET /servers/{id}/snapshots Snapshot server itu
GET /invoices Semua faktur Anda
GET /invoices/{id} Satu faktur beserta barisnya
GET /invoices/{id}/pdf Faktur sebagai PDF. Tambahkan ?receipt=1 untuk bukti bayar (setelah lunas)
GET /tasks/{id} Keadaan satu tugas
GET /ssh-keys Kunci SSH pada akun Anda

/servers dan /invoices mengembalikan seluruh daftar. Tambahkan ?per_page=N (1 sampai 100) untuk hasil berhalaman dengan meta dan links.

Mengubah (akses Baca dan tulis)

Metode Path Isi Hasil
POST /servers/{id}/actions {"action": "reboot"} 202 dan tugas. action: start, shutdown, reboot, stop
POST /servers/{id}/snapshots {"name": "sebelum-update"} 202 dan tugas
POST /servers/{id}/snapshots/{name}/rollback 202 dan tugas
DELETE /servers/{id}/snapshots/{name} 202 dan tugas
POST /servers/{id}/rebuild {"confirm": true, "ssh_key_id": 3} 202 dan tugas. Menghapus seluruh isi disk
POST /servers/{id}/rescue {"enable": true} 200 dengan {"active": true}
POST /servers/{id}/console 201 dengan token konsol sekali pakai
POST /ssh-keys {"name": "laptop", "public_key": "ssh-ed25519 AAAA..."} 201
DELETE /ssh-keys/{id} 204
POST /orders lihat di bawah 201 dan pesanan

stop memutus daya seketika; pakai shutdown untuk berhenti dengan baik.

Tugas: menunggu sampai selesai

Aksi yang butuh waktu menjawab 202 dengan sebuah tugas, bukan hasil akhirnya:

{ "data": { "id": 481, "state": "running", "error": null, "server_id": 12 } }

Tanyakan /tasks/{id} setiap beberapa detik sampai state menjadi done atau failed. Bila gagal, error berisi alasannya.

Selama satu tugas berjalan pada sebuah server, aksi lain pada server itu ditolak dengan 409.

Memesan server

curl -X POST https://vps.radiuslink.id/api/v1/orders \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"plan": "core", "hostname": "toko-saya", "os": "ubuntu-24.04", "term_months": 1, "ssh_key_id": 3, "idempotency_key": "pesanan-2026-10-12-a"}'
Kolom Wajib Keterangan
plan ya Kode paket, misalnya edge, node, core
hostname ya Huruf kecil, angka, tanda hubung
os tidak Misalnya ubuntu-24.04, debian-12
app tidak Aplikasi siap pakai, misalnya wordpress, docker, n8n
site_name tidak Nama pada alamat web. Hanya untuk aplikasi yang punya halaman web
term_months tidak 1, 3, 6, 12, atau 24
ssh_key_id tidak Kunci dari /ssh-keys
idempotency_key tidak Hingga 64 karakter. Kirim nilai yang sama saat mengulang, agar tidak terbuat dua pesanan

Pesanan tidak membangun apa pun sampai dibayar. Pembayaran dilakukan di panel; server dibuat setelahnya.

Galat

Semua galat dijawab dalam JSON.

Kode Artinya
401 Token tidak ada, salah, atau sudah dicabut
403 Token tidak punya akses yang diperlukan (misalnya Hanya baca dipakai untuk mengubah), atau aksi itu tidak diizinkan
404 Tidak ada, atau bukan milik Anda
409 Masih ada tugas lain yang berjalan pada server itu
422 Isi permintaan tidak sah, atau server tidak dalam keadaan yang bisa menerima aksi itu
429 Terlalu banyak permintaan. Tunggu sesuai header Retry-After

Yang tidak ada di API

  • Kata sandi root dan login aplikasi tidak pernah dikembalikan API. Keduanya hanya ditampilkan sekali di panel.
  • Pembayaran, upgrade paket, alamat web, dan port dikelola dari panel.