API Documentation

Integrate WisPanel with your applications using our comprehensive REST API.

Base URL

https://your-server-ip:2083/api/v1

All API endpoints are relative to this base URL.

System

System

Host info, settings, processes, time. Role: admin. Auth: Authorization: Bearer wsp_…


Host info — GET /api/v1/system/info

Response 200 (verified live):

{ "hostname": "demo-123445", "os": "linux", "arch": "amd64",
  "cpu_count": 1, "cpu_usage": 3.0,
  "memory_total": 2071937024, "memory_used": 461721600,
  "memory_free": 96473088, "disk_total": 26030825472,
  "disk_used": 6633467904, "disk_free": 19380580352,
  "uptime": 506345, "go_version": "go1.25.0",
  "panel_version": "1.4.2", "build_time": "unknown" }

Settings — GET | PUT /api/v1/system/settings

GET Response 200 (verified live):

{ "admin_email": "[email protected]", "default_php": "",
  "hostname": "demo-123445", "language": "", "max_upload_mb": "0",
  "server_ip": "161.248.4.182", "setup_completed": "ON",
  "ssh_enabled": "OFF", "ssh_port": "0", "timezone": "" }

PUT Request: { "timezone": "Asia/Ho_Chi_Minh", "default_php": "8.2" }.

Processes — /api/v1/admin/processes

GET /admin/processes/?limit=20 (verified live):

{ "processes": [
    { "pid": 1, "ppid": 0, "user": "root", "cpu": 0,
      "memory": 0.6, "vsz": 167956, "rss": 13468, "tty": "?",
      "state": "Ss", "start_time": "May12", "cpu_time": "3:56",
      "command": "/sbin/init", "command_full": "/sbin/init" } ] }

GET /admin/processes/stats → { "total_processes": 170, "running_processes": 1, "sleeping_processes": 128, "zombie_processes": 0, "processes_by_user": { "root": 110, … }, "top_cpu": [ … ] }. GET /admin/processes/:pid; DELETE /admin/processes/:pid (kill).

Server time — /api/v1/admin/time

GET /admin/time/ (verified live):

{ "config": { "current_time": "2026-05-18T17:53:21+07:00",
    "timezone": "Asia/Ho_Chi_Minh", "utc_offset": "+07:00",
    "unix_timestamp": 1779101601, "ntp_enabled": false,
    "ntp_synchronized": false },
  "timezones": [ "Africa/Abidjan", … ] }

GET /admin/time/ntp → { "enabled": false, "synchronized": false }. PUT /admin/time/ { "timezone": "Asia/Ho_Chi_Minh" }; POST /admin/time/sync · /ntp/enable · /ntp/disable.

System log — GET /api/v1/logs/system?limit=50

Response 200 (verified live): { "entries": [ "2026-05-18T06:33:36+0700 demo-123445 useradd[…]: new user…", … ] }


Conventions → Authentication, Error Handling.

Rate Limiting

API requests are limited to 60 requests per minute per API token.

  • X-RateLimit-Limit: Maximum requests per minute
  • X-RateLimit-Remaining: Remaining requests
  • X-RateLimit-Reset: Unix timestamp when limit resets