---
title: "Get a monitor"
method: GET
path: "/api/monitors/{code}"
tags: ["monitors"]
---

# Get a monitor

`GET /api/monitors/{code}`

## Request

- Base URL: `https://cronitor.io`
- URL: `https://cronitor.io/api/monitors/{code}`
- Auth: HTTP basic

## Path parameters

- `code` string, required

## Query parameters

- `env` string
- `withEvents` boolean
- `withInvocations` boolean
- `withStatus` boolean

## Headers

- `Cronitor-Version` '2025-11-28' | '2020-10-01'

## Response `200`

- Monitor: V5 serializer replaces 'schedule' with 'schedules' to support multiple schedule expressions. This is used for monitors with multiple cron expressions or Windows Task Scheduler RRULE triggers. Also consolidates public_badge_url and public_detailed_badge_url into a 'badges' object.
  - `attributes` object, nullable, required: Values derived from the monitor configuration.
  - `assertions` string[], nullable: Assertions such as "response.code = 200" or "metric.queue_depth < 100".
  - `created` string, date-time, required
  - `disabled` boolean, required
  - `failure_tolerance` integer, nullable: Failures tolerated before an alert. Default 0.
  - `grace_seconds` integer, nullable: Seconds to wait after a missed or late event before alerting.
  - `consecutive_alert_threshold` integer
  - `group` string, nullable: Group key.
  - `initialized` boolean, nullable, required: Whether the monitor has received telemetry.
  - `key` string, nullable: Unique monitor key. Required when creating a monitor.
  - `latest_event` Event, required
    - `stamp` number, double, required
    - `msg` string, nullable, required: Event message. Null when the event has none.
    - `event` 'req-ok' | 'req-fail' | 'req-trig' | 'run' | 'complete' | 'fail' | 'ok' | 'pause' | 'tick' | 'logs' | 'skipped', required: * `req-ok` - req-ok * `req-fail` - req-fail * `req-trig` - req-trig * `run` - run * `complete` - complete * `fail` - fail * `ok` - ok * `pause` - pause * `tick` - tick * `logs` - logs * `skipped` - skipped
    - `metrics` object, required: Built-in and custom metric values, such as {"duration": 1.25, "queue_depth": 12}. An empty object when the event has none.
    - `client` string, nullable, required: Client that sent the event. Null when unknown.
    - `host` string, nullable, required: Host that sent the event. Null when unknown.
    - `ip` string, required
  - `latest_events` object, nullable, required: Latest event of each kind, keyed by event name. Present with withEvents=true.
  - `latest_issue` object, nullable, required
    - `stamp` number: Unix timestamp the issue started.
    - `state` string
  - `latest_invocations` object[], nullable, required: Present with withInvocations=true.
  - `metric_names` string[], nullable, required
  - `badges` object, nullable, required
    - `simple` string, uri
    - `detailed` string, uri
  - `metadata` string, nullable
  - `name` string
  - `next_expected_at` number, nullable, required: Unix timestamp of the next scheduled run. Null when the monitor has no schedule. May include fractional seconds.
  - `note` string, nullable
  - `notify` union: Notification list keys or inline destinations such as "email:ops@example.com". Omit to use the default list.
    - string[]
    - object
      - `alerts` string[]
      - `events` union: true alerts on every tick. Otherwise run and complete flags.
        - boolean
        - object
          - `run` boolean
          - `complete` boolean
  - `passing` boolean, nullable, required: Present when the request has withStatus=true (the default).
  - `paused` boolean
  - `platform` string, nullable
  - `realert_interval` union: How often to repeat an alert, for example "8 hours", or seconds.
    - integer
    - string
  - `request` object, nullable: The request a check monitor makes. Required when type is check.
    - `url` string: http(s) URL for an HTTP check, or host:port for TCP and UDP.
    - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'HEAD' | 'TCP' | 'UDP': HTTP method, or TCP or UDP.
    - `body` string, nullable: Request body. Null when the check sends none.
    - `headers` object
    - `cookies` object
    - `timeout_seconds` integer: Seconds before the check times out. Free plans allow up to 30; paid plans allow up to 60.
    - `regions` string[]
    - `follow_redirects` boolean
    - `verify_ssl` boolean
    - `use_ipv6` boolean
  - `running` boolean, nullable, required: Present when the request has withStatus=true (the default).
  - `schedules` string[], nullable: Cron expressions, intervals such as "every 5 minutes", or RRULEs.
  - `schedule_tolerance` integer, nullable: Missed runs tolerated before an alert. Default 0.
  - `tags` string[], nullable
  - `timezone` string, nullable: IANA timezone. Defaults to the account timezone.
  - `type` 'job' | 'heartbeat' | 'check' | 'site'
  - `environments` string[]
  - `statuspages` string[]: Status page keys.
  - `site` string, nullable: RUM site key.

## Other responses

- `404`: Not found.

---

[API](https://skmtc.dev/cronitor/apis/cronitor-api.md) - [All operations](https://skmtc.dev/cronitor/apis/cronitor-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cronitor/apis/cronitor-api/revisions/62fb38ef4462?raw)
