Mantis360 Public API

Mantis360 · API v1 · Base URL https://api.360.mantisops.net

The Mantis360 Public API is a simple REST/JSON interface for reading your discovered assets, vulnerability findings, and sites programmatically — for dashboards, SIEM/ticketing integrations, and reporting. Every request is authenticated with an API key and scoped to the tenant that issued it.

Overview

Authentication

Create keys in the Mantis360 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. Mantis360 keys begin with m3_live_.

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

curl https://api.360.mantisops.net/public/v1/assets \ -H "Authorization: Bearer m3_live_xxxxxxxxxxxxxxxxxxxxxxxx"

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

curl https://api.360.mantisops.net/public/v1/ping \ -H "Authorization: Bearer m3_live_..." { "ok": true, "product": "360", "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 assets, findings, and sites.
read & writeEverything read allows, plus write endpoints as they are added. There are no write endpoints yet; this scope is reserved for forthcoming ones.

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 asset) 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.360.mantisops.net/public/v1/ping \ -H "Authorization: Bearer m3_live_..." 200 OK { "ok": true, "product": "360", "version": "v1", "tenant": "t_abc123", "scopes": ["read"] }
GET/public/v1/assetsread

List every discovered asset in your tenant. Returns an array of asset objects and a total count. Add ?siteId=<id> to return only assets in one site.

curl "https://api.360.mantisops.net/public/v1/assets?siteId=site_1a2b" \ -H "Authorization: Bearer m3_live_..." 200 OK { "count": 2, "assets": [ { "id": "as_9f2c...", "ip": "10.0.1.14", "hostname": "win-svr-01", "os": "Windows Server 2022", "deviceType": "server", "openPorts": [22, 443, 3389], "macAddress": "00:1a:2b:...", "riskScore": 87, "siteId": "site_1a2b", "probeId": "pr_77...", "agentInstalled": true, "agentVersion": "1.3.51", "firstSeenAt": 1751200000000, "lastSeenAt": 1751990400000, "lastScannedAt": 1751988000000 } ] }
GET/public/v1/assets/{id}read

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

curl https://api.360.mantisops.net/public/v1/assets/as_9f2c... \ -H "Authorization: Bearer m3_live_..." 200 OK { "id": "as_9f2c...", "ip": "10.0.1.14", "hostname": "win-svr-01", "os": "Windows Server 2022", "deviceType": "server", "openPorts": [22, 443, 3389], "riskScore": 87, "siteId": "site_1a2b" }
GET/public/v1/findingsread

List open vulnerability findings (status open or in_progress), most severe first. Returns an array of finding objects and a total count. Add ?siteId=<id> to scope to one site.

curl https://api.360.mantisops.net/public/v1/findings \ -H "Authorization: Bearer m3_live_..." 200 OK { "count": 1, "findings": [ { "id": "vf_5d1e...", "assetIp": "10.0.1.14", "assetId": "as_9f2c...", "hostname": "win-svr-01", "port": 443, "service": "https", "title": "TLS 1.0 enabled", "cve": "CVE-2011-3389", "severity": "HIGH", "cvssScore": 7.4, "epssScore": 0.42, "remediationStatus": "open", "firstSeenAt": 1751200000000, "lastSeenAt": 1751990400000, "siteId": "site_1a2b" } ] }
GET/public/v1/sitesread

List every site in your tenant. Use a site's id to filter the assets and findings endpoints.

curl https://api.360.mantisops.net/public/v1/sites \ -H "Authorization: Bearer m3_live_..." 200 OK { "count": 1, "sites": [ { "id": "site_1a2b", "name": "HQ Network", "createdAt": 1751000000000 } ] }

Asset object

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

FieldTypeDescription
idstringUnique asset identifier.
ipstringPrimary IP address (unique per tenant).
hostnamestringResolved / reported hostname.
osstringDetected operating system.
deviceTypestringClassified device type (e.g. server, workstation, router).
openPortsnumber[]Open TCP ports.
udpPortsnumber[]Open UDP ports, when scanned.
macAddressstringPrimary MAC address, when discoverable.
tagsstring[]Operator-assigned tags.
riskScorenumberComposite risk score (higher = more risk).
siteId / probeId / companyIdstringOrganizational placement + the probe that discovered it.
agentInstalledbooleanWhether a Mantis360 agent is present on the host.
agentVersionstringInstalled agent version, if any.
agentLastSeenAtnumberAgent's last check-in (Unix epoch ms).
firstSeenAt / lastSeenAtnumberFirst and most-recent discovery (Unix epoch ms).
lastScannedAtnumberLast full scan of the asset (Unix epoch ms).

Finding object

Fields returned for a vulnerability finding.

FieldTypeDescription
idstringUnique finding identifier.
assetIpstringIP of the affected asset.
assetIdstringID of the affected asset, when it still resolves.
hostnamestringHostname of the affected asset.
port / servicenumber / stringAffected port and detected service.
titlestringHuman-readable finding title.
cvestringAssociated CVE identifier, when applicable.
severitystringCRITICAL, HIGH, MEDIUM, LOW, or INFO.
cvssScorenumberCVSS base score (0–10).
epssScorenumberEPSS exploit-probability score (0–1), when available.
remediationstringSuggested remediation text.
remediationStatusstringopen or in_progress (resolved findings are not returned).
firstSeenAt / lastSeenAtnumberFirst and most-recent detection (Unix epoch ms).
siteIdstringSite the finding belongs to.
💡
More endpoints are on the roadmap. Need one that isn't here yet? Let us know.