Virtualisation
Proxmox VE and Proxmox Backup Server hosts, their guests and backup coverage, and links between a PVE host and the PBS that backs it up.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm/hypervisor-hosts | Tenant-wide list of devices flagged as Proxmox/PBS hosts, for the link picker on a device's Hypervisor tab and the site Backups tab |
| GET | /v2/app/rmm/hypervisor-links | List PVE ↔ PBS links |
| POST | /v2/app/rmm/hypervisor-links | Link a PVE host to its backup server |
| DELETE | /v2/app/rmm/hypervisor-links/:id | Remove a PVE ↔ PBS link |
| GET | /v2/app/rmm/virtualisation | Everything RMM2's Virtualisation view needs in one call: each Proxmox host with its live guests (status, CPU, RAM from the agent's inventory) and each guest'… |
#Tenant-wide list of devices flagged as Proxmox/PBS hosts, for the link picker on a device's Hypervisor tab and the site Backups tab
/v2/app/rmm/hypervisor-hostsTenant-wide list of devices flagged as Proxmox/PBS hosts, for the link picker on a device's Hypervisor tab and the site Backups tab. Deliberately cross-site (see note above).
- Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-hosts- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Response 200
| Field | Type | Description |
|---|---|---|
proxmox | array of any | |
pbs | array of any |
Example response
{
"proxmox": [],
"pbs": []
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-hosts' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-hosts', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-hosts",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-hosts' -Headers $headers#List PVE ↔ PBS links
/v2/app/rmm/hypervisor-links- Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Response 200
| Field | Type | Description |
|---|---|---|
links | array of any |
Example response
{
"links": []
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links' -Headers $headers#Link a PVE host to its backup server
/v2/app/rmm/hypervisor-links- Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Request body JSON
| Name | Type | Description |
|---|---|---|
proxmox_device_idrequired | integer | The Proxmox VE host's device. |
pbs_device_idrequired | integer | The Proxmox Backup Server's device. |
Response 201
| Field | Type | Description |
|---|---|---|
message | string |
Example response
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 400 | proxmox_device_id and pbs_device_id are required |
| 400 | Target device is not a Proxmox host |
| 400 | Target device is not a PBS host |
| 404 | User not found |
| 404 | Device not found |
| 409 | These hosts are already linked |
Example request
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links' \
-H "X-API-Key: $BRAMBLE_KEY" \
-H "Content-Type: application/json" \
-d '{"proxmox_device_id":7,"pbs_device_id":7}'const res = await fetch('https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links', {
method: 'POST',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"proxmox_device_id":7,"pbs_device_id":7}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
json={"proxmox_device_id":7,"pbs_device_id":7},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
$body = '{"proxmox_device_id":7,"pbs_device_id":7}'
Invoke-RestMethod -Method POST -Uri 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links' -Headers $headers -ContentType 'application/json' -Body $body#Remove a PVE ↔ PBS link
/v2/app/rmm/hypervisor-links/:id- Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links/:id- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | integer |
Response 200
| Field | Type | Description |
|---|---|---|
message | string |
Example response
{
"message": "Saved"
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
| 404 | Link not found |
Example request
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links/42' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links/42', {
method: 'DELETE',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.delete(
"https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links/42",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method DELETE -Uri 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/hypervisor-links/42' -Headers $headers#Everything RMM2's Virtualisation view needs in one call: each Proxmox host with its live guests (status, CPU, RAM from the agent's inventory) and each guest'…
/v2/app/rmm/virtualisationEverything RMM2's Virtualisation view needs in one call: each Proxmox host with its live guests (status, CPU, RAM from the agent's inventory) and each guest's backup posture (same computeGuestBackupPosture as backup-coverage), plus every PBS host as a backup target with its datastores. Tenant-wide unless site_id is given — a PBS host is always included when a listed PVE host links to it, wherever it lives.
Guests are matched to the RMM device running inside them so the UI can open the agent's own device page: by NIC MAC first (the PVE agent reports each guest's MACs from its config since 6.12.0; every agent reports its own interfaces' MACs), then by name (guest name == the device's hostname or display name, case-insensitive, ignoring any domain suffix). An ambiguous MAC or name matches nothing rather than the wrong device.
Each host also carries issues — its health (agent >= 6.12.0) reduced to error/warn/info lines by summariseProxmoxHealth.
- Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/virtualisation- Requires
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.
Query parameters
| Name | Type | Description |
|---|---|---|
site_id | number |
Response 200
| Field | Type | Description |
|---|---|---|
hosts | array of any | |
pbs | array of any | |
summary | any |
Example response
{
"hosts": [],
"pbs": [],
"summary": null
}Errors
| Status | Message |
|---|---|
| 404 | User not found |
Example request
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/virtualisation' \
-H "X-API-Key: $BRAMBLE_KEY"const res = await fetch('https://<your-org>.brambleit.cloud/api/v2/app/rmm/virtualisation', {
method: 'GET',
headers: { 'X-API-Key': process.env.BRAMBLE_KEY },
});
const data = await res.json();import os, requests
r = requests.get(
"https://<your-org>.brambleit.cloud/api/v2/app/rmm/virtualisation",
headers={"X-API-Key": os.environ["BRAMBLE_KEY"]},
)
r.raise_for_status()
data = r.json()$headers = @{ 'X-API-Key' = $env:BRAMBLE_KEY }
Invoke-RestMethod -Method GET -Uri 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/virtualisation' -Headers $headersWas this page helpful?
Thanks for your feedback.