---
title: "Create a Website Monitor"
method: POST
path: "/monitors"
tags: ["Monitoring"]
---

# Create a Website Monitor

`POST /monitors`

## Request

- Base URL: `https://api.anakin.io/v1`
- URL: `https://api.anakin.io/v1/monitors`
- Auth: API key in header `X-API-Key`

Create a scheduled website monitor that checks a URL every intervalMinutes (min 15) and records a change when the content differs — optionally alerting a webhook or email. scope "page" (default) watches one URL; "site" crawls the site each run and tracks pages added/removed/changed; "wire" runs a Wire action each check and diffs its JSON. watchMode "full_page" (2 credits/check) compares the whole page; "specific_data" (3 credits/check) extracts only the fields in outputSchema with AI — ideal for price/stock/status tracking. aiMode (+1 credit/check) filters out trivial noise and summarizes real changes. Active-monitor caps per plan: Free 5, Pro 20, Scale 100.

## Request body

- MonitorCreateRequest
  - `url` string, uri, required: The URL to watch (root URL for site scope; the Wire site's URL for wire scope).
  - `intervalMinutes` integer, required: Check frequency in minutes. Minimum 15.
  - `scope` 'page' | 'site' | 'wire': What to monitor: one page (default), a whole site, or a Wire action.
  - `watchMode` 'full_page' | 'specific_data': Compare the whole page (default) or only the fields in outputSchema, extracted with AI.
  - `watchFormat` 'markdown' | 'html' | 'cleaned_html': Format compared in full_page mode. Defaults to markdown.
  - `outputSchema` object: JSON Schema of the fields to track. Required when watchMode is "specific_data".
  - `aiMode` boolean: AI meaningful-change filtering: ignores trivial noise (ads, timestamps) and summarizes real changes. +1 credit per check.
  - `aiGoal` string: Natural-language description of which changes count as meaningful (used with aiMode), e.g. "only when the price drops or it goes out of stock".
  - `useBrowser` boolean: Render checks with a stealth headless browser (needed for JS-heavy pages). Forced true when sessionId is set.
  - `country` string: Two-letter proxy country code. Defaults to "us".
  - `sessionId` string: Saved browser-session ID for monitoring login-protected pages (see List Browser Sessions).
  - `isActive` boolean: Start running immediately. Defaults to true.
  - `expiresAt` string: Optional end date (ISO 8601 timestamp or YYYY-MM-DD); the monitor auto-pauses when it passes.
  - `alertWebhookUrl` string: Webhook URL that receives signed change alerts.
  - `alertEmails` string: Comma-separated email recipients for change alerts.
  - `maxPages` integer: Site scope: max pages crawled per run.
  - `maxDepth` integer: Site scope: crawl depth (1–5). Defaults to 2.
  - `includePatterns` string[]: Site scope: glob patterns or hand-picked same-site URLs to track.
  - `excludePatterns` string[]: Site scope: glob patterns to skip.
  - `wireActionId` string: Wire scope (required there): the Wire action run each check, e.g. "amazon.search_products" (see Discover Wire Actions).
  - `wireCatalogSlug` string: Wire scope: catalogue slug of the Wire site.
  - `wireCredentialId` string: Wire scope: credential ID when the action needs auth (see List Wire Identities).
  - `wireParams` object: Wire scope: parameters passed to the action each check.
  - `wireWatchPaths` string[]: Wire scope: JSON paths to diff instead of the whole response.

## Response `201`

Monitor created

- Monitor
  - `id` string: Monitor ID.
  - `url` string
  - `intervalMinutes` integer
  - `scope` 'page' | 'site' | 'wire'
  - `watchMode` 'full_page' | 'specific_data'
  - `watchFormat` 'markdown' | 'html' | 'cleaned_html'
  - `isActive` boolean
  - `alertWebhookSecret` string: HMAC signing secret for verifying alert-webhook payloads. Treat as a credential.

## Other responses

- `400`: Bad request — missing or malformed body
- `401`: Missing or invalid API key

---

[API](https://skmtc.dev/anakin/apis/anakin-api.md) · [All operations](https://skmtc.dev/anakin/apis/anakin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/anakin/apis/anakin-api/revisions/5eda91e679e5?raw)
