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.

ScopeGrants
servers:readList & read game servers
servers:writeControl servers (power / backup / broadcast / command)
players:readRead players, characters & groups
players:writeModerate players (kick / ban / mute / tokens / notes / roles)
config_templates:readRead config templates & file contents
config_templates:writeManage config templates & file contents

Servers

EndpointScopeDescription
GET /serversservers:readList game servers (paginated)
GET /servers/{id}servers:readOne server
POST /servers/{id}/powerservers:write{ action: start | stop | restart | update }
POST /servers/{id}/backupservers:writeTake a manual backup
POST /servers/{id}/broadcastservers:write{ message } โ€” in-game broadcast
POST /servers/{id}/commandservers:write{ command } โ€” raw RCON command

Players

EndpointScopeDescription
GET /playersplayers:readList players (?status, ?search)
GET /players/{id}players:readPlayer + recent moderation log
POST /players/{id}/moderateplayers:write{ action: kick|ban|unban|mute|unmute, duration?, reason? }
POST /players/{id}/tokensplayers:write{ amount, note? } โ€” grant / take tokens
POST /players/{id}/noteplayers:write{ note } โ€” set the admin note
POST /players/{id}/roleplayers:write{ role, op: add | remove }

Config templates

EndpointScopeDescription
GET /config-templatesconfig_templates:readList templates
POST /config-templatesconfig_templates:write{ name, game } โ€” create
GET /config-templates/{id}config_templates:readTemplate + its file map
PATCH /config-templates/{id}config_templates:write{ name?, notes? }
GET /config-templates/{id}/files/{location}config_templates:readRead 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}/applyconfig_templates:writeRestart running servers using the template

Characters

EndpointScopeDescription
GET /charactersplayers:readList characters (?serverId, ?online, ?search)
GET /characters/{id}players:readOne character (level, gender, tribe, live position)

Groups

EndpointScopeDescription
GET /groupsplayers:readList groups / tribes (?serverId, ?search)
GET /groups/{id}players:readGroup + member roster
GET /groups/{id}/logsplayers:readCaptured 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!"}'