−25%

untuk Windows tahunan, hingga 31 Okt. Lihat paket

EQVPS
Mulai

Kelola VPS dengan REST API dan curl: status, daya, instal ulang, perpanjangan

Semua yang Anda lakukan di dasbor setelah memesan server — cek status, reboot, baca metrik, ganti nama, instal ulang OS, perpanjang beberapa bulan, batalkan dan urungkan — sebagai perintah curl siap salin, dengan respons asli.

Memesan server lewat API cukup satu permintaan. Itu dibahas di Pesan VPS dalam 4 panggilan API. Halaman ini membahas semua setelahnya: aksi rutin yang biasanya Anda klik di dasbor, ditulis sebagai perintah curl yang bisa ditempel ke skrip.

Setiap perintah di bawah dijalankan ke API kami sebelum diterbitkan, dan responsnya adalah salinan ringkas dari yang kembali.

Persiapan

Dua variabel membuat perintah tetap pendek:

export API=https://api.eqvps.com/api/v1/eqvps
export EQVPS_TOKEN='paste-your-token-here'

Token berasal dari POST /auth/register atau dari Settings → API tokens di dasbor. Jauhkan dari riwayat shell jika orang lain memakai mesin itu; membacanya dari file dengan export EQVPS_TOKEN=$(cat ~/.eqvps_token) sudah cukup.

Temukan server Anda

curl -s $API/services -H "Authorization: Bearer $EQVPS_TOKEN"

Setiap entri punya id seperti 47HZ7YF. Itulah kode layanan yang dipakai semua panggilan lain. Lalu gambaran lengkap satu server:

curl -s $API/services/47HZ7YF -H "Authorization: Bearer $EQVPS_TOKEN"
{ "data": {
    "id": "47HZ7YF", "status": "active", "queued": false,
    "product": { "slug": "nano", "name": "Nano" },
    "specs": { "vcpu": 2, "memory_mb": 1024, "disk_gb": 15 },
    "hostname": "agent-box",
    "vm": { "state": "running", "uptime": 5340 },
    "access": { "method": "ssh", "host": "203.0.113.10", "port": 21521, "user": "root", "nat": true, ... } } }

access memberi tahu cara masuk. Pada paket dengan IPv4 sendiri, port-nya 22; pada paket NAT, itu port terusan pribadi Anda. Panggilan ini hanya membaca, jadi aman di-poll dalam loop.

Jika Anda memesan tanpa kunci SSH, kata sandi root ditampilkan sekali:

curl -s "$API/services/47HZ7YF?reveal=1" -H "Authorization: Bearer $EQVPS_TOKEN"

Selama server masih booting, jawabannya password_pending dan tampilan sekali pakai itu tidak terpakai. Tunggu setengah menit dan tanya lagi.

Daya: start, stop, reboot

curl -s -X POST $API/services/47HZ7YF/power \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"action": "reboot"}'

action bernilai start, stop, atau reboot. Server yang belum aktif (masih dibuat, atau ditangguhkan karena belum bayar) menjawab 409 Service is not active. Itu bukan galat di skrip Anda. Cek status dulu.

Metrik

curl -s "$API/services/47HZ7YF/metrics?timeframe=day" -H "Authorization: Bearer $EQVPS_TOKEN"

CPU, memori, jaringan, dan disk sebagai deret waktu. timeframe bernilai hour (bawaan), day, week, atau month. Cocok untuk cron job yang mengabari Anda saat disk terus membesar. Penghitung trafik untuk periode tagihan saat ini ada di Cek kecepatan dan trafik.

Ganti nama server

curl -s -X POST $API/services/47HZ7YF/hostname \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"hostname": "web-01"}'

Nama baru diterapkan di dalam sistem yang berjalan oleh guest agent, tanpa reboot di Linux. Jika server dihentikan, atau Anda menghapus qemu-guest-agent, panggilan mengembalikan 409 agent_unavailable dan tidak ada yang berubah.

Instal ulang OS

Yang ini menghapus disk. API mengharuskan Anda mengetik hostname server saat ini di confirm, sehingga skrip dengan id layanan yang salah tidak bisa menghapus mesin yang salah:

curl -s -X POST $API/services/47HZ7YF/reinstall \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"os_id": 4, "confirm": "web-01"}'

os_id berasal dari daftar available_os paket Anda di GET /products atau dari detail server itu sendiri. Instal ulang berjalan di latar belakang; poll GET /services/{id} sampai status kembali active.

Perpanjangan dan saldo

Server diperpanjang setiap bulan dari saldo prabayar Anda. Untuk melihat biaya periode yang lebih panjang bagi server ini:

curl -s $API/services/47HZ7YF/renew-options -H "Authorization: Bearer $EQVPS_TOKEN"

Untuk membayar di muka, misalnya tiga bulan, dalam satu panggilan:

curl -s -X POST $API/services/47HZ7YF/renew \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"months": 3}'

months bernilai 1, 3, 6, atau 12, dan 12 ditagih dengan harga tahunan beserta diskonnya. Jawabannya menyebut paid_from_balance: true dan memberi tanggal kedaluwarsa baru. Jika saldo tidak mencukupi, tidak ada yang ditagih: Anda mendapat paid_from_balance: false dan sebuah checkout_url untuk tagihan itu. Setelah saldo diisi, POST $API/invoices/{invoice_id}/pay membayar tagihan itu dari saldo; jika masih kurang, ia mengembalikan checkout_url yang sama dan tidak menagih apa pun. Cek dan isi saldo:

curl -s $API/balance -H "Authorization: Bearer $EQVPS_TOKEN"

curl -s -X POST $API/balance/topup \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"amount": 25}'

Respons pengisian berisi checkout_url. Itu pembayaran kripto: USDT, USDC, atau ETH di Base, Ethereum, atau Polygon. Saldo dikreditkan setelah pembayaran terkonfirmasi on-chain. Membayar adalah satu-satunya langkah yang tidak bisa dilakukan skrip untuk Anda, kecuali skrip itu memegang dompet.

Monero juga bisa, tetapi hanya sebagai pengisian saldo dengan pengecekan manual: Anda mengirim XMR, menyerahkan id transaksi, dan kami mengkreditkannya setelah verifikasi. Lihat Bayar dengan Monero.

Batalkan, dan berubah pikiran

Pembatalan yang aman membiarkan server tetap berjalan sampai periode berbayar berakhir dan hanya tidak memperpanjangnya:

curl -s -X POST $API/services/47HZ7YF/cancel \
  -H "Authorization: Bearer $EQVPS_TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "end_of_period", "reason": "moving the project elsewhere"}'

reason wajib diisi. Beberapa kata sudah cukup. Berubah pikiran sebelum tanggalnya?

curl -s -X POST $API/services/47HZ7YF/cancel/undo -H "Authorization: Bearer $EQVPS_TOKEN"

Ada juga "type": "immediate". Ini menghapus server dan datanya seketika, memerlukan "confirm": "<hostname>", dan tidak bisa diurungkan. Kecuali Anda benar-benar bermaksud begitu, gunakan end_of_period.

Jaga token tetap hidup

Token baru berlaku setahun secara bawaan. Setiap respons terautentikasi membawa header X-Token-Expires-At, jadi skrip bisa menyadarinya lebih awal. Tukar token dengan yang baru:

curl -s -X POST $API/auth/token/refresh -H "Authorization: Bearer $EQVPS_TOKEN"

Token lama langsung berhenti bekerja, jadi simpan yang baru sebelum melakukan hal lain.

Galat yang perlu ditangani

KodeArtinyaYang dilakukan
401Token hilang, dicabut, atau kedaluwarsaRefresh atau buat yang baru
402Saldo terlalu rendah untuk aksi yang hanya memakai saldo (misalnya ganti paket)Isi saldo, lalu ulangi panggilan yang sama
409Server tidak dalam status yang tepat (belum aktif, operasi berjalan, tidak ada yang diurungkan)Baca message, cek status, coba lagi nanti
422Sebuah kolom salah atau kosongRespons menyebut yang mana
429Terlalu banyak permintaanTunggu Retry-After

Melakukannya dari klien AI, bukan skrip? Aksi yang sama tersedia sebagai alat MCP — lihat Cara agen AI mengurus VPS-nya sendiri lewat MCP dan referensi API. Belum punya server? Pilih paket.

FAQ

Apakah saya perlu server MCP untuk mengotomasi VPS?

Tidak. MCP adalah kemudahan untuk klien AI; setiap alat MCP memanggil REST API yang sama di baliknya. Skrip shell, cron job, atau pipeline CI bisa langsung memakai curl dengan token yang sama.

Dari mana saya mendapat token?

Dari POST /auth/register (agen yang mendaftar sendiri) atau dari dasbor: Settings → API tokens. Token baru berlaku setahun secara bawaan; POST /auth/token/refresh menukar token dengan yang baru sebelum kedaluwarsa.

Bisakah perintah yang salah menghapus server saya?

Hanya dua panggilan yang menghancurkan data: instal ulang dan pembatalan langsung. Keduanya menolak berjalan kecuali Anda mengulang hostname server yang persis di kolom confirm. Reboot, stop, hostname, dan perpanjangan tidak menyentuh file Anda.

Bagaimana perpanjangan dibayar?

Dari saldo prabayar. Server diperpanjang otomatis setiap bulan jika saldo cukup; POST /services/{id}/renew membayar 1, 3, 6, atau 12 bulan di muka dalam satu panggilan. Jika saldo kurang, panggilan yang sama mengembalikan tagihan dengan tautan pembayaran kripto alih-alih menagih apa pun.

Apakah ada batas permintaan?

Ya, per token dan per aksi — misalnya 10 refresh token per menit, 20 tiket per menit. Skrip yang mengecek status setiap beberapa detik tidak masalah; skrip yang membombardir aksi daya dalam loop akan mendapat 429 dengan Retry-After.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.