Reference
API reference
SoEzyPanel exposes a JSON REST API so you can integrate servers, players, config templates and more with bots, websites and your own tooling.
Base URL & format
Every endpoint lives under https://dash.soezy.net/api/v1. JSON in, JSON out. Success returns { "ok": true, ... }; failure returns { "ok": false, "error": "..." } with a matching HTTP status. List endpoints accept ?page and ?perPage (maxย 100) and include a pagination { page, perPage, total, totalPages } block. All data is scoped to the token's dashboard.
Authentication
Generate a token under Configure โ API / Integrate, then send it as a bearer header:
curl https://dash.soezy.net/api/v1/servers \ -H "Authorization: Bearer YOUR_TOKEN"
- Custom integration token โ full access (every scope). For your own code.
- Beacon token โ config-template scopes only.
Important: Treat tokens like passwords. Don't commit them to code or share them in Discord. Revoke and rotate a token if it leaks.
Scopes
A token grants scopes; each endpoint requires its scope.
| Scope | Grants |
|---|---|
servers:read | List & read game servers |
servers:write | Control servers (power / backup / broadcast / command) |
players:read | Read players, characters & groups |
players:write | Moderate players (kick / ban / mute / tokens / notes / roles) |
config_templates:read | Read config templates & file contents |
config_templates:write | Manage config templates & file contents |
Servers
| Endpoint | Scope | Description |
|---|---|---|
GET /servers | servers:read | List game servers (paginated) |
GET /servers/{id} | servers:read | One server |
POST /servers/{id}/power | servers:write | { action: start | stop | restart | update } |
POST /servers/{id}/backup | servers:write | Take a manual backup |
POST /servers/{id}/broadcast | servers:write | { message } โ in-game broadcast |
POST /servers/{id}/command | servers:write | { command } โ raw RCON command |
Players
| Endpoint | Scope | Description |
|---|---|---|
GET /players | players:read | List players (?status, ?search) |
GET /players/{id} | players:read | Player + recent moderation log |
POST /players/{id}/moderate | players:write | { action: kick|ban|unban|mute|unmute, duration?, reason? } |
POST /players/{id}/tokens | players:write | { amount, note? } โ grant / take tokens |
POST /players/{id}/note | players:write | { note } โ set the admin note |
POST /players/{id}/role | players:write | { role, op: add | remove } |
Config templates
| Endpoint | Scope | Description |
|---|---|---|
GET /config-templates | config_templates:read | List templates |
POST /config-templates | config_templates:write | { name, game } โ create |
GET /config-templates/{id} | config_templates:read | Template + its file map |
PATCH /config-templates/{id} | config_templates:write | { name?, notes? } |
GET /config-templates/{id}/files/{location} | config_templates:read | Read a config file (e.g. GameUserSettings.ini) |
PUT /config-templates/{id}/files/{location} | config_templates:write | { content } โ write a config file |
POST /config-templates/{id}/apply | config_templates:write | Restart running servers using the template |
Characters
| Endpoint | Scope | Description |
|---|---|---|
GET /characters | players:read | List characters (?serverId, ?online, ?search) |
GET /characters/{id} | players:read | One character (level, gender, tribe, live position) |
Groups
| Endpoint | Scope | Description |
|---|---|---|
GET /groups | players:read | List groups / tribes (?serverId, ?search) |
GET /groups/{id} | players:read | Group + member roster |
GET /groups/{id}/logs | players:read | Captured tribe-log events (paginated) |
Example
curl -X POST https://dash.soezy.net/api/v1/servers/SERVER_ID/broadcast \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message":"Server restarting in 5 minutes!"}'