bot client di terminal VPS sampai tertulis Status Api is GOOD. bot client = API ON, bot server = bot Telegram.Daftar parameter yang dipakai di semua endpoint.
| Param | Wajib | Keterangan |
|---|---|---|
user | Ya | Nama akun — huruf kecil, tanpa spasi. |
exp | Create / Renew | Durasi akun dalam hari. Untuk trial: menit (1–60, lebih otomatis jadi 60). |
quota | VMess / VLESS / Trojan / SS | Kuota dalam GB (0 = unlimited). |
iplimit | Create / Renew | Maksimal perangkat login bersamaan. |
password | Create SSH | Password akun SSH. |
auth | Semua | Script Key. Alias untuk bot: apikey = auth, username = user. |
Membuat akun baru. Contoh respons di bawah = respons asli dari server.
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" } }REQUESTcurl "https://<domain>/api/createvmess?user=rina&exp=30"a=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://..." } }REQUESTcurl "https://<domain>/api/createvless?user=dewi&exp=30"a=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://..." } }REQUESTcurl "https://<domain>/api/createtrojan?user=aga&exp=30"a=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://..." } }REQUESTcurl "https://<domain>/api/createshadowsocks?user=sari&exp=30"a=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://..." } }Akun percobaan dengan exp = menit (1–60), otomatis terhapus saat waktu habis — aman walau service restart. Password SSH dibuat otomatis oleh server.
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" } }Perpanjang atau hapus akun — pola sama untuk semua protokol.
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" } }renewvmess renewvless renewtrojan renewshadowsocks · deletessh deletevmess deletevless deletetrojan deleteshadowsocksREQUESTcurl "https://<domain>/api/checkssh?user=budi&auth=KODE_AUTH"
RESPONSE{ "status": "success", "data": { "username": "budi", "expired": "2026-12-02", "ip_limit": "2", ... } }Daftar semua akun di server — cukup auth. Field locked menandai akun sedang dikunci.
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 }, ... ]Cek detail satu akun — lengkap dengan sisa hari aktif, UUID, kuota, limit IP, dan status kunci. Butuh parameter user.
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.
Menahan akun tanpa menghapus — username, UUID, kuota & masa aktif tetap utuh. unlock mengembalikan akun identik (UUID sama, gak perlu buat ulang).
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 } }
"already": true, unlock akun aktif juga aman.Mengganti banner login SSH/Dropbear — berlaku di koneksi berikutnya, tanpa restart. Banner asli otomatis dibackup sekali ke /etc/nexustunell.txt.orig.
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>" } }
cp /etc/nexustunell.txt.orig /etc/nexustunell.txt| Kondisi | HTTP | Respons |
|---|---|---|
| Auth salah / tidak ada | 401 | HTML «Akses Ditolak» |
| Parameter kurang | 400 | { "error": "Username, expiry, ... diperlukan" } |
| Gagal di server | 500 | { "error": "...", "detail": "..." } |
| Akun gak ketemu | 404 | { "error": "Akun ... tidak ditemukan" } |
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"a=50&iplimit=2&auth=" . $KODE);
PYTHONresp = requests.get("https://domain/api/trialssh", params={"user": u, "exp": 5, "auth": KODE}).json()