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

# List Watches

> List watches for the calling organization, with cursor pagination

## Overview

Returns the calling org's watches with opaque cursor pagination. Requires the
`portfolios:manage` scope.

## Query Parameters

<ParamField query="limit" type="integer" default="20">Page size (1-100).</ParamField>
<ParamField query="cursor" type="string">Opaque cursor returned in the previous response.</ParamField>

<ParamField query="status" type="string">
  Filter by status: `active` or `paused`. There's a third status, `disabled`, that a watch moves
  to when it's [deleted](/api-reference/monitoring/watches/delete); disabled watches never
  appear in this list, so `disabled` isn't a valid filter value here.
</ParamField>

## Response

<ResponseField name="object" type="string">Always `"list"`.</ResponseField>

<ResponseField name="data" type="object[]">
  Array of `Watch` summaries (see [Create Watch](/api-reference/monitoring/watches/create) for the shape).

  <Info>`alert_count_24h` is always `null` on list responses; use [Retrieve Watch](/api-reference/monitoring/watches/retrieve) for the per-watch count.</Info>
</ResponseField>

<ResponseField name="has_more" type="boolean">True when more pages exist.</ResponseField>
<ResponseField name="pagination" type="object"><Expandable title="pagination"><ResponseField name="cursor" type="string | null">Opaque cursor for the next page.</ResponseField></Expandable></ResponseField>
<ResponseField name="request_id" type="string">Request identifier.</ResponseField>

## Errors

| Status | `type`             | When                                   |
| ------ | ------------------ | -------------------------------------- |
| 400    | `validation_error` | Invalid `status`, `limit`, or `cursor` |

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/watches?status=active&limit=50" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

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

  const watches = await signa.watches.list({ status: "active", limit: 50 });
  for await (const w of watches) {
    console.log(w.id, w.name, w.watch_type);
  }
  ```
</CodeGroup>

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "wat_8kLm2nPq",
        "object": "watch",
        "name": "Class 9 filings (US/EU)",
        "watch_type": "class",
        "query": {
          "version": "v2",
          "filters": { "niceClasses": [9], "jurisdictions": ["US", "EU"] },
          "trigger_events": ["trademark.created", "trademark.status_changed"]
        },
        "delivery_mode": "always_per_alert",
        "status": "active",
        "alert_count_24h": null,
        "last_alerted_at": "2026-07-05T09:12:00.000Z",
        "metadata": {},
        "created_at": "2026-05-11T10:00:00.000Z",
        "updated_at": "2026-05-11T10:00:00.000Z"
      }
    ],
    "has_more": false,
    "pagination": { "cursor": null },
    "request_id": "req_6tYpL2Qn"
  }
  ```
</ResponseExample>

## Related Endpoints

* [Create Watch](/api-reference/monitoring/watches/create) - create a new watch
* [Retrieve Watch](/api-reference/monitoring/watches/retrieve) - get a single watch, including its 24h alert count
* [Bulk Create Watches](/api-reference/monitoring/watches/bulk) - create up to 100 watches at once
