POST /v1/watches creates an active watch that re-runs a saved query on a cadence.
Every request needs Authorization: Bearer <API_KEY> and Content-Type: application/json.
Creating a watch is free. Credits are reserved only when a scheduled run dispatches, using the same per-surface, success-only billing as an async search. A skipped run costs nothing.
Watches can also be created from the dashboard Watches page or by an agent through the create_watch tool on the MCP server — every path hits this same endpoint with identical validation, plan limits, and billing.

Tenant scope

Restricted (sk_*) keys always create watches for their own owner. Internal keys can act on behalf of one tenant for reads and writes by sending ?owner=<ownerId> or X-AISearch-On-Behalf-Of: <ownerId>; the query parameter wins when both are present. A restricted key’s override is ignored. When an override is applied, the response adds a top-level owner field and an X-AISearch-Owner header containing the enforced owner id.
owner
string
Internal keys only. Owner id to enforce for this write. Overrides the X-AISearch-On-Behalf-Of header when both are sent.

Body

name
string
default:""
Optional display name. Omitted watches use an empty string.
query
string
required
The exact prompt to run on every tick. Non-empty, up to 2000 characters. This endpoint does not accept the prompt alias.
surfaces
string[]
required
One or more surfaces. Allowed values: chatgpt, claude, perplexity, gemini, copilot, google_ai_overview, google_ai_mode, google_search, google_news.
regions
object[]
Up to 10 regions. Omitted: one untargeted (GLOBAL) run per surface.
extract
boolean | object
Auto Extract configuration re-applied on every dispatched run. true and {} extract opportunistically; false or omission disables extraction.
webhookUrl
string
Public HTTPS endpoint that receives each dispatched run’s signed deliveries. Private, loopback, link-local, and metadata destinations are rejected.
schedule
object
required
Cadence in one of two forms. The interval must meet your plan’s floor.

Request

Response

201 Created
watch
object
The created public Watch.
Responses always echo both schedule fields. For an off-grid interval, every is a display convenience; intervalMinutes is the source of truth.

Errors

Creating a watch never returns INSUFFICIENT_CREDITS: creation costs 0 credits, and credits are considered only when a run dispatches.
422

Watches

Scheduling, limits, lifecycle, billing, and run history.

List watches

Page through the owner’s watches.

Update a watch

Change the cadence, extraction, webhook, or status.

Webhooks

Verify signed deliveries from dispatched runs.