---
title: "Bulk update monitors"
method: PUT
path: "/api/synthetics/monitors/_bulk_update"
tags: ["synthetics"]
---

# Bulk update monitors

`PUT /api/synthetics/monitors/_bulk_update`

**Spaces method and path for this operation:**

<div><span class="operation-verb put">put</span>&nbsp;<span class="operation-path">/s/{space_id}/api/synthetics/monitors/_bulk_update</span></div>

Refer to [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces) for more information.

Partially update multiple monitors in a single request.
Each `updates` entry has its own `id` and `attributes` patch, so one request can apply a different change per monitor. Unspecified fields are left unchanged. Patches use the same merge, validate, and encrypt path as `PUT /api/synthetics/monitors/{id}`.
For private-location monitors, Fleet is synced once for the batch instead of once per monitor.
You must have `all` privileges for the Synthetics feature in the Observability section of the Kibana feature privileges.
This is a versioned public API (`elastic-api-version: 2023-10-31`).

## Request body

- object
  - `updates` object[], required — Monitors to update. Minimum 1 entry, maximum 1000. Each `id` may appear at most once. `attributes` must contain at least one field.
    - `attributes` object, required — Attributes to update for the monitor. You can specify the same fields as in `PUT /api/synthetics/monitors/{id}`. An empty object is rejected.
    - `id` string, required — The monitor config ID to update.

## Response `200`

A successful response. The `result` array is in request order. Per-id failures (not found, validation, Fleet sync) set `updated: false` and `error` without failing the whole batch. `errors` is present only when there are service-level sync errors.

- object
  - `errors` unknown[] — Optional service-level errors from the bulk sync.
    - unknown
  - `result` object[], required
    - `error` string — Present when `updated` is `false`.
    - `id` string, required — The monitor config ID from the request.
    - `updated` boolean, required — If `true`, the monitor was updated. If `false`, see `error`.

## Other responses

- `400` — Bad request. Returned when `updates` is missing or empty, an `attributes` object is empty, or the same `id` appears more than once.

## Changes

> 176 revisions in range; 20 not diffed.

- **2026-09-21** `2edb5c1dcf24` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/elastic/apis/kibana-apis/changes/api/synthetics/monitors/_bulk_update/put.md)

---

[API](https://skmtc.dev/elastic/apis/kibana-apis.md) · [All operations](https://skmtc.dev/elastic/apis/kibana-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/elastic/apis/kibana-apis/revisions/84f30e7da461?raw)
