---
title: "List Watches Route"
method: GET
path: "/api/watches"
tags: ["watches"]
---

# List Watches Route

`GET /api/watches`

## Request

- Base URL: `https://platform.verbiflow.com/api/bridge`
- URL: `https://platform.verbiflow.com/api/bridge/api/watches`
- Auth: one of:
  - HTTP bearer and API key in header `x-flage-org-id`
  - HTTP bearer and API key in header `x-flage-org-slug`

## Query parameters

- `source_kind` 'slack_channel' | 'slack_thread' | 'notification_rule' | 'reaction', nullable
- `enabled` boolean, nullable
- `limit` integer

## Response `200`

Successful Response

- WatchListResponse: Bounded Watch catalog, ordered newest first and filtered by the request.
  - `watches` WatchRecordResponse[], required: Matching Watch records, up to limit.
    - union: Authoritative Watch record; source_kind selects its exact scope shape.
      - SlackChannelWatchRecord: Proactive permission for one Slack channel.
        - `authority` WatchAuthorityResponse, required: Owner authority captured by the server when the Watch was created.
          - `authority` 'service' | 'workspace_admin' | 'member', required: Server-derived authority classification at creation.
          - `captured_at` string, date-time, required: ISO 8601 time when authority was captured.
          - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `cooldown_seconds` integer, required: Minimum seconds between admitted proactive judgments, including silent runs.
        - `created_at` string, date-time, required: ISO 8601 Watch creation time.
        - `creation_key` string, nullable, required: Create identity, or null for a legacy Watch.
        - `daily_cap` integer, required: Maximum admitted proactive judgments per UTC day, including silent runs.
        - `dedupe_key_template` string, required: Configured source-specific deduplication template.
        - `enabled` boolean, required: Whether matching events may be evaluated.
        - `expires_at` string, date-time, nullable, required: ISO 8601 expiry, or null for no expiry.
        - `intent` string, required: Owner instruction carried into Mochi judgment.
        - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `prefilter` WatchPrefilterPayloadOutput, required: Deterministic prefilter: keyword substrings and an author allowlist. Empty lists mean "no prefilter constraint of that kind".
          - `authors` string[], required: Allowed Slack author ids; an empty list imposes no author constraint.
          - `keywords` string[], required: Case-insensitive substrings; any one must match when nonempty.
        - `scope` SlackChannelScopePayload, required: One Slack workspace and channel observed by a channel Watch.
          - `channel_id` string, required: Exact Slack channel to observe.
          - `team_id` string, required: Exact connected Slack workspace to observe.
        - `slack_app_id` string, required: Server-derived Slack application identity.
        - `source_kind` 'slack_channel', required: Slack channel source discriminator.
        - `updated_at` string, date-time, required: Exact version to pass as expected_version on enable.
        - `watch_id` string, uuid, required: Stable canonical Watch UUID.
      - SlackThreadWatchRecord: Proactive permission for one exact Slack thread.
        - `authority` WatchAuthorityResponse, required: Owner authority captured by the server when the Watch was created.
          - `authority` 'service' | 'workspace_admin' | 'member', required: Server-derived authority classification at creation.
          - `captured_at` string, date-time, required: ISO 8601 time when authority was captured.
          - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `cooldown_seconds` integer, required: Minimum seconds between admitted proactive judgments, including silent runs.
        - `created_at` string, date-time, required: ISO 8601 Watch creation time.
        - `creation_key` string, nullable, required: Create identity, or null for a legacy Watch.
        - `daily_cap` integer, required: Maximum admitted proactive judgments per UTC day, including silent runs.
        - `dedupe_key_template` string, required: Configured source-specific deduplication template.
        - `enabled` boolean, required: Whether matching events may be evaluated.
        - `expires_at` string, date-time, nullable, required: ISO 8601 expiry, or null for no expiry.
        - `intent` string, required: Owner instruction carried into Mochi judgment.
        - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `prefilter` WatchPrefilterPayloadOutput, required: Deterministic prefilter: keyword substrings and an author allowlist. Empty lists mean "no prefilter constraint of that kind".
          - `authors` string[], required: Allowed Slack author ids; an empty list imposes no author constraint.
          - `keywords` string[], required: Case-insensitive substrings; any one must match when nonempty.
        - `scope` SlackThreadScopePayload, required: One exact root message and its thread in a Slack channel.
          - `channel_id` string, required: Slack channel containing the thread.
          - `team_id` string, required: Exact connected Slack workspace to observe.
          - `thread_ts` string, required: Exact Slack root-message timestamp.
        - `slack_app_id` string, required: Server-derived Slack application identity.
        - `source_kind` 'slack_thread', required: Slack thread source discriminator.
        - `updated_at` string, date-time, required: Exact version to pass as expected_version on enable.
        - `watch_id` string, uuid, required: Stable canonical Watch UUID.
      - NotificationRuleWatchRecord: Proactive judgment after a Notification rule delivers to Slack.
        - `authority` WatchAuthorityResponse, required: Owner authority captured by the server when the Watch was created.
          - `authority` 'service' | 'workspace_admin' | 'member', required: Server-derived authority classification at creation.
          - `captured_at` string, date-time, required: ISO 8601 time when authority was captured.
          - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `cooldown_seconds` integer, required: Minimum seconds between admitted proactive judgments, including silent runs.
        - `created_at` string, date-time, required: ISO 8601 Watch creation time.
        - `creation_key` string, nullable, required: Create identity, or null for a legacy Watch.
        - `daily_cap` integer, required: Maximum admitted proactive judgments per UTC day, including silent runs.
        - `dedupe_key_template` string, required: Configured source-specific deduplication template.
        - `enabled` boolean, required: Whether matching events may be evaluated.
        - `expires_at` string, date-time, nullable, required: ISO 8601 expiry, or null for no expiry.
        - `intent` string, required: Owner instruction carried into Mochi judgment.
        - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `prefilter` WatchPrefilterPayloadOutput, required: Deterministic prefilter: keyword substrings and an author allowlist. Empty lists mean "no prefilter constraint of that kind".
          - `authors` string[], required: Allowed Slack author ids; an empty list imposes no author constraint.
          - `keywords` string[], required: Case-insensitive substrings; any one must match when nonempty.
        - `scope` NotificationRuleScopePayload, required: One existing Notification rule owned by the current workspace.
          - `rule_id` string, uuid, required: UUID returned by notifications.rules.
        - `slack_app_id` string, required: Server-derived Slack application identity.
        - `source_kind` 'notification_rule', required: Notification source discriminator.
        - `updated_at` string, date-time, required: Exact version to pass as expected_version on enable.
        - `watch_id` string, uuid, required: Stable canonical Watch UUID.
      - ReactionWatchRecord: Explicit invocation through one configured Slack emoji.
        - `authority` WatchAuthorityResponse, required: Owner authority captured by the server when the Watch was created.
          - `authority` 'service' | 'workspace_admin' | 'member', required: Server-derived authority classification at creation.
          - `captured_at` string, date-time, required: ISO 8601 time when authority was captured.
          - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `cooldown_seconds` integer, required: Minimum seconds between admitted proactive judgments, including silent runs.
        - `created_at` string, date-time, required: ISO 8601 Watch creation time.
        - `creation_key` string, nullable, required: Create identity, or null for a legacy Watch.
        - `daily_cap` integer, required: Maximum admitted proactive judgments per UTC day, including silent runs.
        - `dedupe_key_template` string, required: Configured source-specific deduplication template.
        - `enabled` boolean, required: Whether matching events may be evaluated.
        - `expires_at` string, date-time, nullable, required: ISO 8601 expiry, or null for no expiry.
        - `intent` string, required: Owner instruction carried into Mochi judgment.
        - `owner_user_id` string, required: Workspace principal who authorized the Watch.
        - `prefilter` WatchPrefilterPayloadOutput, required: Deterministic prefilter: keyword substrings and an author allowlist. Empty lists mean "no prefilter constraint of that kind".
          - `authors` string[], required: Allowed Slack author ids; an empty list imposes no author constraint.
          - `keywords` string[], required: Case-insensitive substrings; any one must match when nonempty.
        - `scope` ReactionScopePayload, required: One Slack workspace and bare emoji name used for explicit invocation.
          - `emoji` string, required: Bare lowercase Slack emoji name, without colons.
          - `team_id` string, required: Exact connected Slack workspace to observe.
        - `slack_app_id` string, required: Server-derived Slack application identity.
        - `source_kind` 'reaction', required: Reaction source discriminator.
        - `updated_at` string, date-time, required: Exact version to pass as expected_version on enable.
        - `watch_id` string, uuid, required: Stable canonical Watch UUID.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract.md) - [All operations](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/llms.txt) - [OpenAPI document](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/revisions/c80e903ef8f3?raw)
