---
title: "Get a packed snapshot of all monitor states (admin only)"
method: GET
path: "/api/v1/admin/monitors/state"
tags: ["Admin"]
---

# Get a packed snapshot of all monitor states (admin only)

`GET /api/v1/admin/monitors/state`

## Request

- Base URL: `https://api.uptimemonitoring.com`
- URL: `https://api.uptimemonitoring.com/api/v1/admin/monitors/state`
- Auth: HTTP bearer

Returns a packed snapshot of the current in-memory state for every
monitor across every account. The response uses a compact columnar
encoding to minimise payload size over the wire: `states` is the
ordered string palette of status values, and each `monitors` tuple
is `[monitorID, accountID, stateIndex]` where `stateIndex` is a
zero-based index into `states`.

Requires admin auth via the same `auth.RequireAdmin` middleware that
gates `/api/v1/admin/ping`.

## Response `200`

Packed monitor state snapshot.

- object
  - `schema` string, required: Encoding version identifier.
  - `states` string[], required: Ordered palette of status strings referenced by monitors tuples.
  - `monitors` array[], required: Array of 3-element tuples: [monitorID, accountID, stateIndex]. stateIndex is a zero-based index into the states palette.
    - integer[]

## Other responses

- `401`: Missing or invalid credentials.
- `403`: Authenticated but not an admin.
- `429`: Per-account dispatcher rate limit exceeded (200 requests/minute). The `Retry-After` header gives the integer seconds until at least one token has refilled. The `X-RateLimit-*` trio reflects the bucket whose rejection produced this response — usually the global 200/min cap; on `POST /api/v1/monitors` a 429 may instead reflect the per-route 20/min creation limit.

---

[API](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api.md) · [All operations](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/llms.txt) · [OpenAPI document](https://skmtc.dev/uptimemonitoring/apis/uptimemonitoring-com-api/revisions/ddcb2a8bc70f?raw)
