# Servers endpoints (Admin API)

> 31 FeatherPanel Admin API endpoints from admin/servers.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Source: https://featherpanel.com/docs/api/reference/admin/servers/

Defined in [`backend/app/routes/admin/servers.php`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php). Authentication used here: **Admin**. Read [Authentication](https://featherpanel.com/docs/api/authentication/) for how to send credentials and [Rate limits and errors](https://featherpanel.com/docs/api/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/admin/servers`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers`
- Controller: [`ServersController::index`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L29)

**Get all servers** Retrieve a paginated list of all servers with optional filtering by owner, node, realm, spell, and search functionality.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `page` | query | integer | no | Page number for pagination |
| `limit` | query | integer | no | Number of records per page |
| `search` | query | string | no | Search term to filter servers by name or description |
| `owner_id` | query | integer | no | Filter servers by owner ID |
| `node_id` | query | integer | no | Filter servers by node ID |
| `realm_id` | query | integer | no | Filter servers by realm ID |
| `spell_id` | query | integer | no | Filter servers by spell ID |
| `location_id` | query | integer | no | Filter servers by location ID (through their node) |
| `server_id` | query | integer | no | Filter servers by server ID |
| `uuid` | query | string (uuid) | no | Filter servers by UUID |
| `uuid_short` | query | string | no | Filter servers by short UUID |
| `external_id` | query | string | no | Filter servers by external ID |
| `sort_by` | query | string | no | Field to sort servers by (id, name, created\_at, updated\_at) |
| `sort_order` | query | string | no | Sort order (ASC or DESC) |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |
| `pagination` | ServerPagination |  |
| `search` | object |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/{id}/mounts/assignable`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-mounts-assignable`
- Controller: [`MountsController::assignableForServer`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/MountsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L38)

**Mounts that can be toggled for this server**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | \- | yes |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/mounts/assignable" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

### GET `/api/admin/servers/{id}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-show`
- Controller: [`ServersController::show`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L53)

**Get server by ID** Retrieve a specific server by its ID with complete details including related data, variables, SFTP information, and recent activity.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `id` | integer | Server ID |
| `uuid` | string | Server UUID |
| `uuidShort` | string | Short server UUID |
| `name` | string | Server name |
| `description` | string | Server description |
| `startup` | string | Server startup command |
| `image` | string | Server Docker image |
| `status` | string | Server status |
| `owner` | object | Server owner information |
| `node` | object | Node information |
| `realm` | object | Realm information |
| `spell` | object | Spell information |
| `allocation` | object | Allocation information |
| `variables` | ServerVariable\[\] | Server variables |
| `mounts` | object\[\] | Full mount rows attached to this server |
| `mount_ids` | integer\[\] | IDs of mounts attached to this server |
| `sftp` | ServerSFTP |  |
| `activity` | object\[\] | Recent server activity |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server retrieved successfully · `400` Bad request - Invalid server ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found

### GET `/api/admin/servers/external/{externalId}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-show-by-external-id`
- Controller: [`ServersController::showByExternalId`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L67)

**Get server by external ID** Retrieve a specific server by its external ID with complete details including related data, variables, SFTP information, and recent activity.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `externalId` | path | string | yes | Server external ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `id` | integer | Server ID |
| `uuid` | string | Server UUID |
| `uuidShort` | string | Short server UUID |
| `name` | string | Server name |
| `description` | string | Server description |
| `startup` | string | Server startup command |
| `image` | string | Server Docker image |
| `status` | string | Server status |
| `owner` | object | Server owner information |
| `node` | object | Node information |
| `realm` | object | Realm information |
| `spell` | object | Spell information |
| `allocation` | object | Allocation information |
| `variables` | ServerVariable\[\] | Server variables |
| `mounts` | object\[\] | Full mount rows attached to this server |
| `mount_ids` | integer\[\] | IDs of mounts attached to this server |
| `sftp` | ServerSFTP |  |
| `activity` | object\[\] | Recent server activity |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/external/$EXTERNAL_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server retrieved successfully · `400` Bad request - Invalid external ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found

### PATCH `/api/admin/servers/{id}`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-update`
- Controller: [`ServersController::update`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L81)

**Update server** Update an existing server with comprehensive validation, Wings synchronization, variable handling, and allocation management.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

Request body: [`ServerUpdate`](https://featherpanel.com/docs/api/schemas/#schema-serverupdate) (application/json)

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `node_id` | integer | no | Node ID |
| `name` | string | no | Server name |
| `description` | string | no | Server description |
| `owner_id` | integer | no | Owner user ID |
| `memory` | integer | no | Memory limit in MB |
| `swap` | integer | no | Swap limit in MB (-1 = unlimited, 0 = disabled) |
| `disk` | integer | no | Disk limit in MB |
| `io` | integer | no | IO limit |
| `cpu` | integer | no | CPU limit percentage |
| `allocation_id` | integer | no | Allocation ID |
| `realms_id` | integer | no | Realm ID |
| `spell_id` | integer | no | Spell ID |
| `startup` | string | no | Server startup command |
| `image` | string | no | Server Docker image |
| `status` | string | no | Server status |
| `allocation_limit` | integer | no | Allocation limit |
| `database_limit` | integer | no | Database limit |
| `backup_limit` | integer | no | Backup limit |
| `external_id` | string | no | External ID |
| `threads` | string | no | Specific CPU threads this process can run on. Single number, comma list, or ranges like 0,1,3 or 0-1,3 |
| `skip_scripts` | boolean | no | Skip scripts flag |
| `show_on_status` | boolean | no | Whether this server appears on the public status page |
| `auto_start` | boolean | no | Automatically start this server after the node reconnects (default off) |
| `auto_start_delay` | integer | no | Extra seconds to wait before auto-starting this server after reconnect |
| `oom_disabled` | boolean | no | OOM disabled flag |
| `variables` | object | no | Server variables as key-value pairs |
| `mount_ids` | integer\[\] | no | Optional: replace Wings bind mounts for this server |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `server` | object |  |

```bash
curl -X PATCH "$PANEL_URL/api/admin/servers/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"node_id":0,"name":"","description":"","owner_id":0,"memory":0,"swap":0,"disk":0,"io":0,"cpu":0,"allocation_id":0,"realms_id":0,"spell_id":0,"startup":"","image":"","status":"","allocation_limit":0,"database_limit":0,"backup_limit":0,"external_id":"","threads":"","skip_scripts":false,"show_on_status":false,"auto_start":false,"auto_start_delay":0,"oom_disabled":false,"variables":{},"mount_ids":[]}'
```

Plugin events: [`featherpanel:server:reinstall`](https://featherpanel.com/docs/plugins/events/server/#server-reinstalled), [`featherpanel:server:update`](https://featherpanel.com/docs/plugins/events/server/#server-updated)

Responses: `200` Server updated successfully · `400` Bad request - Invalid JSON, invalid data types, validation errors, invalid foreign keys, or allocation in use · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `500` Internal server error - Failed to update server, Wings sync error, or variables update failed

### DELETE `/api/admin/servers/{id}`

- Auth: Admin
- Permission: `admin.servers.delete`
- Route name: `admin-servers-delete`
- Controller: [`ServersController::delete`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L96)

**Delete server** Permanently delete a server from the database and Wings daemon. Unclaims allocation and sends notification email to the server owner.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |

```bash
curl -X DELETE "$PANEL_URL/api/admin/servers/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Plugin events: [`featherpanel:server:delete`](https://featherpanel.com/docs/plugins/events/server/#server-deleted)

Responses: `200` Server deleted successfully · `400` Bad request - Invalid server configuration · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `422` Unprocessable Entity - Invalid server data · `500` Internal server error - Failed to delete server or Wings error

### DELETE `/api/admin/servers/{id}/hard`

- Auth: Admin
- Permission: `admin.servers.delete`
- Route name: `admin-servers-hard-delete`
- Controller: [`ServersController::hardDelete`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L111)

**Hard delete server** Force delete a server from the database only, without contacting Wings. Use this only when Wings is unreachable or the node is dead. This will NOT remove server files from Wings.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |

```bash
curl -X DELETE "$PANEL_URL/api/admin/servers/$ID/hard" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Plugin events: [`featherpanel:server:delete`](https://featherpanel.com/docs/plugins/events/server/#server-deleted)

Responses: `200` Server hard deleted successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `500` Internal server error - Failed to delete server from database

### PUT `/api/admin/servers`

- Auth: Admin
- Permission: `admin.servers.create`
- Route name: `admin-servers-create`
- Controller: [`ServersController::create`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L126)

**Create new server** Create a new server with comprehensive validation, Wings integration, variable handling, and email notifications.

Request body: [`ServerCreate`](https://featherpanel.com/docs/api/schemas/#schema-servercreate) (application/json)

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `node_id` | integer | yes | Node ID |
| `name` | string | yes | Server name |
| `description` | string | no | Server description (optional) |
| `owner_id` | integer | yes | Owner user ID |
| `memory` | integer | yes | Memory limit in MB |
| `swap` | integer | yes | Swap limit in MB (-1 = unlimited, 0 = disabled) |
| `disk` | integer | yes | Disk limit in MB |
| `io` | integer | yes | IO limit |
| `cpu` | integer | yes | CPU limit percentage |
| `allocation_id` | integer | yes | Allocation ID |
| `realms_id` | integer | yes | Realm ID |
| `spell_id` | integer | yes | Spell ID |
| `startup` | string | yes | Server startup command |
| `image` | string | yes | Server Docker image |
| `status` | string | no | Server status |
| `allocation_limit` | integer | no | Allocation limit |
| `database_limit` | integer | no | Database limit |
| `backup_limit` | integer | no | Backup limit |
| `external_id` | string | no | External ID |
| `threads` | string | no | Specific CPU threads this process can run on. Single number, comma list, or ranges like 0,1,3 or 0-1,3 |
| `skip_scripts` | boolean | no | Skip scripts flag |
| `show_on_status` | boolean | no | Whether this server appears on the public status page |
| `auto_start` | boolean | no | Automatically start this server after the node reconnects (default off) |
| `auto_start_delay` | integer | no | Extra seconds to wait before auto-starting this server after reconnect |
| `oom_disabled` | boolean | no | OOM disabled flag |
| `variables` | object | no | Server variables as key-value pairs |
| `mount_ids` | integer\[\] | no | Optional: Wings bind mounts to attach (validated against node/spell rules) |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `server_id` | integer | ID of the created server |

```bash
curl -X PUT "$PANEL_URL/api/admin/servers" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"node_id":0,"name":"","description":"","owner_id":0,"memory":0,"swap":0,"disk":0,"io":0,"cpu":0,"allocation_id":0,"realms_id":0,"spell_id":0,"startup":"","image":"","status":"","allocation_limit":0,"database_limit":0,"backup_limit":0,"external_id":"","threads":"","skip_scripts":false,"show_on_status":false,"auto_start":false,"auto_start_delay":0,"oom_disabled":false,"variables":{},"mount_ids":[]}'
```

Plugin events: [`featherpanel:server:created`](https://featherpanel.com/docs/plugins/events/server/#server-created)

Responses: `201` Server created successfully · `400` Bad request - Invalid JSON, missing required fields, invalid data types, validation errors, invalid foreign keys, or allocation in use · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` User, node, allocation, realm, or spell not found · `422` Unprocessable Entity - Missing required spell variables or Wings validation failed · `500` Internal server error - Failed to create server, Wings error, or email sending failed

### GET `/api/admin/servers/owner/{ownerId}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-by-owner`
- Controller: [`ServersController::getByOwner`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L136)

**Get servers by owner** Retrieve all servers owned by a specific user.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ownerId` | path | integer | yes | Owner user ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/owner/$OWNER_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers retrieved successfully · `400` Bad request - Invalid owner ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/node/{nodeId}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-by-node`
- Controller: [`ServersController::getByNode`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L150)

**Get servers by node** Retrieve all servers running on a specific node.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `nodeId` | path | integer | yes | Node ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/node/$NODE_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers retrieved successfully · `400` Bad request - Invalid node ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/realm/{realmId}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-by-realm`
- Controller: [`ServersController::getByRealm`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L164)

**Get servers by realm** Retrieve all servers belonging to a specific realm.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `realmId` | path | integer | yes | Realm ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/realm/$REALM_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers retrieved successfully · `400` Bad request - Invalid realm ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/spell/{spellId}`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-by-spell`
- Controller: [`ServersController::getBySpell`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L178)

**Get servers by spell** Retrieve all servers using a specific spell.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `spellId` | path | integer | yes | Spell ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/spell/$SPELL_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers retrieved successfully · `400` Bad request - Invalid spell ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/{id}/with-relations`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-with-relations`
- Controller: [`ServersController::getWithRelations`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L192)

**Get server with relations** Retrieve a specific server with all its related data including owner, node, realm, spell, and allocation information.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `server` | Server |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/with-relations" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server with relations retrieved successfully · `400` Bad request - Invalid server ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found

### GET `/api/admin/servers/with-relations`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-all-with-relations`
- Controller: [`ServersController::getAllWithRelations`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L206)

**Get all servers with relations** Retrieve all servers with their related data including owner, node, realm, spell, and allocation information.

| Response `data` field | Type | Description |
| --- | --- | --- |
| `servers` | Server\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/with-relations" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Servers with relations retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/{id}/variables`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-variables`
- Controller: [`ServersController::getServerVariables`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L215)

**Get server variables** Retrieve all variables for a specific server with their spell variable definitions and metadata.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `variables` | ServerVariable\[\] |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/variables" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server variables retrieved successfully · `400` Bad request - Invalid server ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found

### POST `/api/admin/servers/{id}/custom-variables`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-custom-variable-create`
- Controller: [`ServersController::createCustomVariable`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L230)

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | \- | yes |  |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/custom-variables" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

### DELETE `/api/admin/servers/{id}/custom-variables/{variableId}`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-custom-variable-delete`
- Controller: [`ServersController::deleteCustomVariable`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L246)

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | \- | yes |  |
| `variableId` | path | \- | yes |  |

```bash
curl -X DELETE "$PANEL_URL/api/admin/servers/$ID/custom-variables/$VARIABLE_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

### POST `/api/admin/servers/{id}/suspend`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-suspend`
- Controller: [`ServersController::suspend`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L267)

**Suspend server** Suspend a server by killing it in Wings and updating the suspended status. Sends notification email to the server owner.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/suspend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Plugin events: [`featherpanel:server:suspended`](https://featherpanel.com/docs/plugins/events/server/#server-suspended)

Responses: `200` Server suspended successfully · `400` Bad request - Invalid server configuration · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `422` Unprocessable Entity - Invalid server data · `500` Internal server error - Failed to suspend server or Wings error

### POST `/api/admin/servers/{id}/warn`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-warn`
- Controller: [`ServersController::warn`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L284)

**Send warning to server owner** Create an in-panel warning for the server owner (optionally emailed), e.g. high CPU stop notices.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | yes | Warning title |
| `message` | string | yes | Warning message (markdown supported) |
| `type` | string | no | Notification type (default: warning) |
| `send_email` | boolean | no | Also email the server owner (default: true) |
| `is_dismissible` | boolean | no | Whether the warning can be dismissed (default: true) |
| `is_sticky` | boolean | no | Whether the warning stays until closed (default: false) |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `notification_id` | integer |  |
| `emailed` | boolean |  |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/warn" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"title":"","message":"","type":"","send_email":false,"is_dismissible":false,"is_sticky":false}'
```

Responses: `201` Warning sent successfully · `400` Bad request · `401` Unauthorized · `403` Forbidden · `404` Server not found · `500` Internal server error

### POST `/api/admin/servers/{id}/unsuspend`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-unsuspend`
- Controller: [`ServersController::unsuspend`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L301)

**Unsuspend server** Unsuspend a server by updating the suspended status. Sends notification email to the server owner.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/unsuspend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Plugin events: [`featherpanel:server:unsuspended`](https://featherpanel.com/docs/plugins/events/server/#server-unsuspended)

Responses: `200` Server unsuspended successfully · `400` Bad request - Invalid server ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `500` Internal server error - Failed to unsuspend server

### POST `/api/admin/servers/{id}/reconcile`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-reconcile`
- Controller: [`ServersController::reconcile`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L318)

**Force runtime reconcile** Asks Wings to recover a server stuck in starting/stopping or desynchronized from Docker/containerd.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/reconcile" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Reconciliation completed · `404` Server or node not found · `409` Server is busy (install/transfer/restore) · `500` Wings reconciliation failed

### GET `/api/admin/servers/{id}/runtime`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-runtime`
- Controller: [`ServersController::runtime`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L335)

**Get Wings runtime health** Returns the live Wings process state and runtime health (Docker desync detection).

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/runtime" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Runtime health · `404` Server or node not found · `500` Failed to query Wings

### GET `/api/admin/server-activities`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-server-activities`
- Controller: [`ServerActivitiesController::index`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerActivitiesController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L352)

**Get all server activities** Retrieve a paginated list of all server activities with optional filtering by server, node, user, and search functionality.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `page` | query | integer | no | Page number for pagination |
| `limit` | query | integer | no | Number of records per page |
| `search` | query | string | no | Search term to filter activities by description or type |
| `server_id` | query | integer | no | Filter activities by server ID |
| `node_id` | query | integer | no | Filter activities by node ID |
| `user_id` | query | integer | no | Filter activities by user ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `activities` | ServerActivity\[\] |  |
| `pagination` | ServerActivityPagination |  |
| `search` | object |  |

```bash
curl -X GET "$PANEL_URL/api/admin/server-activities" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server activities retrieved successfully · `401` Unauthorized · `403` Forbidden - Insufficient permissions

### GET `/api/admin/servers/{id}/activities`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-server-activities-by-server`
- Controller: [`ServerActivitiesController::byServer`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerActivitiesController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L362)

**Get server activities by server ID** Retrieve a paginated list of activities for a specific server with optional search functionality.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |
| `page` | query | integer | no | Page number for pagination |
| `limit` | query | integer | no | Number of records per page |
| `search` | query | string | no | Search term to filter activities by description or type |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `activities` | ServerActivity\[\] |  |
| `pagination` | ServerActivityPagination |  |
| `search` | object |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/activities" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server activities retrieved successfully · `400` Bad request - Invalid server ID · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found

### GET `/api/admin/servers/{id}/allocations`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-allocations`
- Controller: [`ServerAllocationsController::getServerAllocations`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerAllocationsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L378)

**Get server allocations (Admin)** Retrieve all allocations assigned to a specific server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | \- | yes |  |
| `serverId` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `success` | boolean |  |
| `data` | object |  |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/allocations" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Server allocations retrieved successfully · `404` Server not found · `500` Internal server error

### POST `/api/admin/servers/{id}/allocations`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-allocations-assign`
- Controller: [`ServerAllocationsController::assignAllocation`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerAllocationsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L394)

**Assign allocation to server (Admin)** Assign a specific allocation to a server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | \- | yes |  |
| `serverId` | path | integer | yes | Server ID |

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `allocation_id` | integer | no | Allocation ID to assign |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `success` | boolean |  |
| `message` | string |  |
| `data` | object |  |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/allocations" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"allocation_id":0}'
```

Responses: `200` Allocation assigned successfully · `400` Bad request · `404` Server or allocation not found · `500` Internal server error

### DELETE `/api/admin/servers/{serverId}/allocations/{allocationId}`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-allocations-delete`
- Controller: [`ServerAllocationsController::deleteAllocation`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerAllocationsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L411)

**Delete server allocation (Admin)** Remove an allocation from a server. Cannot delete the primary allocation.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serverId` | path | integer | yes | Server ID |
| `allocationId` | path | integer | yes | Allocation ID to delete |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `success` | boolean |  |
| `message` | string |  |

```bash
curl -X DELETE "$PANEL_URL/api/admin/servers/$SERVER_ID/allocations/$ALLOCATION_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Allocation deleted successfully · `400` Cannot delete primary allocation · `404` Server or allocation not found · `500` Internal server error

### POST `/api/admin/servers/{serverId}/allocations/{allocationId}/primary`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-allocations-set-primary`
- Controller: [`ServerAllocationsController::setPrimaryAllocation`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServerAllocationsController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L433)

**Set primary allocation (Admin)** Set a specific allocation as the primary allocation for the server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `serverId` | path | integer | yes | Server ID |
| `allocationId` | path | integer | yes | Allocation ID to set as primary |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `success` | boolean |  |
| `message` | string |  |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$SERVER_ID/allocations/$ALLOCATION_ID/primary" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Primary allocation updated successfully · `400` Bad request · `404` Server or allocation not found · `500` Internal server error

### POST `/api/admin/servers/{id}/transfer`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-transfer-initiate`
- Controller: [`ServersController::initiateTransfer`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L455)

**Initiate server transfer** Start a transfer of a server from its current node to a destination node. Generates a transfer JWT token and instructs the source node to begin the transfer process.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `destination_node_id` | integer | yes | Destination node ID |
| `destination_allocation_id` | integer | no | Destination allocation ID (optional) |
| `backups` | string (uuid)\[\] | no | Optional backup UUIDs to transfer (Calagopus) |
| `include_all_backups` | boolean | no | Include all successful server backups when no explicit backups are supplied |
| `delete_backups` | boolean | no | Delete transferred backups on the source node (Calagopus) |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |
| `transfer_token` | string | Transfer JWT token |

```bash
curl -X POST "$PANEL_URL/api/admin/servers/$ID/transfer" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"destination_node_id":0,"destination_allocation_id":0,"backups":[],"include_all_backups":false,"delete_backups":false}'
```

Responses: `200` Server transfer initiated successfully · `400` Bad request - Invalid destination node, server already transferring, or same source and destination · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found or destination node not found · `500` Internal server error - Failed to initiate transfer or Wings error

### GET `/api/admin/servers/{id}/transfer`

- Auth: Admin
- Permission: `admin.servers.view`
- Route name: `admin-servers-transfer-status`
- Controller: [`ServersController::getTransferStatus`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L472)

**Get server transfer status** Retrieve the current status of a server transfer including progress, start time, and any error messages.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `status` | string | Transfer status |
| `progress` | number (float) | Transfer progress percentage |
| `started_at` | string | Transfer start time |
| `completed_at` | string | Transfer completion time |
| `error` | string | Error message if transfer failed |

```bash
curl -X GET "$PANEL_URL/api/admin/servers/$ID/transfer" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Transfer status retrieved successfully · `400` Bad request - Server is not being transferred · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `500` Internal server error - Failed to get transfer status

### DELETE `/api/admin/servers/{id}/transfer`

- Auth: Admin
- Permission: `admin.servers.edit`
- Route name: `admin-servers-transfer-cancel`
- Controller: [`ServersController::cancelTransfer`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/ServersController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/servers.php#L489)

**Cancel server transfer** Cancel an in-progress server transfer. This will revert the server to its original node and release any allocated resources on the destination node.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Server ID |

| Response `data` field | Type | Description |
| --- | --- | --- |
| `message` | string | Success message |

```bash
curl -X DELETE "$PANEL_URL/api/admin/servers/$ID/transfer" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Plugin events: [`featherpanel:server:transfer:cancelled`](https://featherpanel.com/docs/plugins/events/server/#server-transfer-cancelled)

Responses: `200` Transfer cancelled successfully · `400` Bad request - Server is not being transferred · `401` Unauthorized · `403` Forbidden - Insufficient permissions · `404` Server not found · `500` Internal server error - Failed to cancel transfer
