> ## 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; there are no partial inserts. Counts against your plan's watch limit.
Requires the `portfolios:manage` scope.

## 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>

<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>

## Errors

| Status | `type`                    | When                                                    |
| ------ | ------------------------- | ------------------------------------------------------- |
| 400    | `validation_error`        | Any item fails validation (the whole batch is rejected) |
| 409    | `resource_quota_exceeded` | Your plan's watch limit is exceeded                     |
| 413    | `payload_too_large`       | Combined payload exceeds the per-request limit          |

## Code Examples

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

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";
  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const created = await signa.watches.bulk({
    watches: [
      {
        name: "Class 9 filings (US)",
        watch_type: "class",
        query: { version: "v2", filters: { niceClasses: [9], jurisdictions: ["US"] } },
      },
      {
        name: "Class 9 filings (EU)",
        watch_type: "class",
        query: { version: "v2", filters: { niceClasses: [9], jurisdictions: ["EU"] } },
      },
    ],
  });
  ```
</CodeGroup>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "wat_8kLm2nPq",
        "object": "watch",
        "name": "Class 9 filings (US)",
        "watch_type": "class",
        "query": { "version": "v2", "filters": { "niceClasses": [9], "jurisdictions": ["US"] } },
        "delivery_mode": "always_per_alert",
        "status": "active",
        "alert_count_24h": null,
        "last_alerted_at": null,
        "metadata": {},
        "created_at": "2026-05-11T10:00:00.000Z",
        "updated_at": "2026-05-11T10:00:00.000Z"
      },
      {
        "id": "wat_3vXq7RmT",
        "object": "watch",
        "name": "Class 9 filings (EU)",
        "watch_type": "class",
        "query": { "version": "v2", "filters": { "niceClasses": [9], "jurisdictions": ["EU"] } },
        "delivery_mode": "always_per_alert",
        "status": "active",
        "alert_count_24h": null,
        "last_alerted_at": null,
        "metadata": {},
        "created_at": "2026-05-11T10:00:00.000Z",
        "updated_at": "2026-05-11T10:00:00.000Z"
      }
    ],
    "request_id": "req_5tQmR2vX"
  }
  ```
</ResponseExample>

## Related Endpoints

* [Create Watch](/api-reference/monitoring/watches/create) - create a single watch
* [Preview Watch](/api-reference/monitoring/watches/preview) - check match volume before bulk-creating
* [List Watches](/api-reference/monitoring/watches/list) - list the resulting watches
