Skip to content

Reference

API

The MonitOps API is authenticated and tenant-scoped, and every call is checked against the caller's role. This article describes the conventions shared by its endpoints; each deployment publishes an OpenAPI description of its routes.

How it works#

Authentication and scope#

The API authenticates a user session. The tenant and role come from the server-side session membership; a tenant selected in the browser is a request, not proof of membership. Tenant and role are checked on every call, in the same way they are checked on every query and copilot tool (see Roles and access).

Ingest credentials are separate from user sessions. A source credential authenticates only to the OTLP paths, and a browser session never authenticates to them (see OTLP endpoint). External identity tokens are not accepted as API credentials.

Request conventions#

Routes are under /api/v1. The API uses GET for reads and POST for changes.

GET /api/v1/alerts?state=firing&limit=50

Successful JSON reads include asOf, the time the data reflects.

Request identifier and errors#

Errors use one body shape with a correlation identifier. Quote the identifier when you ask about a specific request.

{
  "code": "invalid_request",
  "message": "…",
  "correlationId": "…"
}
StatusMeaning
400The request is invalid
401The identity is absent or has expired
403Your role does not allow the operation
404The item is missing or you cannot access it
413The request is over a size limit
429A rate limit was reached; retry after the interval the response gives
503A dependency is unavailable

The size and rate limits exist in every deployment; their values are set per deployment.

Pagination#

Lists use keyset pagination with an opaque cursor.

ItemValue
Default page size50
Maximum page size200
limitOptional page size, up to the maximum
cursorReturned by the previous page; it conveys no authority

A cursor is bound to the filters of the list it came from. Filters and role are applied again on every page.

Bounded time windows#

Reads of time-series and log data are bounded. Historical log reads cover a window of at most 60 minutes (see Logs). Truncated or incomplete results are marked as such rather than presented as complete.

OpenAPI description#

Each deployment serves an OpenAPI description generated from the routes it runs, so the specification matches the API you call.

Limits and defaults#

ItemValue
List page size50 by default, 200 at most
Historical log window60 minutes
Request size and rateLimited; values per deployment

Failure states#

StateWhat the caller sees
Not signed in401
Role not permitted403
Over a rate limit429 with an interval to wait
Dependency unavailable503

Last updated October 2026