> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signa.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk Create Watches

> Create up to 100 watches in a single call

## Overview

Bulk-create variant of [Create Watch](/api-reference/monitoring/watches/create).
The full set is validated upfront — no partial inserts. Counts against the
per-plan `watches.maxResources` quota.

## Body Parameters

<ParamField body="watches" type="object[]" required>
  1--100 watch specifications. Each item has the same shape as the
  body of [Create Watch](/api-reference/monitoring/watches/create).
</ParamField>

## Response

<ResponseField name="object" type="string">Always `"list"`.</ResponseField>
<ResponseField name="data" type="object[]">Array of created `Watch` objects in input order.</ResponseField>
<ResponseField name="request_id" type="string">Request identifier.</ResponseField>

## Errors

* **400** — any item fails validation (whole batch rejected).
* **409** — quota exceeded.
* **413** — combined payload exceeds the per-request limit.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.signa.so/v1/watches/bulk" \
    -H "Authorization: Bearer $SIGNA_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: bulk-apple-class9-2026-06-12" \
    -d '{
      "watches": [
        { "name": "Apple US class 9", "watch_type": "class",
          "query": { "version": "v1", "filters": { "niceClasses": [9], "jurisdictions": ["US"] } } },
        { "name": "Apple EU class 9", "watch_type": "class",
          "query": { "version": "v1", "filters": { "niceClasses": [9], "jurisdictions": ["EU"] } } }
      ]
    }'
  ```

  ```ts TypeScript theme={null}
  const created = await signa.watches.bulk({
    watches: [
      {
        name: 'Apple US class 9',
        watch_type: 'class',
        query: { version: 'v1', filters: { niceClasses: [9], jurisdictions: ['US'] } },
      },
      {
        name: 'Apple EU class 9',
        watch_type: 'class',
        query: { version: 'v1', filters: { niceClasses: [9], jurisdictions: ['EU'] } },
      },
    ],
  });
  ```
</RequestExample>

<Note>
  Filter keys inside `query.filters` are **camelCase** (`niceClasses`,
  `jurisdictions`, `ownerId`, ...). Unknown keys -- including snake\_case
  typos like `nice_classes` -- are rejected with `400`, as is `query.match`
  in any form. See [the canonical query
  reference](/guides/monitoring/watches#the-query-dsl).
</Note>
