---
title: "Create a website-change monitor"
method: POST
path: "/monitors"
tags: ["Monitors"]
---

# Create a website-change monitor

`POST /monitors`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/monitors`
- Auth: API key in header `x-api-key`

Creates a monitor that periodically checks a page or sitemap for changes and can notify a webhook. Free to call -- only completed check runs consume credits, at 1 credit per completed run regardless of target type or whether a change was detected. `target_type` defaults to "page" (exact-fingerprint diff of the page). "sitemap" watches the sitemap at `url` for added/removed entries instead, honoring `sitemap.include_patterns`/`exclude_patterns` (shell-style globs matched against each URL's path) and `sitemap.max_urls` (default 5000, hard cap 10000).

## Headers

- `Authorization` string
- `x-api-key` string

## Request body

- WebmonitorCreateMonitorBodyDoc
  - `cadence_minutes` integer
  - `enabled` boolean
  - `name` string
  - `notification` WebmonitorNotificationBodyDoc
    - `events` string[]
    - `webhook_secret` string
    - `webhook_url` string
  - `sitemap` WebmonitorSitemapTargetBodyDoc
    - `exclude_patterns` string[]
    - `include_patterns` string[]
    - `max_urls` integer
  - `target_type` 'page' | 'sitemap'
  - `url` string

## Response `200`

Created monitor

- WebmonitorMonitorResponseDoc
  - `code` integer
  - `data` WebmonitorMonitorDoc
    - `cadence_minutes` integer
    - `created_at` string
    - `enabled` boolean
    - `failures` integer
    - `id` string
    - `last_changed_at` string
    - `last_checked_at` string
    - `last_error` string
    - `name` string
    - `next_check_at` string
    - `notification` WebmonitorNotificationDoc
      - `events` string[]
      - `webhook_url` string
    - `sitemap` WebmonitorSitemapTargetDoc
      - `exclude_patterns` string[]
      - `include_patterns` string[]
      - `max_urls` integer
    - `target_type` 'page' | 'sitemap'
    - `updated_at` string
    - `url` string
  - `msg` string

## Other responses

- `400`: Invalid parameters
- `401`: Authentication required
- `500`: Internal server error

---

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