---
title: "Create a monitor"
method: POST
path: "/internal/v1/monitors/{project_id}"
tags: ["Monitors"]
---

# Create a monitor

`POST /internal/v1/monitors/{project_id}`

Create a metric or error monitor.

## Path parameters

- `project_id` integer, required

## Request body

- union
  - MetricMonitorRequest
    - `name` string, required
    - `notifyEveryoneByEmail` boolean
    - `teamIds` integer[]
    - `channelIds` integer[]
    - `repeatInterval` union — Monitor repeat interval configuration.
      - object
        - `strategy` 'default'
      - object
        - `strategy` 'fixed', required
        - `interval` number, required — Fixed interval in milliseconds.
      - object
        - `strategy` 'linear', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
      - object
        - `strategy` 'exponential', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
    - `trendAggFunc` 'sum' | 'avg' | 'median' | 'last' — Aggregation function used to compute the trend baseline.
    - `trendSensitivity` 'low' | 'medium' | 'high' — Sensitivity level of the trend-based anomaly detector.
    - `type` 'metric', required
    - `params` MetricMonitorParams, required
      - `metrics` MonitorMetric[], required
        - `name` string, required
        - `alias` string
      - `query` string, required
      - `column` Column
        - `name` string — Name of the query result column being monitored.
        - `unit` string — Display unit for the column values (e.g. "milliseconds", "bytes").
      - `resolution` number — Resolution in milliseconds.
      - `numEvalPoints` integer
      - `absentPoints` 'zero' | 'ignore' | 'alert'
      - `timeOffset` number — Time offset in milliseconds.
      - `detector` DetectorConfig, required
        - `type` 'manual' | 'auto', required
        - `params` union, required
          - ManualDetectorParams
            - `minValue` number
            - `maxValue` number
            - `recovery` Recovery
              - …
          - AutoDetectorParams
            - `tolerance` 'low' | 'medium' | 'high'
            - `trainingPeriod` number — Training period in milliseconds.
            - `minDevFraction` number
            - `minDevAbsolute` number
  - ErrorMonitorRequest
    - `name` string, required
    - `notifyEveryoneByEmail` boolean
    - `teamIds` integer[]
    - `channelIds` integer[]
    - `repeatInterval` union — Monitor repeat interval configuration.
      - object
        - `strategy` 'default'
      - object
        - `strategy` 'fixed', required
        - `interval` number, required — Fixed interval in milliseconds.
      - object
        - `strategy` 'linear', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
      - object
        - `strategy` 'exponential', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
    - `trendAggFunc` 'sum' | 'avg' | 'median' | 'last' — Aggregation function used to compute the trend baseline.
    - `trendSensitivity` 'low' | 'medium' | 'high' — Sensitivity level of the trend-based anomaly detector.
    - `type` 'error', required
    - `params` ErrorMonitorParams, required
      - `metrics` MonitorMetric[], required
        - `name` string, required
        - `alias` string
      - `query` string, required

## Response `200`

Monitor created.

- MonitorResponse
  - `monitor` Monitor, required
    - `id` integer, required
    - `projectId` integer
    - `key` string — Deduplication key set when the monitor is created from a YAML dashboard template. Empty for monitors created via the UI. When non-empty, (project_id, key) is unique.
    - `name` string, required
    - `isNameTemplated` boolean — True when the name contains template placeholders that are expanded at evaluation time.
    - `type` 'metric' | 'error', required
    - `status` 'active' | 'paused' | 'firing' | 'no_data' | 'disabled', required
    - `pausedUntil` number — Unix timestamp (nanoseconds) until which the monitor is paused. Set when status=paused.
    - `error` string — Last error message that caused the monitor to be disabled. Set when status=disabled.
    - `notifyEveryoneByEmail` boolean
    - `teamIds` integer[]
    - `channelIds` integer[]
    - `repeatInterval` union — Monitor repeat interval configuration.
      - object
        - `strategy` 'default'
      - object
        - `strategy` 'fixed', required
        - `interval` number, required — Fixed interval in milliseconds.
      - object
        - `strategy` 'linear', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
      - object
        - `strategy` 'exponential', required
        - `min` number, required — Minimum interval in milliseconds.
        - `max` number, required — Maximum interval in milliseconds.
    - `params` object
    - `trendAggFunc` 'sum' | 'avg' | 'median' | 'last' — Aggregation function used to compute the trend baseline.
    - `trendSensitivity` 'low' | 'medium' | 'high' — Sensitivity level of the trend-based anomaly detector.
    - `trendUpdatedAt` number — Unix timestamp (nanoseconds) when the trend baseline was last refreshed.
    - `createdAt` number
    - `updatedAt` number
    - `checkedAt` number — Unix timestamp (nanoseconds) when the monitor was last evaluated.
    - `nextCheckTime` number — Unix timestamp (nanoseconds) when the monitor is scheduled to be evaluated next.

## Other responses

- `400` — Invalid request
- `401` — Authentication required
- `403` — Insufficient permissions
- `500` — Internal server error

---

[API](https://skmtc.net/uptrace/apis/uptrace-json-api.md) · [All operations](https://skmtc.net/uptrace/apis/uptrace-json-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uptrace/uptrace-json-api/revisions/550c8881ab9a/schema)
