View .md

Core endpoints (Client API: game servers)

15 FeatherPanel Client API: game servers endpoints from user/server/core.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Last synced from FeatherPanel 15b94e9 on .

On this page

Defined in backend/app/routes/user/server/core.php. Authentication used here: Signed-in user, Server access. Read Authentication for how to send credentials and Rate limits and errors for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

Endpoints

GET/api/user/servers

Auth: Signed-in userDefault rate limit: 2 / second (user-servers)Route name: session-serversController: ServerUserController::getUserServersroute source

Get user servers Retrieve all servers owned by the user or where the user is a subuser, with pagination and search functionality.

ParameterInTypeRequiredDescription
pagequeryintegernoPage number for pagination
limitqueryintegernoNumber of records per page
searchquerystringnoSearch term to filter servers by name or description
view_allquerybooleannoView all servers (admin only - requires ADMIN_SERVERS_VIEW permission)
Response data fieldTypeDescription
serversUserServer[]
paginationUserServerPagination
searchServerSearch
curl -X GET "$PANEL_URL/api/user/servers" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 User servers retrieved successfully · 401 Unauthorized - User not authenticated · 500 Internal server error - Failed to retrieve servers

GET/api/user/servers/all-others

Auth: Signed-in userDefault rate limit: 2 / second (user-servers-all-others)Route name: session-servers-all-othersController: ServerUserController::getAdminAllOtherServersroute source
curl -X GET "$PANEL_URL/api/user/servers/all-others" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

GET/api/user/servers/{uuidShort}

Auth: Server accessDefault rate limit: 30 / minuteRoute name: session-server-getController: ServerUserController::getServerroute source

Get server details Retrieve detailed information about a specific server including node, realm, spell, allocation, location, SFTP details, and variables.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID

Response data: ServerDetail

Response data fieldTypeDescription
idintegerServer ID
uuidstringServer UUID
uuidShortstringServer short UUID
namestringServer name
descriptionstringServer description
statusstringServer status
memoryintegerMemory limit in MB
diskintegerDisk limit in MB
cpuintegerCPU limit percentage
swapintegerSwap limit in MB
iointegerIO limit
nodeobjectNode information
realmobjectRealm information
spellobjectSpell information
allocationobjectAllocation information
locationobjectLocation information
sftpobject
variablesobject[]Server variables
curl -X GET "$PANEL_URL/api/user/servers/$UUID_SHORT" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Server details retrieved successfully · 400 Bad request - Missing or invalid UUID short · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied to server · 404 Not found - Server not found · 500 Internal server error - Failed to retrieve server

GET/api/user/servers/{uuidShort}/resources

Auth: Server accessDefault rate limit: 30 / minute (user-server-resources)Route name: session-server-resourcesController: ServerUserController::getServerResourcesroute source

Get current resource usage Returns the daemon-reported utilization (disk, memory, CPU) for a server, including while it is offline, together with the configured limits from the panel.

ParameterInTypeRequiredDescription
uuidShortpathstringyes
curl -X GET "$PANEL_URL/api/user/servers/$UUID_SHORT/resources" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Resource usage · 404 Server or node not found · 502 Daemon unreachable

POST/api/user/servers/{uuidShort}/jwt

Auth: Server accessRoute name: session-server-jwtController: ServerUserController::generateServerJwtroute source

Generate server JWT token Generate a JWT token for Wings API access with user permissions and WebSocket connection details.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID

Response data: JwtResponse

Response data fieldTypeDescription
tokenstringJWT token
expires_atintegerToken expiration timestamp
server_uuidstringServer UUID
user_uuidstringUser UUID
permissionsstring[]User permissions
connection_stringstringWebSocket connection string
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/jwt" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 JWT token generated successfully · 400 Bad request - Missing or invalid UUID short · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied to server · 404 Not found - Server or node not found · 500 Internal server error - Failed to generate JWT token

PUT/api/user/servers/{uuidShort}

Auth: Server accessDefault rate limit: 2 / minute (user-server-update)Route name: session-server-updateController: ServerUserController::updateServerroute source

Update server Update server information including name, description, startup command, Docker image, and variables. Syncs changes with Wings daemon.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID

Request body: ServerUpdateRequest (application/json) · Response data: ServerUpdateResponse

Body fieldTypeRequiredDescription
namestringnoServer name
descriptionstringnoServer description
startupstringnoStartup command
imagestringnoDocker image
spell_idintegernoSpell ID to change server spell
wipe_filesbooleannoWhether to delete all server files before reinstalling (only applies when changing spell_id)
auto_startbooleannoStart automatically after node reboot/reconnect
auto_start_delayintegernoExtra delay in seconds before auto-start
variablesobject[]noServer variables
Response data fieldTypeDescription
serverobject
curl -X PUT "$PANEL_URL/api/user/servers/$UUID_SHORT" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"","description":"","startup":"","image":"","spell_id":0,"wipe_files":false,"auto_start":false,"auto_start_delay":0,"variables":[]}'

Plugin events: featherpanel:server:reinstall, featherpanel:user:server:updated

Responses: 200 Server updated successfully · 400 Bad request - Missing UUID, invalid data, or validation errors · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied to server or variable not editable · 404 Not found - Server or node not found · 422 Unprocessable entity - Invalid variable values or unknown variables · 500 Internal server error - Failed to update server

POST/api/user/servers/{uuidShort}/custom-variables

Auth: Server accessDefault rate limit: 10 / minute (user-server-custom-variable-create)Route name: session-server-custom-variable-createController: ServerUserController::createCustomVariableroute source
ParameterInTypeRequiredDescription
uuidShortpath-yes
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/custom-variables" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

DELETE/api/user/servers/{uuidShort}/custom-variables/{variableId}

Auth: Server accessDefault rate limit: 10 / minute (user-server-custom-variable-delete)Route name: session-server-custom-variable-deleteController: ServerUserController::deleteCustomVariableroute source
ParameterInTypeRequiredDescription
uuidShortpath-yes
variableIdpath-yes
curl -X DELETE "$PANEL_URL/api/user/servers/$UUID_SHORT/custom-variables/$VARIABLE_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

DELETE/api/user/servers/{uuidShort}

Auth: Server accessDefault rate limit: 1 / hour (user-server-delete)Route name: session-server-deleteController: ServerUserController::deleteServerroute source

Delete server Permanently delete a server. Only server owners can delete their servers. This action cannot be undone and will delete all server data, files, databases, and configurations.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID
Response data fieldTypeDescription
messagestringSuccess message
curl -X DELETE "$PANEL_URL/api/user/servers/$UUID_SHORT" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:server:delete

Responses: 200 Server deleted successfully · 400 Bad request - Invalid server configuration · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied to server or user is not the server owner · 404 Not found - Server or node not found · 422 Unprocessable Entity - Invalid server data · 500 Internal server error - Failed to delete server

POST/api/user/servers/{uuidShort}/reinstall

Auth: Server accessDefault rate limit: 1 / minuteRoute name: session-server-reinstallController: ServerUserController::reinstallServerroute source

Reinstall server Reinstall a server using Wings daemon. This will reset the server to its initial state. Optionally wipe all files before reinstalling.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID
Body fieldTypeRequiredDescription
wipe_filesbooleannoWhether to delete all server files before reinstalling
Response data fieldTypeDescription
serverobject
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/reinstall" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"wipe_files":false}'

Plugin events: featherpanel:server:reinstall

Responses: 200 Server reinstalled successfully · 400 Bad request - Missing or invalid UUID short · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied to server · 404 Not found - Server or node not found · 500 Internal server error - Failed to reinstall server

POST/api/user/servers/{uuidShort}/install/abort

Auth: Server accessDefault rate limit: 2 / minuteRoute name: session-server-install-abortController: ServerUserController::abortInstallroute source

Abort server install Abort an in-progress install or reinstall on a Calagopus (wings_rs) node.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/install/abort" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Install abort requested · 401 Unauthorized · 403 Forbidden · 404 Server or node not found · 500 Internal server error · 501 Daemon feature unsupported

POST/api/user/servers/{uuidShort}/script

Auth: Server accessDefault rate limit: 2 / minuteRoute name: session-server-scriptController: ServerUserController::runScriptroute source
ParameterInTypeRequiredDescription
uuidShortpath-yes
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/script" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

GET/api/user/servers/{uuidShort}/daemon-version

Auth: Server accessDefault rate limit: 30 / minuteRoute name: session-server-daemon-versionController: ServerUserController::getDaemonServerVersionroute source
ParameterInTypeRequiredDescription
uuidShortpath-yes
curl -X GET "$PANEL_URL/api/user/servers/$UUID_SHORT/daemon-version" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

POST/api/user/servers/{uuidShort}/ws/broadcast

Auth: Server accessDefault rate limit: 10 / minuteRoute name: session-server-ws-broadcastController: ServerUserController::broadcastWsroute source
ParameterInTypeRequiredDescription
uuidShortpath-yes
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/ws/broadcast" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

POST/api/user/servers/{uuidShort}/command

Auth: Server accessDefault rate limit: 30 / minuteRoute name: session-server-commandController: ServerUserController::sendCommandroute source

Send console command Send a console command to the server via Wings daemon WebSocket connection.

ParameterInTypeRequiredDescription
uuidShortpathstringyesServer short UUID
Body fieldTypeRequiredDescription
commandstringyesConsole command to execute
Response data fieldTypeDescription
messagestringSuccess message
commandstringCommand that was sent
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/command" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"command":""}'

Responses: 200 Command sent successfully · 400 Bad request - Missing command or server offline · 401 Unauthorized - User not authenticated · 403 Forbidden - Access denied or insufficient permissions · 404 Not found - Server or node not found · 500 Internal server error - Failed to send command