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.

Software — Web Server, DB, Plugins, Builds

Software — Web Server, DB, Plugins, Builds

Role: admin. Auth: Authorization: Bearer wsp_…


Web server — GET /api/v1/software/webserver

Response 200 (verified live):

{ "available": [
    { "type": "nginx", "name": "Nginx", "handler": "php-fpm" },
    { "type": "apache", "name": "Apache", "handler": "php-fpm" },
    { "type": "openlitespeed", "name": "OpenLiteSpeed",
      "handler": "lsphp" } ] }

GET | PUT /webserver/config; GET | PUT /webserver/max-upload-size { "max_upload_mb": 512 }; POST /webserver/reload · /restart · /switch { "type": "nginx" } · /regenerate-all-vhosts · /webadmin-password { "password": "•••" }; GET /webserver/test.

Database server — GET /api/v1/software/database/

Response 200 (verified live):

{ "available": [
    { "type": "mariadb", "version": "10.11",
      "name": "MariaDB 10.11 LTS", "default": true },
    { "type": "mysql", "version": "8.0", "name": "MySQL 8.0",
      "default": false } ] }

GET | PUT /database/config; POST /database/install { "type": "mariadb", "version": "10.11" }; POST /database/restart.

Plugins — GET /api/v1/software/plugins

Response 200 (verified live — grouped by category):

{ "grouped": {
    "cache": [
      { "id": "redis", "name": "Redis", "version": "6.0.16",
        "category": "cache", "status": "installed",
        "website": "https://redis.io" } ] } }

POST /plugins/:id/install; DELETE /plugins/:id; POST /software/rebuild-all.

Build queue — GET /api/v1/software/builds/

Response 200 (verified live):

{ "has_more": true, "jobs": [
    { "id": "1778494480933391102", "type": "plugin_remove",
      "name": "Remove plugin", "status": "failed", "progress": 0,
      "output": ["[17:14:40] Starting…", "[17:14:40] Failed…"],
      "error": "removal not supported for: test-id",
      "started_at": "2026-05-11T17:14:40+07:00",
      "finished_at": "2026-05-11T17:14:40+07:00" } ] }

GET /builds/:id · /builds/:id/logs; POST /builds/:id/retry · /builds/loadmore; DELETE /builds/ · /builds/:id.

CustomBuild — /api/v1/custombuild

GET /custombuild/versions (verified live):

[ { "package": "nginx", "installed_version": "1.26.2",
    "available_version": "1.26.2", "needs_update": false,
    "is_installed": true } ]

GET /custombuild/options{ "webserver": "nginx_apache", "php_versions": [...], "php_modes": {...}, "extensions": {...} }. PUT /custombuild/options; POST /custombuild/build-all · /build/:package · /versions/update · /webserver/switch.


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