NEXUSTUNELL API

Dokumentasi create · trial · renew · delete · check — SSH, VMess, VLESS, Trojan, Shadowsocks
Base URL
https://<domain>/api/
Metode
GET — semua endpoint
Autentikasi
auth = Script Key
Aktivasi
bot client (sekali)
!
Ganti <domain> dengan domain server dan KODE_AUTH dengan Script Key Anda (kode lisensi SC — terlihat di menu) di semua contoh di bawah.
✓
Aktivasi awal: jalankan perintah bot client di terminal VPS sampai tertulis Status Api is GOOD. bot client = API ON, bot server = bot Telegram.

Parameter Umum

Daftar parameter yang dipakai di semua endpoint.

ParamWajibKeterangan
userYaNama akun — huruf kecil, tanpa spasi.
expCreate / RenewDurasi akun dalam hari. Untuk trial: menit (1–60, lebih otomatis jadi 60).
quotaVMess / VLESS / Trojan / SSKuota dalam GB (0 = unlimited).
iplimitCreate / RenewMaksimal perangkat login bersamaan.
passwordCreate SSHPassword akun SSH.
authSemuaScript Key. Alias untuk bot: apikey = auth, username = user.

Create Akun

Membuat akun baru. Contoh respons di bawah = respons asli dari server.

GETcreatesshSSH + OpenVPN
Akun SSH lengkap:SlowDNS (pubkey & NS), link OVPN & file config siap unduh.
REQUESTcurl "https://<domain>/api/createssh?user=budi&password=rahasia123&exp=30&iplimit=2&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "SSH account successfully created",
  "data": { "username": "budi", "password": "rahasia123", "expired": "2026-12-02",
    "ip_limit": "2", "domain": "<domain>", "ns_domain": "ns-xxxx.tokonexus.dev",
    "city": "Singapore", "pubkey": "e94c7be1...", "ip": "IP.SER.VPS",
    "ovpn_link": "https://<domain>:81/allovpn.zip",
    "save_link": "https://<domain>:81/ssh-budi.txt" } }
GETcreatevmessVMESS
REQUESTcurl "https://<domain>/api/createvmess?user=rina&exp=30&quota=50&iplimit=2&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Vmess account successfully created",
  "data": { "username": "rina", "expired": "2026-12-02", "uuid": "uuid-akun", "quota": "50",
    "ip_limit": "2", "domain": "<domain>", "ns_domain": "...", "city": "...", "pubkey": "...",
    "vmess_tls_link": "vmess://...", "vmess_nontls_link": "vmess://...", "vmess_grpc_link": "vmess://..." } }
GETcreatevlessVLESS
REQUESTcurl "https://<domain>/api/createvless?user=dewi&exp=30&quota=50&iplimit=2&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Vless account successfully created",
  "data": { "username": "dewi", "expired": "2026-12-02", "uuid": "uuid-akun", "quota": "50",
    "ip_limit": "2", "domain": "<domain>",
    "vless_tls_link": "vless://...", "vless_nontls_link": "vless://...", "vless_grpc_link": "vless://..." } }
GETcreatetrojanTROJAN
REQUESTcurl "https://<domain>/api/createtrojan?user=aga&exp=30&quota=50&iplimit=2&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Trojan account successfully created",
  "data": { "username": "aga", "expired": "2026-12-02", "uuid": "uuid-akun", "quota": "50",
    "ip_limit": "2", "domain": "<domain>",
    "trojan_tls_link": "trojan://...", "trojan_nontls_link": "trojan://..." } }
GETcreateshadowsocksSHADOWSOCKS
REQUESTcurl "https://<domain>/api/createshadowsocks?user=sari&exp=30&quota=50&iplimit=2&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Shadowsocks account successfully created",
  "data": { "username": "sari", "expired": "2026-12-02", "quota": "50",
    "ip_limit": "2", "domain": "<domain>", "shadowsocks_link": "ss://..." } }

Trial Akun

Akun percobaan dengan exp = menit (1–60), otomatis terhapus saat waktu habis — aman walau service restart. Password SSH dibuat otomatis oleh server.

GETtrialssh · trialvmess · trialvless · trialtrojan
REQUESTcurl "https://<domain>/api/trialssh?user=cobadulu&exp=5&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Trial account created",
  "data": { "username": "cobadulu", "expired": "2026-11-02 22:05", "trial": true,
    "trial_minutes": 5, "password": "trialx9k2mz", "ip": "IP.SER.VPS",
    "ovpn_link": "https://<domain>:81/allovpn.zip",
    "save_link": "https://<domain>:81/ssh-cobadulu.txt" } }

Renew & Delete

Perpanjang atau hapus akun — pola sama untuk semua protokol.

GETrenewssh · deletevmess · dan seterusnya
RENEWcurl "https://<domain>/api/renewssh?user=budi&exp=30&iplimit=2&auth=KODE_AUTH"
DELETEcurl "https://<domain>/api/deletessh?user=budi&auth=KODE_AUTH"
RESPONSE RENEW{ "status": "success", "data": { "username": "budi", "exp": "2027-01-01", "limitip": "2" } }
Endpoint lengkap: renewvmess renewvless renewtrojan renewshadowsocks · deletessh deletevmess deletevless deletetrojan deleteshadowsocks

Check Akun

GETcheckssh · checkvmess · checkvless · checktrojan · checkshadowsocks
REQUESTcurl "https://<domain>/api/checkssh?user=budi&auth=KODE_AUTH"
RESPONSE{ "status": "success", "data": { "username": "budi", "expired": "2026-12-02", "ip_limit": "2", ... } }

List Akun

Daftar semua akun di server — cukup auth. Field locked menandai akun sedang dikunci.

GETlistssh · listvmess · listvless · listtrojan
REQUESTcurl "https://<domain>/api/listssh?auth=KODE_AUTH"
RESPONSE LISTSSH{ "status": "success", "total": 3,
  "data": [ { "username": "budi", "expired": "2026-12-02", "locked": false }, ... ] }
RESPONSE LISTVMESS / VLESS / TROJAN[ { "username": "rina", "expired": "2026-12-02", "uuid": "uuid-akun",
  "quota_bytes": 53687091200, "quota_gb": 50, "ip_limit": "2", "locked": false }, ... ]

Detail Akun

Cek detail satu akun — lengkap dengan sisa hari aktif, UUID, kuota, limit IP, dan status kunci. Butuh parameter user.

GETdetailssh · detailvmess · detailvless · detailtrojan
REQUESTcurl "https://<domain>/api/detailssh?auth=KODE_AUTH&user=budi"
RESPONSE DETAILSSH{ "status": "success",
  "data": { "username": "budi", "password": "pass-akun", "expired": "2026-12-02",
            "days_left": 4, "locked": false, "ip_limit": "1",
            "domain": "domain.com", "ns_domain": "ns.domain", "city": "Singapore",
            "pubkey": "...", "ip": "", "ovpn_link": "https://...", "save_link": "https://..." } }
RESPONSE DETAILVMESS / VLESS / TROJAN{ "status": "success",
  "data": { "username": "rina", "expired": "2026-12-02", "days_left": 4,
            "uuid": "uuid-akun", "quota": "50 GB", "quota_bytes": 53687091200,
            "quota_gb": 50, "ip_limit": 2, "locked": false,
            "domain": "domain.com", "ns_domain": "ns.domain", "city": "Singapore",
  "vmess_tls_link": "vmess://...", "vmess_nontls_link": "vmess://...", "vmess_grpc_link": "vmess://..." } }

Struktur data sama persis seperti respons createssh / createvmess / createvless / createtrojan (vless: vless_tls_link/vless_nontls_link/vless_grpc_link, trojan: trojan_tls_link/trojan_grpc_link) — plus tambahan days_left & locked.

Lock & Unlock Akun

Menahan akun tanpa menghapus — username, UUID, kuota & masa aktif tetap utuh. unlock mengembalikan akun identik (UUID sama, gak perlu buat ulang).

GETlockssh · unlockssh · lockvmess · unlockvmess · lockvless · unlockvless · locktrojan · unlocktrojan
LOCKcurl "https://<domain>/api/lockvmess?user=rina&auth=KODE_AUTH"
UNLOCKcurl "https://<domain>/api/unlockvmess?user=rina&auth=KODE_AUTH"
RESPONSE LOCK{ "status": "success", "message": "Akun vmess rina dikunci",
  "data": { "username": "rina", "expired": "2026-12-02", "uuid": "uuid-akun", "locked": true, "blocks_removed": 2 } }
SSH: login password ditolak (kunci shadow) · VMess/VLESS/Trojan: blok klien ditarik dari config. Aman diulang — lock akun yang sudah terkunci membalas "already": true, unlock akun aktif juga aman.

Ganti Banner SSH

Mengganti banner login SSH/Dropbear — berlaku di koneksi berikutnya, tanpa restart. Banner asli otomatis dibackup sekali ke /etc/nexustunell.txt.orig.

GETchangebanner
REQUEST (teks sederhana)curl "https://<domain>/api/changebanner?text=NEXUSTUNELL%20PREMIUM%20VPN&auth=KODE_AUTH"
REQUEST (multi-baris / khusus — base64)echo "NEXUSTUNELL PREMIUM
Hubungi admin utk renewal" | base64 -w0
curl "https://<domain>/api/changebanner?text=TkVYVVNUVS4uLg&b64=1&auth=KODE_AUTH"
RESPONSE{ "status": "success", "message": "Banner SSH/Dropbear diperbarui (berlaku pada koneksi berikutnya)",
  "data": { "bytes": 46, "backup_asli": "/etc/nexustunell.txt.orig", "preview": "NEXUSTUNELL TEST BANNER...", "preview_sebelumnya": "<banner lama>" } }
Maksimal 4096 byte. Restore manual di VPS: cp /etc/nexustunell.txt.orig /etc/nexustunell.txt

Format Error

KondisiHTTPRespons
Auth salah / tidak ada401HTML «Akses Ditolak»
Parameter kurang400{ "error": "Username, expiry, ... diperlukan" }
Gagal di server500{ "error": "...", "detail": "..." }
Akun gak ketemu404{ "error": "Akun ... tidak ditemukan" }

Contoh Integrasi

NODE.JSawait fetch(`https://domain/api/createssh?user=${u}&password=${pw}&exp=30&iplimit=2&auth=${KODE}`)
PHP$resp = file_get_contents("https://domain/api/createvmess?user=$u&exp=30&quota=50&iplimit=2&auth=" . $KODE);
PYTHONresp = requests.get("https://domain/api/trialssh", params={"user": u, "exp": 5, "auth": KODE}).json()