RMM API
Bramble RMM for technicians — devices, sites and groups, scripts, remote terminal and screen, checks and alerts, applications, backups, databases, logs, dashboards, virtualisation and network discovery — plus the API the Bramble agent itself uses. RMM settings (check definitions, scheduled tasks, enrolment keys, device management) are in the Admin Centre API.
- Address
https://<your-org>.brambleit.cloud/api- Sign-in
- Signed-in session,
X-API-Key, or a Bramble app access token (Authorization: Bearer). - Endpoints
- 138
- OpenAPI
- rmm.json
- Guides
- How RMM works
v1 and v2. /v2/app/rmm... is what RMM uses today. Some /v1/app/rmm/...
routes remain for older pages and agents and are marked legacy; prefer v2.
Scope. List endpoints follow the RMM site and group selector: pass
site_id and/or group_id in the query to narrow them.
Permissions. Each area checks an RMM permission (rmm.devices.view,
rmm.scripts.run, rmm.backups.restore…); see
Licences & roles.
Devices are identified by their 32-character device_id string, not a number.
Resources
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.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/rmm/sites | List sites (legacy) |
| GET | /v1/app/rmm/deivce/:deivceid: | Get a device (legacy, misspelt path) |
| POST | /v1/app/rmm/groups | List groups in a site (legacy) |
| POST | /v1/app/rmm/devices | List devices in a group (legacy) |
| POST | /v1/app/rmm/device/utilization | A device's utilisation (legacy) |
| POST | /v1/app/rmm/device/command | Send a command to a device (legacy) |
| GET | /v1/app/rmm/device/:id | Get a device (legacy) |
| POST | /v1/app/rmm/group/commands/list | Recent commands in a group (legacy) |
| POST | /v1/app/rmm/device/commands/list | A device's recent commands (legacy) |
| GET | /v2/app/rmm/sites | List sites and groups |
| POST | /v2/app/rmm/groups | List groups in a site |
| GET | /v2/app/rmm/groups/:siteId | Fetch groups for a specific site (tenant-scoped) |
| POST | /v2/app/rmm/devices | Body { site_id?, group_id? |
| GET | /v2/app/rmm/device/:id | Get a device |
| PUT | /v2/app/rmm/device/:id | Update editable device fields |
| 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 dev… |
| POST | /v2/app/rmm/device/:id/proxmox-config | Save a Proxmox VE host's API login |
| POST | /v2/app/rmm/device/:id/pbs-config | Save a Proxmox Backup Server's API login |
| GET | /v2/app/rmm/device/:id/backup-status | ComputeGuestBackupPosture / summariseProxmoxHealth live in services/proxmox-health.js (shared with the check engine) |
| 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… |
| 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 |
| 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 |
| POST | /v2/app/rmm/device/maintenance/toggle | Toggle maintenance mode for a device |
| POST | /v2/app/rmm/device/command | Send a command to a device |
| POST | /v2/app/rmm/device/commands/list | A device's recent commands and their results |
| GET | /v2/app/rmm/device/commands/:id/output | 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/utilization/history | Utilisation for a device over a date range (YYYY-MM-DD), including days archived to BRM-Blob |
| POST | /v2/app/rmm/group/commands/list | Command log for RMM2's site/group selection: body { site_id?, group_id?, limit } (neither = every device) |
| GET | /v2/app/rmm/enrollment/keys | List enrolment keys (for install commands) |
Remote access
Opening a remote terminal or screen (VNC) session on a device. The response is a short-lived session the RMM page hands to Bramble Remote.
| Method | Path | Summary |
|---|---|---|
| POST | /v1/app/rmm/device/terminal/session | Open a remote terminal (legacy) |
| POST | /v2/app/rmm/device/terminal/session | Open a remote terminal |
| POST | /v2/app/rmm/device/vnc/session | Open a remote screen (VNC) |
Scripts
The script library and running a script on a device. Scripts are written in Admin Centre → RMM.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/rmm/scripts | List scripts (legacy) |
| GET | /v1/app/rmm/scripts/:id | Get a script (legacy) |
| POST | /v1/app/rmm/scripts | Create a script (legacy) |
| PUT | /v1/app/rmm/scripts/:id | Update a script (legacy) |
| DELETE | /v1/app/rmm/scripts/:id | Delete a script (legacy) |
| POST | /v1/app/rmm/scripts/run | Run a script on a device (legacy) |
| GET | /v2/app/rmm/scripts | List scripts |
| GET | /v2/app/rmm/script-categories | List script folders |
| GET | /v2/app/rmm/scripts/:id | Get a script |
| POST | /v2/app/rmm/scripts | Create a script |
| PUT | /v2/app/rmm/scripts/:id | Update a script |
| DELETE | /v2/app/rmm/scripts/:id | Delete a script |
| POST | /v2/app/rmm/scripts/run | Run a script on a device |
Checks & alerts
The monitoring checks that apply to devices, per-device exclusions and direct assignments, and the alerts they raise: list, acknowledge and resolve.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-checks/checks | List monitoring checks |
| GET | /v2/app/rmm-checks/checks/:id | Get a single check with its actions and assignments |
| POST | /v2/app/rmm-checks/checks | Create a monitoring check |
| PUT | /v2/app/rmm-checks/checks/:id | Update a check. Requires an active RMM license |
| POST | /v2/app/rmm-checks/checks/:id/toggle | Toggle a check's enabled/disabled state |
| DELETE | /v2/app/rmm-checks/checks/:id | Delete a check. Requires an active RMM license |
| GET | /v2/app/rmm-checks/device/:deviceId/checks | List checks that apply to a device |
| POST | /v2/app/rmm-checks/device/:deviceId/exclude/:checkId | Toggle exclusion of a check for a specific device |
| POST | /v2/app/rmm-checks/device/:deviceId/assign/:checkId | Assign an existing check directly to a device |
| GET | /v2/app/rmm-checks/alerts | List recent alert log entries |
| POST | /v2/app/rmm-checks/alerts/:id/resolve | Manually resolve (dismiss) a firing alert |
| POST | /v2/app/rmm-checks/alerts/acknowledge | Acknowledge firing alerts |
| GET | /v2/app/rmm-checks/alerts/active | List currently firing alerts |
Applications
The application catalogue (winget, apt, Snap, Flathub, dnf and uploaded installers), search across package sources, assignments (required, uninstall, exclude) to all devices, sites, groups or single devices, and one-off installs.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-apps | ?site_id=&group_id= (RMM2's selection) narrows the device counts |
| GET | /v2/app/rmm-apps/search | Search package sources |
| GET | /v2/app/rmm-apps/lookup | Check an exact package name |
| GET | /v2/app/rmm-apps/targets | Sites, groups and devices an app can be assigned to |
| POST | /v2/app/rmm-apps/apps | Add an app to the catalogue |
| GET | /v2/app/rmm-apps/apps/:id | Get an app |
| PUT | /v2/app/rmm-apps/apps/:id | Update an app |
| DELETE | /v2/app/rmm-apps/apps/:id | Remove an app from the catalogue |
| POST | /v2/app/rmm-apps/apps/:id/installers | Start uploading an installer (Windows MSI/EXE) |
| PUT | /v2/app/rmm-apps/apps/:id/installers/:iid/parts/:n | Upload one part of an installer |
| POST | /v2/app/rmm-apps/apps/:id/installers/:iid/complete | Finish an installer upload |
| DELETE | /v2/app/rmm-apps/apps/:id/installers/:iid | Delete an uploaded installer |
| POST | /v2/app/rmm-apps/apps/:id/sync | Push an app's assignments to devices now |
| GET | /v2/app/rmm-apps/device/:deviceId | A device's managed apps and their state |
| POST | /v2/app/rmm-apps/device/:deviceId/install | Install an app on a device once |
| POST | /v2/app/rmm-apps/device/:deviceId/uninstall | Uninstall an app from a device |
| DELETE | /v2/app/rmm-apps/device/:deviceId/apps/:appId | Clear an app's state on a device |
Backups
File and whole-device backups: jobs per device, runs, browsing a backup's files, downloads, and restoring to the same or another device. Backups are stored encrypted in Bramble. Restore and download need their own permissions and are audited.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-backups | Backup overview |
| GET | /v2/app/rmm-backups/devices/:id | A device's backup jobs and history |
| POST | /v2/app/rmm-backups/devices/:id/jobs | Create a backup job |
| PUT | /v2/app/rmm-backups/jobs/:id | Update a backup job |
| DELETE | /v2/app/rmm-backups/jobs/:id | Delete a backup job |
| POST | /v2/app/rmm-backups/jobs/:id/run | Back up now |
| GET | /v2/app/rmm-backups/runs/:id/browse | Browse the files in a backup |
| GET | /v2/app/rmm-backups/runs/:id/download | Download a backup |
| DELETE | /v2/app/rmm-backups/runs/:id | Delete a backup |
| POST | /v2/app/rmm-backups/runs/:id/restore | Restore from a backup |
Databases
MySQL/MariaDB servers found on devices: overview, backup settings and backups, and opening a backup as a read-only copy to browse its tables.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-databases | Database servers overview |
| GET | /v2/app/rmm-databases/devices/:id | A server's databases, backups and settings |
| PUT | /v2/app/rmm-databases/devices/:id/settings | Set a server's backup settings |
| POST | /v2/app/rmm-databases/devices/:id/backup | Back up databases now |
| POST | /v2/app/rmm-databases/devices/:id/refresh | Refresh a server's overview now |
| GET | /v2/app/rmm-databases/backups/:id/download | Download a database backup |
| DELETE | /v2/app/rmm-databases/backups/:id | Delete a database backup |
| POST | /v2/app/rmm-databases/backups/:id/open | Opening a backup to look at its data: like a download, it shows everything |
| DELETE | /v2/app/rmm-databases/mounts/:id | Close an opened backup |
| POST | /v2/app/rmm-databases/mounts/:id/query | Browse an opened backup |
| GET | /v2/app/rmm-databases/mounts/:id/queries/:qid | Result of a browse request |
Logs
Syslog collectors on devices and searching the collected logs.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-logs | Log collectors and recent logs |
| GET | /v2/app/rmm-logs/search | Search collected logs |
| PUT | /v2/app/rmm-logs/collectors/:deviceId | Turn a device into a syslog collector |
| DELETE | /v2/app/rmm-logs/collectors/:deviceId | Stop a syslog collector |
Dashboards
Personal and shared dashboards built from RMM and Warden data, and the query endpoint widgets use.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-dashboards | List dashboards |
| POST | /v2/app/rmm-dashboards/query | ?site_id=&group_id= — RMM2's site/group selection; every widget follows it (sources with no site, like network scan findings, cover the organisation) |
| POST | /v2/app/rmm-dashboards/values | Values a field can take (for widget filters) |
| POST | /v2/app/rmm-dashboards | Create a dashboard |
| PUT | /v2/app/rmm-dashboards/:id | Update a dashboard |
| POST | /v2/app/rmm-dashboards/:id/duplicate | Copy a dashboard |
| DELETE | /v2/app/rmm-dashboards/:id | Delete a dashboard |
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'… |
Network discovery
A device promoted to a network probe scans its subnets for devices that don't run the agent (printers, switches, cameras…). Configure, scan now, ping through it, and list what it found.
| Method | Path | Summary |
|---|---|---|
| POST | /v2/app/rmm-network-probe/device/:id/promote | Promote a device to a Network Probe |
| POST | /v2/app/rmm-network-probe/device/:id/demote | Demote a device from Network Probe |
| GET | /v2/app/rmm-network-probe/device/:id | Get a device's Network Probe status and configuration |
| POST | /v2/app/rmm-network-probe/device/:id/config | Save a Network Probe's scan configuration |
| POST | /v2/app/rmm-network-probe/device/:id/scan-now | Trigger an immediate subnet scan |
| POST | /v2/app/rmm-network-probe/device/:id/ping | Run an ad-hoc ping against a single host via a Network Probe |
| GET | /v2/app/rmm-network-probe/groups/:groupId/discovered-devices | List discovered (non-agent) devices for a site group |
| GET | /v2/app/rmm-network-probe/discovered-devices | Same as the group listing above, for RMM2's site/group selection: one group, a whole site, or (neither) every site |
| GET | /v2/app/rmm-network-probe/discovered-device/:id | Get full detail for one discovered network device |
Network monitoring
Monitors for network devices: ping, TCP ports and SNMP (v2c or v3) with interface traffic history. Adopt a discovered device or add one by address.
| Method | Path | Summary |
|---|---|---|
| GET | /v2/app/rmm-network-monitor/monitors | List with 24h uptime and a 60-minute latency spark |
| GET | /v2/app/rmm-network-monitor/monitors/:id | Detail: interfaces (latest rates) + 24h reachability |
| GET | /v2/app/rmm-network-monitor/monitors/:id/interfaces/:ifIndex | Traffic history for one port |
| POST | /v2/app/rmm-network-monitor/monitors | { discovered_device_id } to adopt a discovered device, or { probe_device_id, ip_address, name } to add one by IP |
| PUT | /v2/app/rmm-network-monitor/monitors/:id | Name, is_enabled, is_maintenance, check_ping, tcp_ports, snmp_enabled, snmp_version, snmp_community, snmp_v3 |
| DELETE | /v2/app/rmm-network-monitor/monitors/:id | Delete a monitor |
Agent versions
The current agent version per platform (used by agents and installers to update themselves), and publishing a new release.
| Method | Path | Summary |
|---|---|---|
| GET | /v1/app/rmm/version | Current versions |
| GET | /v1/app/rmm/version/agent | Current agent version |
| GET | /v1/app/rmm/version/agent/linux | Current Linux agent version and checksum |
| GET | /v1/app/rmm/version/agent/windows | Current Windows agent version and checksum |
| GET | /v1/app/rmm/version/agent/macos | Current macOS agent version and checksum |
| GET | /v1/app/rmm/version/agent/remote | Current Remote agent version and checksum |
| GET | /v1/app/rmm/version/agent/legacy | Current version for old agents |
| GET | /v1/app/rmm/version/server | Current server version |
| POST | /v1/app/rmm/release/agent/:platform | Publish an agent release |
| GET | /v2/app/rmm/version/agent | Current agent version |
| GET | /v2/app/rmm/version | Current versions |