Public API Reference

MantisRMM · API v1 · Base URL https://api.rmm.mantisops.net

The MantisRMM Public API is a simple REST/JSON interface for reading your fleet and updating device metadata programmatically — for dashboards, integrations, and automation. Every request is authenticated with an API key and scoped to the tenant that issued it.

Overview

Authentication

Create keys in the RMM app under Settings → API Keys (admin only). A key is displayed once at creation — store it securely; it cannot be retrieved again. If a key is lost or exposed, revoke it and issue a new one.

Pass the key in the Authorization header as a Bearer token:

curl https://api.rmm.mantisops.net/public/v1/agents \ -H "Authorization: Bearer mk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

Verify a key and see its scopes with the ping endpoint:

curl https://api.rmm.mantisops.net/public/v1/ping \ -H "Authorization: Bearer mk_live_..." { "ok": true, "product": "rmm", "version": "v1", "tenant": "t_abc123", "scopes": ["read"] }
Keys are stored only as a hash. MantisOps cannot recover a key for you — if it's lost, revoke it and create a new one. Treat keys like passwords and never commit them to source control.

Scopes

Each key is granted one of two scopes when created:

ScopeGrants
readAll GET endpoints — list and read agents.
read & writeEverything read allows, plus write endpoints (e.g. setting custom fields).

A request to a write endpoint with a read-only key returns 403. Grant the narrowest scope an integration needs.

Errors

Errors use standard HTTP status codes and a JSON body of the form { "error": "message" }.

StatusMeaning
400Malformed request (e.g. a required field is missing).
401Missing, malformed, revoked, or unknown API key.
403The key is valid but lacks the required scope.
404The resource (e.g. an agent or custom field) was not found.

Endpoints

GET/public/v1/pingread

Verify an API key and return the tenant it belongs to plus its scopes. Useful as a connection test.

curl https://api.rmm.mantisops.net/public/v1/ping \ -H "Authorization: Bearer mk_live_..." 200 OK { "ok": true, "product": "rmm", "version": "v1", "tenant": "t_abc123", "scopes": ["read", "write"] }
GET/public/v1/agentsread

List every agent in your tenant. Returns an array of agent objects and a total count.

curl https://api.rmm.mantisops.net/public/v1/agents \ -H "Authorization: Bearer mk_live_..." 200 OK { "count": 2, "agents": [ { "id": "ag_9f2c...", "name": "WIN-SVR-01", "hostname": "win-svr-01", "platform": "windows", "osVersion": "10.0.26200", "arch": "amd64", "agentVersion": "1.0.541", "status": "online", "lastSeenAt": 1751990400000, "ipAddress": "10.0.1.14", "alarmCount": 0, "customFields": { "Location": "HQ" } } ] }
GET/public/v1/agents/{id}read

Fetch a single agent by its id. Returns 404 if no such agent exists in your tenant.

curl https://api.rmm.mantisops.net/public/v1/agents/ag_9f2c... \ -H "Authorization: Bearer mk_live_..." 200 OK { "id": "ag_9f2c...", "name": "WIN-SVR-01", "platform": "windows", "status": "online", "cpuModel": "Intel Xeon...", "memTotal": 34359738368, "manufacturer": "Dell Inc.", "model": "PowerEdge R640", "customFields": {} }
POST/public/v1/agents/{id}/custom-fieldswrite

Set a custom field value on an agent. The field must already exist for your tenant (create fields under Settings → Custom Fields); reference it by its label. Send value: null to clear it.

curl -X POST https://api.rmm.mantisops.net/public/v1/agents/ag_9f2c.../custom-fields \ -H "Authorization: Bearer mk_live_..." \ -H "Content-Type: application/json" \ -d '{ "label": "Location", "value": "HQ - Floor 3" }' 200 OK { "ok": true, "agentId": "ag_9f2c...", "label": "Location", "value": "HQ - Floor 3" }
Request body fields: label (required) — the exact label of an existing custom field; value (string, or null to clear). A label with no matching field returns 404.

Agent object

Fields returned for an agent. Optional fields are omitted when not available for a device.

FieldTypeDescription
idstringUnique agent identifier.
namestringDisplay name.
hostnamestringReported hostname.
platformstringwindows, linux, or darwin.
osVersionstringOperating-system version string.
archstringCPU architecture (e.g. amd64, arm64).
agentVersionstringInstalled agent version.
statusstringonline or offline.
lastSeenAtnumberLast check-in (Unix epoch ms).
firstSeenAtnumberEnrollment time (Unix epoch ms).
currentUserstringLogged-in user, if reported.
ipAddressstringPrimary IP address.
macAddressstringPrimary MAC address.
manufacturer / model / serialNumberstringHardware identity.
cpuModel / cpuCount / memTotalstring / numberCPU model, logical core count, total RAM in bytes.
companyId / siteId / groupIdstringOrganizational placement.
labelsstring[]Agent labels.
alarmCountnumberActive (unacknowledged) alerts.
customFieldsobjectMap of custom-field label → value.
💡
More endpoints are on the roadmap. Need one that isn't here yet? Let us know.