View .md

VM Instances endpoints (Admin API)

28 FeatherPanel Admin API endpoints from admin/vm-instances.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Last synced from FeatherPanel 15b94e9 on .

On this page

Defined in backend/app/routes/admin/vm-instances.php. Authentication used here: Admin. 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/admin/vm-instances

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-indexController: VmInstancesController::indexroute source

List VM instances Get a paginated list of VM instances with optional search.

ParameterInTypeRequiredDescription
pagequeryintegernoPage number
limitqueryintegernoRecords per page
searchquerystringnoSearch term
Response data fieldTypeDescription
instancesVmInstance[]
status_countsobject
paginationVmInstancePagination
curl -X GET "$PANEL_URL/api/admin/vm-instances" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 VM instances retrieved successfully · 401 Unauthorized · 403 Forbidden

PUT/api/admin/vm-instances

Auth: AdminPermission: admin.nodes.createRoute name: admin-vm-instances-createController: VmInstancesController::createroute source

Create new VM instance Create a new VM instance (server) on a Proxmox node. Returns 202 with creation_id. Poll creation-status until active or failed.

Request body: VmInstanceCreate (application/json)

Body fieldTypeRequiredDescription
vm_node_idintegeryesVM Node ID
template_idintegeryesTemplate ID
pve_nodestringnoExplicit Proxmox cluster node to place the VM on
memoryintegernoMemory in MB
cpusintegernoNumber of CPU sockets
coresintegernoNumber of CPU cores per socket
diskintegernoDisk size in GB
storagestringnoStorage name
bridgestringnoNetwork bridge
on_bootintegernoStart on boot
hostnamestringnoHostname
vm_ip_idintegernoSpecific IP ID to assign
networksobject[]noList of network IP assignments for this VM
user_uuidstringnoUser UUID
notesstringnoNotes
ci_userstringnoCloud-init user (required for KVM/QEMU)
ci_passwordstringnoCloud-init password (required for KVM/QEMU). Not used for LXC.
Response data fieldTypeDescription
creation_idstring
messagestring
curl -X PUT "$PANEL_URL/api/admin/vm-instances" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"vm_node_id":0,"template_id":0,"pve_node":"","memory":0,"cpus":0,"cores":0,"disk":0,"storage":"","bridge":"","on_boot":0,"hostname":"","vm_ip_id":0,"networks":[],"user_uuid":"","notes":"","ci_user":"","ci_password":""}'

Plugin events: featherpanel:vds:created

Responses: 202 VM creation started · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM node or template not found · 500 Internal server error

GET/api/admin/vm-instances/creation-status/{creationId}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-creation-statusController: VmInstancesController::creationStatusroute source

Poll VM creation status Poll status of an async VM creation. Returns status cloning, active, or failed.

ParameterInTypeRequiredDescription
creationIdpathstringyes
Response data fieldTypeDescription
statusstring
messagestring
errorstring
instanceVmInstance
ci_userstring
ci_passwordstring
curl -X GET "$PANEL_URL/api/admin/vm-instances/creation-status/$CREATION_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Creation status · 400 Missing creation_id · 401 Unauthorized · 404 Creation not found or already completed · 500 Internal server error

GET/api/admin/vm-instances/task-status/{taskId}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-task-statusController: VmInstancesController::taskStatusroute source
ParameterInTypeRequiredDescription
taskIdpath-yes
curl -X GET "$PANEL_URL/api/admin/vm-instances/task-status/$TASK_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

GET/api/admin/vm-instances/{id}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-showController: VmInstancesController::showroute source

Get VM instance Get a single VM instance by ID.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
instanceVmInstance
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 VM instance retrieved successfully · 401 Unauthorized · 403 Forbidden · 404 VM instance not found

PATCH/api/admin/vm-instances/{id}

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-updateController: VmInstancesController::updateroute source

Update VM instance Update instance: hostname, notes, user_uuid, vm_ip_id, memory, cpus, cores, on_boot, networks.

ParameterInTypeRequiredDescription
idpathintegeryes

Request body: VmInstanceUpdate (application/json)

Body fieldTypeRequiredDescription
hostnamestringnoHostname
notesstringnoNotes
user_uuidstringnoUser UUID
vm_ip_idintegernoVM IP ID
memoryintegernoMemory in MB
cpusintegernoNumber of CPUs
coresintegernoNumber of Cores
on_bootbooleannoStart on boot
networksobject[]noList of networks (LXC)
nameserverstringnoNameserver (LXC)
searchdomainstringnoSearch domain (LXC)
biosstringnoQEMU BIOS mode: seabios or ovmf (EFI)
efi_enabledbooleannoEnable EFI disk (QEMU only)
efi_storagestringnoStorage for EFI disk (QEMU only)
tpm_enabledbooleannoEnable TPM state disk (QEMU only)
tpm_storagestringnoStorage for TPM state disk (QEMU only)
Response data fieldTypeDescription
instanceVmInstance
curl -X PATCH "$PANEL_URL/api/admin/vm-instances/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"","notes":"","user_uuid":"","vm_ip_id":0,"memory":0,"cpus":0,"cores":0,"on_boot":false,"networks":[],"nameserver":"","searchdomain":"","bios":"","efi_enabled":false,"efi_storage":"","tpm_enabled":false,"tpm_storage":""}'

Plugin events: featherpanel:vds:updated

Responses: 200 VM instance updated successfully · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Proxmox update failed

GET/api/admin/vm-instances/{id}/activities

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-activitiesController: VmInstancesController::activitiesroute source

Get VM instance activities GET activity/task history for this VM instance.

ParameterInTypeRequiredDescription
idpathintegeryes
limitqueryintegerno
Response data fieldTypeDescription
activitiesobject[]
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID/activities" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Activities fetched successfully · 401 Unauthorized · 403 Forbidden · 404 VM instance not found

GET/api/admin/vm-instances/{id}/config

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-configController: VmInstancesController::getConfigroute source

Get VM instance config GET Proxmox config for this instance.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
configobject
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID/config" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Config fetched successfully · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Proxmox error

GET/api/admin/vm-instances/{id}/status

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-statusController: VmInstancesController::getStatusroute source

Get VM instance status GET current VM/container status and resource usage from Proxmox.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
statusobject
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID/status" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Status fetched successfully · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Proxmox error

GET/api/admin/vm-instances/{id}/vnc-ticket

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-vnc-ticketController: VmInstancesController::vncTicketroute source

Get VNC ticket GET VNC console ticket for QEMU VMs and LXC containers.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
ticketstring
portinteger
nodestring
vmidinteger
hoststring
port_apiinteger
wss_urlstring
pve_redirect_urlstring
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID/vnc-ticket" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:console:access

Responses: 200 VNC ticket created · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 VNC proxy failed

POST/api/admin/vm-instances/{id}/resize-disk

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-resize-diskController: VmInstancesController::resizeDiskroute source

Resize VM/container disk Resize a disk on an LXC container or QEMU VM. Body must include "disk" and "size".

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
diskstringnoDisk name e.g. rootfs or mp0
sizestringnoSize to add or absolute e.g. +5G or 20G
Response data fieldTypeDescription
messagestring
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/resize-disk" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"disk":"","size":""}'

Responses: 200 Disk resized successfully · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Resize failed

POST/api/admin/vm-instances/{id}/disks

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-create-diskController: VmInstancesController::createDiskroute source

Create VM/container disk Create an additional disk: LXC mount point or QEMU disk.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
storagestringnoStorage name e.g. local-lvm
size_gbintegernoSize in GB
pathstringnoMount point path e.g. /mnt/data
Response data fieldTypeDescription
diskstring
config_keystring
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/disks" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"storage":"","size_gb":0,"path":""}'

Responses: 200 Disk added successfully · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Proxmox update failed

DELETE/api/admin/vm-instances/{id}/disks/{key}

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-delete-diskController: VmInstancesController::deleteDiskroute source

Delete VM/container disk DELETE LXC mount point or QEMU disk.

ParameterInTypeRequiredDescription
idpathintegeryes
keypathstringyes
Response data fieldTypeDescription
deletedstring
curl -X DELETE "$PANEL_URL/api/admin/vm-instances/$ID/disks/$KEY" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Disk removed successfully · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error · 503 Proxmox update failed

POST/api/admin/vm-instances/{id}/power

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-powerController: VmInstancesController::powerroute source

Power action Power action: start | stop | reboot.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
actionstringno
Response data fieldTypeDescription
instanceVmInstance
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/power" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"action":""}'

Plugin events: featherpanel:vds:power:action

Responses: 200 Power action completed · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance not found · 500 Internal server error / Power failed

POST/api/admin/vm-instances/{id}/reinstall

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-reinstallController: VmInstancesController::reinstallroute source

Start async VM reinstall Kicks off a full reinstall by cloning a fresh VM from the original template. Returns 202 with a reinstall_id immediately. Poll reinstall-status/{reinstallId} until status is active or failed.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
reinstall_idstring
messagestring
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/reinstall" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:reinstall

Responses: 202 Reinstall clone started · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance or template not found · 500 Internal server error

GET/api/admin/vm-instances/reinstall-status/{reinstallId}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-reinstall-statusController: VmInstancesController::reinstallStatusroute source
ParameterInTypeRequiredDescription
reinstallIdpath-yes
curl -X GET "$PANEL_URL/api/admin/vm-instances/reinstall-status/$REINSTALL_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

GET/api/admin/vm-instances/{id}/backups

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-backups-listController: VmInstancesController::listBackupsroute source

List VM backups List vzdump backups for a specific VM or container on its Proxmox node.

ParameterInTypeRequiredDescription
idpathintegeryes
Response data fieldTypeDescription
backupsobject[]
backup_limitinteger
storagesstring[]Available backup storages from Proxmox
curl -X GET "$PANEL_URL/api/admin/vm-instances/$ID/backups" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Backups listed · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance or node not found · 500 Proxmox error

POST/api/admin/vm-instances/{id}/backups/{backupId}/recover

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-backup-recoverController: VmInstancesController::recoverBackuproute source
ParameterInTypeRequiredDescription
idpath-yes
backupIdpath-yes
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/backups/$BACKUP_ID/recover" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

POST/api/admin/vm-instances/{id}/backups

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-backup-createController: VmInstancesController::createBackuproute source

Create VM backup Start an async vzdump backup for a VM or container. Returns 202 with backup_id; poll backup-status until done or failed.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
storagestringnoProxmox storage for the backup (optional, defaults to first backup-capable storage)
compressstringnoCompression method (zstd, lzo, gzip, 0)
modestringnoBackup mode (snapshot, suspend, stop)
Response data fieldTypeDescription
backup_idstring
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/backups" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"storage":"","compress":"","mode":""}'

Plugin events: featherpanel:vds:backup:create

Responses: 202 Backup started · 400 Bad request · 401 Unauthorized · 403 Forbidden · 404 VM instance or node not found · 422 Backup limit reached · 500 Proxmox error

GET/api/admin/vm-instances/backup-status/{backupId}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-backup-statusController: VmInstancesController::backupStatusroute source

Poll VM backup status Poll status of an async vzdump backup. Returns running, done, or failed.

ParameterInTypeRequiredDescription
backupIdpathstringyes
Response data fieldTypeDescription
statusstring
errorstring
curl -X GET "$PANEL_URL/api/admin/vm-instances/backup-status/$BACKUP_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Backup status · 400 Missing or invalid backupId · 401 Unauthorized · 404 Backup task or instance not found · 500 Internal server error

DELETE/api/admin/vm-instances/{id}/backups

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-backup-deleteController: VmInstancesController::deleteBackupVolumeroute source

Delete VM backup Delete a single vzdump backup volume belonging to a VM or container.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
volidstringnoProxmox backup volume ID
storagestringnoProxmox storage name
curl -X DELETE "$PANEL_URL/api/admin/vm-instances/$ID/backups" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"volid":"","storage":""}'

Plugin events: featherpanel:vds:backup:delete

Responses: 200 Backup deleted · 400 Missing volid or storage · 401 Unauthorized · 403 Backup does not belong to this VM · 404 VM instance or node not found · 500 Proxmox error

POST/api/admin/vm-instances/{id}/backups/restore

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-restore-backupController: VmInstancesController::restoreBackuproute source

Restore VM from backup Start an async restore of a VM or container from a vzdump backup. Returns 202 with restore_id; poll restore-status until active or failed.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
volidstringnoProxmox backup volume ID
storagestringnoProxmox storage name
Response data fieldTypeDescription
restore_idstring
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/backups/restore" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"volid":"","storage":""}'

Plugin events: featherpanel:vds:backup:restore

Responses: 202 Restore started · 400 Missing volid or storage · 401 Unauthorized · 403 Forbidden · 404 VM instance or node not found · 500 Proxmox error

GET/api/admin/vm-instances/restore-status/{restoreId}

Auth: AdminPermission: admin.nodes.viewRoute name: admin-vm-instances-restore-statusController: VmInstancesController::restoreBackupStatusroute source

Poll VM restore status Poll status of an async restore from backup. Returns restoring, active, or failed.

ParameterInTypeRequiredDescription
restoreIdpathstringyes
Response data fieldTypeDescription
statusstring
instanceVmInstance
errorstring
curl -X GET "$PANEL_URL/api/admin/vm-instances/restore-status/$RESTORE_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Responses: 200 Restore status · 400 Missing or invalid restoreId · 401 Unauthorized · 404 Restore task or instance not found · 500 Internal server error

PATCH/api/admin/vm-instances/{id}/backup-limit

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-backup-limitController: VmInstancesController::setBackupLimitroute source

Set VM backup limit Update the maximum number of backups allowed for a VM instance.

ParameterInTypeRequiredDescription
idpathintegeryes
Body fieldTypeRequiredDescription
limitintegernoMaximum number of backups (0 to 100)
Response data fieldTypeDescription
backup_limitinteger
curl -X PATCH "$PANEL_URL/api/admin/vm-instances/$ID/backup-limit" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"limit":0}'

Plugin events: featherpanel:vds:updated

Responses: 200 Backup limit updated · 400 Invalid limit · 401 Unauthorized · 404 VM instance not found · 500 Internal server error

POST/api/admin/vm-instances/{id}/suspend

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-suspendController: VmInstancesController::suspendroute source

Suspend VM instance Suspend a VM instance by stopping it in Proxmox and updating the suspended status. Sends notification email to the VM owner.

ParameterInTypeRequiredDescription
idpathintegeryesVM Instance ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/suspend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:suspended

Responses: 200 VM instance suspended successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 VM instance not found · 500 Internal server error - Failed to suspend VM

POST/api/admin/vm-instances/{id}/unsuspend

Auth: AdminPermission: admin.nodes.editRoute name: admin-vm-instances-unsuspendController: VmInstancesController::unsuspendroute source

Unsuspend VM instance Unsuspend a VM instance by updating the suspended status. Sends notification email to the VM owner.

ParameterInTypeRequiredDescription
idpathintegeryesVM Instance ID
Response data fieldTypeDescription
messagestringSuccess message
curl -X POST "$PANEL_URL/api/admin/vm-instances/$ID/unsuspend" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:unsuspended

Responses: 200 VM instance unsuspended successfully · 401 Unauthorized · 403 Forbidden - Insufficient permissions · 404 VM instance not found · 500 Internal server error - Failed to unsuspend VM

DELETE/api/admin/vm-instances/{id}

Auth: AdminPermission: admin.nodes.deleteRoute name: admin-vm-instances-deleteController: VmInstancesController::deleteroute source

Delete VM instance Delete VM instance: stop on Proxmox (if running), delete from Proxmox, then remove from DB.

ParameterInTypeRequiredDescription
idpathintegeryes
curl -X DELETE "$PANEL_URL/api/admin/vm-instances/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:deleted

Responses: 200 VM instance deleted successfully · 401 Unauthorized · 403 Forbidden · 404 VM instance not found

DELETE/api/admin/vm-instances/{id}/hard

Auth: AdminPermission: admin.nodes.deleteRoute name: admin-vm-instances-hard-deleteController: VmInstancesController::hardDeleteroute source

Hard delete VM instance Remove the VM instance and panel records without contacting Proxmox. The VM and its files remain on the Proxmox host.

ParameterInTypeRequiredDescription
idpathintegeryes
curl -X DELETE "$PANEL_URL/api/admin/vm-instances/$ID/hard" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"

Plugin events: featherpanel:vds:deleted

Responses: 200 VM instance hard deleted successfully · 404 VM instance not found