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.

Databases

Databases

Manage MySQL/MariaDB databases. Base: /api/v1/databases Β· Auth: Authorization: Bearer wsp_…

Error envelope: { "success": false, "code": "VALIDATION_ERROR", "error": "database name is required", "message": "…", "status": 400 }


List β€” GET /api/v1/databases/

No body. Response 200 (verified live): [], or items:

[ { "name": "admin_shop", "db_user": "admin_shop", "owner": "admin",
    "size_kb": 0, "remote_access": false, "remote_host": "",
    "created_at": "2026-05-18T17:44:35+07:00",
    "updated_at": "2026-05-18T17:44:35+07:00" } ]

Create β€” POST /api/v1/databases/

Only name required; db_user = <owner>_<name>, password auto-generated if omitted.

Request: { "name": "shop" }

Response 201 (verified live β€” note db_password shown once):

{ "name": "admin_shop", "db_user": "admin_shop",
  "db_password": "361ebac88cac9451393a1153f6eda52e",
  "created_at": "2026-05-18T17:44:35+07:00" }

Response 400 (verified live): { "success": false, "code": "VALIDATION_ERROR", "error": "database name is required", "message": "database name is required", "status": 400 }

Get / delete

GET /api/v1/databases/:name β†’ same shape as a list item. DELETE /api/v1/databases/:name β†’ 200 (verified live):

{ "message": "Database deleted successfully" }

PUT /databases/:name Request: { "remote_access": true, "remote_host": "%" }. POST /databases/:name/reset-password β†’ { "db_password": "…" }. POST /databases/:name/phpmyadmin β†’ { "url": "https://…" } (one-time).


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