---
title: "Bulk Create Monitors"
method: POST
path: "/v1/monitors/bulk"
tags: ["Monitors"]
---

# Bulk Create Monitors

`POST /v1/monitors/bulk`

## Request

- Base URL: `https://api.fettle.sh` (the document declares no server; this is the origin it was published from)
- URL: `https://api.fettle.sh/v1/monitors/bulk`
- Auth: API key in header `Authorization`

Create up to 100 monitors in one request.

All of them are created or none is: an invalid monitor, or a batch that
would exceed your plan's monitor limits, rejects the whole request.

A field that fails request validation is reported with its position, for
example `body.monitors.3.target`. Any other rejection of one monitor (its
config, interval, regions or channels) keeps its usual status code, and
the message starts with `monitors[3] ("<name>"): ` so you can tell which
one failed.

## Headers

- `X-Organization-Id` string, uuid, nullable

## Request body

- BulkMonitorCreateRequest: Create several monitors in one all-or-nothing request.
  - `monitors` MonitorCreate[], required: Monitors to create, each shaped like a single create request.
    - `name` string, required
    - `type` 'HTTP' | 'PING' | 'SSL' | 'TCP' | 'DNS', required: Type of probe a worker must run for a :class:`CheckJob`.
    - `target` string, required
    - `interval_seconds` integer, required
    - `timeout_seconds` integer, required
    - `regions` string[], required
    - `config` object
    - `confirmation_threshold` integer, nullable
    - `notification_cooldown_seconds` integer, nullable
    - `channel_ids` string[], nullable
    - `tags` string[]
    - `is_active` boolean

## Response `201`

Successful Response

- BulkMonitorCreateResponse: The created monitors, in request order.
  - `monitors` MonitorCompactRead[], required
    - `id` string, uuid, required
    - `name` string, required
    - `type` 'HTTP' | 'PING' | 'SSL' | 'TCP' | 'DNS', required: Type of probe a worker must run for a :class:`CheckJob`.
    - `target` string, required
    - `status` 'PENDING' | 'UP' | 'DEGRADED' | 'DOWN' | 'PAUSED', required: Aggregated state of a monitor as derived by the results state machine.
    - `is_active` boolean, required
    - `tags` string[]
    - `interval_seconds` integer, required
    - `ssl_expires_at` string, date-time, nullable, required
    - `last_checked_at` string, date-time, nullable, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/fettle/apis/fettle-sh.md) · [All operations](https://skmtc.dev/fettle/apis/fettle-sh/llms.txt) · [OpenAPI document](https://skmtc.dev/fettle/apis/fettle-sh/revisions/f32c8a18606f?raw)
