Skip to main content
target says what a monitor watches, and change_detection says how a difference becomes a change. Only name and target are required.
This page target has no instructions, so detection is inferred as exact, and the monitor runs daily.

Change detection

Omit change_detection and it’s inferred as shown. Any other pair returns 400, including exact with page instructions and semantic without them. Semantic detection takes an optional confidence_threshold from 0 to 1 (default 0.75). The judge rates each confirmed difference:
  • It matters, with confidence at or above the threshold: reported as a change, and the baseline moves to the new content.
  • It matters, with confidence below the threshold: not reported yet. The baseline stays, so the next run checks the same difference again.
  • It doesn’t matter: not reported, and the baseline takes the new content silently.

Page

Watch the visible text of one page. Each selector list takes up to 50 selectors of 1–2,048 characters. Every run fetches the page fresh. If the filtered page has no usable text, the run fails with fetch_failed and the old baseline stays. An exact monitor reports the first fetch that differs from the baseline. A semantic monitor fetches the page again to confirm a difference before the judge sees it.

Sitemap

Watch a sitemap for URLs that are added or removed. URLs are normalized (lowercase host, no trailing slash or fragment) and kept only for the site and its subdomains. When a run sees a difference, it reads the sitemap again and reports only the URLs both reads agree on.

Extract

Watch the pages of a site that matter for your instructions. A discovery crawl picks up to max_pages pages that fit instructions and schema, and it refreshes that set periodically. Each run fetches the tracked pages again, confirms text differences, and asks the judge whether they matter. Extract monitors never compare extracted data. schema gives the judge extra context and shapes the baseline data on Retrieve a monitor, which refreshes about once a day. Changes contain diffs, summaries, and evidence, not data in your schema’s shape.

Update a target

PATCH /v1/monitors/{monitor_id} replaces target as a whole, so send every field you want to keep, including instructions and selectors. Send change_detection together with target. If you leave it out, the monitor keeps its current detection type even when the new target implies another one. For example, adding instructions to an exact monitor without "change_detection": {"type": "semantic"} leaves it exact.
Any change to target or change_detection, including confidence_threshold, discards the baseline and queues a new baseline run, which reports no change. Updating name, tags, schedule, status, or webhook keeps the baseline.

Limits and errors

An unsupported target and detection pair, or a target URL that isn’t public, returns 400 INPUT_VALIDATION_ERROR with a details list of each problem. See Limits and errors for every limit and error code.