Devices, sites & groups

Devices and how they're organised into sites and groups; a device's details, utilisation history and commands; running a command on a device.

MethodPathSummary
GET/v1/app/rmm/sitesList sites (legacy)
GET/v1/app/rmm/deivce/:deivceid:Get a device (legacy, misspelt path)
POST/v1/app/rmm/groupsList groups in a site (legacy)
POST/v1/app/rmm/devicesList devices in a group (legacy)
POST/v1/app/rmm/device/utilizationA device's utilisation (legacy)
POST/v1/app/rmm/device/commandSend a command to a device (legacy)
GET/v1/app/rmm/device/:idGet a device (legacy)
POST/v1/app/rmm/group/commands/listRecent commands in a group (legacy)
POST/v1/app/rmm/device/commands/listA device's recent commands (legacy)
GET/v2/app/rmm/sitesList sites and groups
POST/v2/app/rmm/groupsList groups in a site
GET/v2/app/rmm/groups/:siteIdFetch groups for a specific site (tenant-scoped)
POST/v2/app/rmm/devicesBody { site_id?, group_id?
GET/v2/app/rmm/device/:idGet a device
PUT/v2/app/rmm/device/:idUpdate editable device fields
DELETE/v2/app/rmm/device/:idRemove a device from the dashboard immediately (hidden from every list/ get below) but defer the actual hard delete: queue the uninstall script, mark the dev…
POST/v2/app/rmm/device/:id/proxmox-configSave a Proxmox VE host's API login
POST/v2/app/rmm/device/:id/pbs-configSave a Proxmox Backup Server's API login
GET/v2/app/rmm/device/:id/backup-statusComputeGuestBackupPosture / summariseProxmoxHealth live in services/proxmox-health.js (shared with the check engine)
GET/v2/app/rmm/sites/:siteId/backup-coverageCross-references this site's Proxmox hosts against their linked PBS servers (which may live in a different site — see note above) to compute per-guest backup…
POST/v2/app/rmm/device/:id/fetch-logQueues a fetch_log command — the agent reads its own local agent.log (tail, capped at ~200KB) and returns it as the command's stdout
POST/v2/app/rmm/device/:id/refreshQueues a refresh_data command — the agent immediately re-posts heartbeat/utilization/full inventory instead of waiting for its normal 60s/30min timers
POST/v2/app/rmm/device/maintenance/toggleToggle maintenance mode for a device
POST/v2/app/rmm/device/commandSend a command to a device
POST/v2/app/rmm/device/commands/listA device's recent commands and their results
GET/v2/app/rmm/device/commands/:id/outputOutput of a command archived to BRM-Blob (services/rmm-history.js); the list endpoints return output_archived = 1 and no output for those
GET/v2/app/rmm/device/utilization/historyUtilisation for a device over a date range (YYYY-MM-DD), including days archived to BRM-Blob
POST/v2/app/rmm/group/commands/listCommand log for RMM2's site/group selection: body { site_id?, group_id?, limit } (neither = every device)
GET/v2/app/rmm/enrollment/keysList enrolment keys (for install commands)

#List sites (legacy)

GET/v1/app/rmm/sites
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/sites
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Response 200

FieldTypeDescription
sitesarray of object
sites[].idinteger
sites[].tenant_idinteger
sites[].client_idinteger, or null
sites[].site_namestring
sites[].managed_tenant_idinteger, or null
Example response
JSON
{
  "sites": [
    {
      "id": 42,
      "tenant_id": 1,
      "client_id": 7,
      "site_name": "Example site name",
      "managed_tenant_id": 7
    }
  ]
}

Errors

StatusMessage
404User not found
404No Sites Found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/sites' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Get a device (legacy, misspelt path)

GET/v1/app/rmm/deivce/:deivceid:

Note

Kept for old pages. Use GET /v2/app/rmm/device/:id.

Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/deivce/:deivceid:
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
deivceidrequiredinteger

Response 200

FieldTypeDescription
sitesarray of object
sites[].idinteger
sites[].tenant_idinteger
sites[].client_idinteger, or null
sites[].site_namestring
sites[].managed_tenant_idinteger, or null
Example response
JSON
{
  "sites": [
    {
      "id": 42,
      "tenant_id": 1,
      "client_id": 7,
      "site_name": "Example site name",
      "managed_tenant_id": 7
    }
  ]
}

Errors

StatusMessage
404User not found
404No Sites Found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/deivce/1:' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List groups in a site (legacy)

POST/v1/app/rmm/groups
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/groups
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
site_idinteger

Response 200

FieldTypeDescription
groupsarray of object
groups[].idinteger
groups[].tenant_idinteger
groups[].site_idinteger
groups[].group_namestring
siteany
Example response
JSON
{
  "groups": [
    {
      "id": 42,
      "tenant_id": 1,
      "site_id": 7,
      "group_name": "Example group name"
    }
  ],
  "site": null
}

Errors

StatusMessage
404User not found
404No Sites Found
404No Groups Found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/groups' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site_id":7}'

#List devices in a group (legacy)

POST/v1/app/rmm/devices
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/devices
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
group_idintegerThe group.

Response 200

FieldTypeDescription
devicesarray of object
devices[].idinteger
devices[].tenant_idinteger
devices[].site_idinteger
devices[].group_idinteger, or null
devices[].device_idstring
devices[].hostnamestring, or null
devices[].display_namestring, or null
devices[].os_typestring: "windows" | "linux" | "mac" | "other"
devices[].device_typestring: "server" | "workstation" | "laptop" | "virtual" | "other"
devices[].maintenance_modeboolean
devices[].full_inventoryobject, or null
devices[].api_keystring, or null
devices[].last_seenstring (date-time)
devices[].agent_versionstring, or null
devices[].agent_callback_urlstring, or null
devices[].agent_cert_fingerprint_sha256string, or null
devices[].agent_cert_serialstring, or null
devices[].agent_cert_pemstring, or null
devices[].agent_cert_issued_atstring (date-time), or null
devices[].agent_cert_expires_atstring (date-time), or null
devices[].is_maintenanceboolean, or null
devices[].is_network_probeboolean
devices[].pending_removal_atstring (date-time), or null
devices[].pending_removal_command_idinteger, or null
groupany
Example response
JSON
{
  "devices": [
    {
      "id": 42,
      "tenant_id": 1,
      "site_id": 7,
      "group_id": 7,
      "device_id": "string",
      "hostname": "office-pc-01",
      "display_name": "Example display name",
      "os_type": "windows",
      "device_type": "server",
      "maintenance_mode": false,
      "full_inventory": {},
      "api_key": "…",
      "last_seen": "2026-11-12T09:30:00.000Z",
      "agent_version": "string",
      "agent_callback_url": "https://example.com/…",
      "agent_cert_fingerprint_sha256": "string",
      "agent_cert_serial": "string",
      "agent_cert_pem": "string",
      "agent_cert_issued_at": "2026-11-12T09:30:00.000Z",
      "agent_cert_expires_at": "2026-11-12T09:30:00.000Z",
      "is_maintenance": true,
      "is_network_probe": true,
      "pending_removal_at": "2026-11-12T09:30:00.000Z",
      "pending_removal_command_id": 7
    }
  ],
  "group": null
}

Errors

StatusMessage
404User not found
404No Devices Found
404No Groups Found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/devices' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"group_id":7}'

#A device's utilisation (legacy)

POST/v1/app/rmm/device/utilization
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/utilization
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idinteger

Response 200

FieldTypeDescription
utilizationarray of object
utilization[].cpu_loadnumber, or null
utilization[].ram_usagenumber, or null
utilization[].disk_usagenumber, or null
utilization[].network_usagenumber, or null
Example response
JSON
{
  "utilization": [
    {
      "cpu_load": 12.5,
      "ram_usage": 12.5,
      "disk_usage": 12.5,
      "network_usage": 12.5
    }
  ]
}

Errors

StatusMessage
404User not found
404No Utilization data Found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/utilization' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7}'

#Send a command to a device (legacy)

POST/v1/app/rmm/device/command
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/command
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idrequiredinteger
commandrequiredany
dataany

Response 201

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400device_id, command
404User not found
404Device not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/command' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7,"command":"…","data":"…"}'

#Get a device (legacy)

GET/v1/app/rmm/device/:id
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
deviceany
utilizationarray of object
utilization[].cpu_loadnumber, or null
utilization[].ram_usagenumber, or null
utilization[].disk_usagenumber, or null
utilization[].network_usagenumber, or null
Example response
JSON
{
  "device": null,
  "utilization": [
    {
      "cpu_load": 12.5,
      "ram_usage": 12.5,
      "disk_usage": 12.5,
      "network_usage": 12.5
    }
  ]
}

Errors

StatusMessage
404User not found
404Device not found
403Unauthorized: device does not belong to user's tenant

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Recent commands in a group (legacy)

POST/v1/app/rmm/group/commands/list
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/group/commands/list
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
group_idinteger

Response 200

FieldTypeDescription
commandsarray of object
commands[].idinteger
commands[].device_idstring
commands[].statusstring
commands[].commandstring
commands[].dataany
commands[].resultstring, or null
commands[].created_atstring (date-time)
commands[].display_namestring, or null
commands[].hostnamestring, or null
Example response
JSON
{
  "commands": [
    {
      "id": 42,
      "device_id": "string",
      "status": "active",
      "command": "string",
      "data": null,
      "result": "string",
      "created_at": "2026-11-12T09:30:00.000Z",
      "display_name": "Example display name",
      "hostname": "office-pc-01"
    }
  ]
}

Errors

StatusMessage
400Missing group_id in request body
404User not found
404No commands found for devices in this group

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/group/commands/list' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"group_id":7}'

#A device's recent commands (legacy)

POST/v1/app/rmm/device/commands/list
Address
https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/commands/list
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idinteger

Response 200

FieldTypeDescription
commandsarray of object
commands[].device_idstring
commands[].statusstring
commands[].commandstring
commands[].dataany
commands[].resultstring, or null
commands[].display_namestring, or null
commands[].hostnamestring, or null
Example response
JSON
{
  "commands": [
    {
      "device_id": "string",
      "status": "active",
      "command": "string",
      "data": null,
      "result": "string",
      "display_name": "Example display name",
      "hostname": "office-pc-01"
    }
  ]
}

Errors

StatusMessage
400Missing device_id in request body
404User not found
404No commands found for this device

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/app/rmm/device/commands/list' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7}'

#List sites and groups

GET/v2/app/rmm/sites
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/sites
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Response 200

FieldTypeDescription
sitesarray of any
Example response
JSON
{
  "sites": []
}

Errors

StatusMessage
404User not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/sites' \
  -H "X-API-Key: $BRAMBLE_KEY"

#List groups in a site

POST/v2/app/rmm/groups
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/groups
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
site_idintegerThe site.

Response 200

FieldTypeDescription
groupsarray of any
siteany
Example response
JSON
{
  "groups": [],
  "site": null
}

Errors

StatusMessage
404User not found
404Site not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/groups' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site_id":7}'

#Fetch groups for a specific site (tenant-scoped)

GET/v2/app/rmm/groups/:siteId
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/groups/:siteId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
siteIdrequiredinteger

Response 200

FieldTypeDescription
groupsarray of any
siteany
Example response
JSON
{
  "groups": [],
  "site": null
}

Errors

StatusMessage
404User not found
404Site not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/groups/1' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Body { site_id?, group_id?

POST/v2/app/rmm/devices

Body { site_id?, group_id? } — RMM2's site/group selector (services/rmm-scope.js); neither = every device in the tenant.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/devices
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Response 200

FieldTypeDescription
devicesarray of any
groupany
scopeany
Example response
JSON
{
  "devices": [],
  "group": null,
  "scope": null
}

Errors

StatusMessage
404User not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/devices' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Get a device

GET/v2/app/rmm/device/:id

Everything RMM knows about one device — inventory, status, utilisation, signed-in user.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredintegerThe device's device_id.

Response 200

FieldTypeDescription
deviceany
utilizationany
Example response
JSON
{
  "device": null,
  "utilization": null
}

Errors

StatusMessage
404User not found
404Device not found
403Unauthorized

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Update editable device fields

PUT/v2/app/rmm/device/:id
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
display_namestring
device_typestring
site_idinteger
group_idinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Invalid site
400Invalid group
404User not found
404Device not found

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"display_name":"Example display name","device_type":"string","site_id":7,"group_id":7}'

#Remove a device from the dashboard immediately (hidden from every list/ get below) but defer the actual hard delete: queue the uninstall script, mark the dev…

DELETE/v2/app/rmm/device/:id

Remove a device from the dashboard immediately (hidden from every list/ get below) but defer the actual hard delete: queue the uninstall script, mark the device pending_removal, and let services/rmm-device-cleanup.js finish the job once that command completes OR PENDING_REMOVAL_TIMEOUT_MINUTES passes, whichever's first. An offline device that comes back online later still gets uninstalled instead of becoming a silent orphan the dashboard can no longer reach — the earlier immediate-hard-delete version of this endpoint couldn't do that, since deleting device_commands+devices in the same request left nothing for a later check-in to find.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404User not found
404Device not found

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Save a Proxmox VE host's API login

POST/v2/app/rmm/device/:id/proxmox-config
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id/proxmox-config
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42/proxmox-config' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Save a Proxmox Backup Server's API login

POST/v2/app/rmm/device/:id/pbs-config
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id/pbs-config
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42/pbs-config' \
  -H "X-API-Key: $BRAMBLE_KEY"

#ComputeGuestBackupPosture / summariseProxmoxHealth live in services/proxmox-health.js (shared with the check engine)

GET/v2/app/rmm/device/:id/backup-status

ComputeGuestBackupPosture / summariseProxmoxHealth live in services/proxmox-health.js (shared with the check engine). GET /device/:id/backup-status — per-guest backup posture for a single Proxmox host, using its own hypervisor-links. Powers the status shield next to each guest in the device page's Hypervisor tab.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id/backup-status
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
guestsarray of any
Example response
JSON
{
  "guests": []
}

Errors

StatusMessage
400Not a Proxmox host
404User not found
404Device not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42/backup-status' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Cross-references this site's Proxmox hosts against their linked PBS servers (which may live in a different site — see note above) to compute per-guest backup…

GET/v2/app/rmm/sites/:siteId/backup-coverage

Cross-references this site's Proxmox hosts against their linked PBS servers (which may live in a different site — see note above) to compute per-guest backup posture across the whole site.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/sites/:siteId/backup-coverage
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
siteIdrequiredinteger

Response 200

FieldTypeDescription
siteany
proxmoxHostsarray of any
guestsarray of any
summaryobject
summary.protectedinteger
summary.attentioninteger
summary.unprotectedinteger
summary.unlinkedinteger
Example response
JSON
{
  "site": null,
  "proxmoxHosts": [],
  "guests": [],
  "summary": {
    "protected": 1,
    "attention": 1,
    "unprotected": 1,
    "unlinked": 1
  }
}

Errors

StatusMessage
404User not found
404Site not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/sites/1/backup-coverage' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Queues a fetch_log command — the agent reads its own local agent.log (tail, capped at ~200KB) and returns it as the command's stdout

POST/v2/app/rmm/device/:id/fetch-log

Queues a fetch_log command — the agent reads its own local agent.log (tail, capped at ~200KB) and returns it as the command's stdout. Returns the new command's id so the caller can poll /device/commands/list for it (same list the Command Log feed already reads) rather than needing a dedicated result-polling endpoint.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id/fetch-log
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Response 201

FieldTypeDescription
messagestring
command_idinteger
Example response
JSON
{
  "message": "Saved",
  "command_id": 7
}

Errors

StatusMessage
404User not found
404Device not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42/fetch-log' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Queues a refresh_data command — the agent immediately re-posts heartbeat/utilization/full inventory instead of waiting for its normal 60s/30min timers

POST/v2/app/rmm/device/:id/refresh

Queues a refresh_data command — the agent immediately re-posts heartbeat/utilization/full inventory instead of waiting for its normal 60s/30min timers. Returns the new command's id so the caller can poll /device/commands/list for the ack, same pattern as fetch-log.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/:id/refresh
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequiredinteger

Response 201

FieldTypeDescription
messagestring
command_idinteger
Example response
JSON
{
  "message": "Saved",
  "command_id": 7
}

Errors

StatusMessage
404User not found
404Device not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/42/refresh' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Toggle maintenance mode for a device

POST/v2/app/rmm/device/maintenance/toggle
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/maintenance/toggle
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idrequiredinteger

Response 200

FieldTypeDescription
is_maintenanceboolean
Example response
JSON
{
  "is_maintenance": true
}

Errors

StatusMessage
400device_id required
404User not found
404Device not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/maintenance/toggle' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7}'

#Send a command to a device

POST/v2/app/rmm/device/command

Queues a command for the device's agent; it's picked up on the next check-in. Read the output with POST /v2/app/rmm/device/commands/list.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/command
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idrequiredintegerThe device.
commandrequiredanyThe command name.
dataanyIts arguments.

Response 201

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400device_id and command are required
404User not found
404Device not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/command' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7,"command":"…","data":"…"}'

#A device's recent commands and their results

POST/v2/app/rmm/device/commands/list
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/commands/list
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
device_idrequiredintegerThe device.

Response 200

FieldTypeDescription
commandsarray of any
Example response
JSON
{
  "commands": []
}

Errors

StatusMessage
400device_id is required
404User not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/commands/list' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"device_id":7}'

#Output of a command archived to BRM-Blob (services/rmm-history.js); the list endpoints return output_archived = 1 and no output for those

GET/v2/app/rmm/device/commands/:id/output
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/commands/:id/output
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

Errors

StatusMessage
404No archived output for this command

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/commands/12.5/output' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Utilisation for a device over a date range (YYYY-MM-DD), including days archived to BRM-Blob

GET/v2/app/rmm/device/utilization/history

Utilisation for a device over a date range (YYYY-MM-DD), including days archived to BRM-Blob. Points are [unix time, cpu, ram, disk, net].

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/utilization/history
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Query parameters

NameTypeDescription
device_idrequiredinteger
fromany
toany

Response 200

Errors

StatusMessage
400device_id, from and to (YYYY-MM-DD) are required
400Ask for 92 days or fewer at a time
404Device not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/device/utilization/history?device_id=7' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Command log for RMM2's site/group selection: body { site_id?, group_id?, limit } (neither = every device)

POST/v2/app/rmm/group/commands/list

Command log for RMM2's site/group selection: body { site_id?, group_id?, limit } (neither = every device). Kept at /group/... for existing callers.

Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/group/commands/list
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Request body JSON

NameTypeDescription
limitinteger

Response 200

FieldTypeDescription
commandsarray of any
Example response
JSON
{
  "commands": []
}

Errors

StatusMessage
404User not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/group/commands/list' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":1}'

#List enrolment keys (for install commands)

GET/v2/app/rmm/enrollment/keys
Address
https://<your-org>.brambleit.cloud/api/v2/app/rmm/enrollment/keys
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Licence: RMM.

Response 200

FieldTypeDescription
keysarray of any
Example response
JSON
{
  "keys": []
}

Errors

StatusMessage
404User not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v2/app/rmm/enrollment/keys' \
  -H "X-API-Key: $BRAMBLE_KEY"