# Create Monitor

> `POST /monitors` · Monitors

Canonical page: https://clawifi.dev/docs/api/post-monitors

`POST https://api.clawifi.dev/monitors`

- Send your key as `Authorization: Bearer $CLAWIFI_API_KEY`; see [Authentication](https://clawifi.dev/docs/authentication).
- Credits: see [Pricing and credits](https://clawifi.dev/docs/pricing-and-credits).

## Request

**cURL**

```sh
curl -X POST https://api.clawifi.dev/monitors \
  -H "Authorization: Bearer $CLAWIFI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"pricing page","url":"https://example.com","schedule":"<schedule>"}'
```

**Python**

```python
from clawifi import Clawifi

client = Clawifi()  # reads CLAWIFI_API_KEY
result = client.post("/monitors", json={"name":"pricing page","url":"https://example.com","schedule":"<schedule>"})
```

### Body

| Field | Type | Default | Required |
| --- | --- | --- | --- |
| `browser_profile` | string (optional) |  | no |
| `change_threshold` | number | `0.05` | no |
| `content_paths` | array of string |  | no |
| `diff_modes` | array of MonitorDiffMode |  | no |
| `exclude_selectors` | array of string |  | no |
| `extraction_schema` | object (optional) |  | no |
| `formats` | array of string (one of 10 values; see [Sources](https://clawifi.dev/sources)) |  | no |
| `include_selectors` | array of string |  | no |
| `mode` | "auto" \| "http" \| "browser" | `"auto"` | no |
| `name` | string |  | yes |
| `schedule` | MonitorSchedule |  | yes |
| `timeout_seconds` | integer | `30` | no |
| `timezone` | string | `"UTC"` | no |
| `url` | string |  | yes |
| `wait_until` | "commit" \| "domcontentloaded" \| "load" \| "networkidle" | `"domcontentloaded"` | no |
| `webhook_endpoint_ids` | array of string |  | no |

## Response

200 with a JSON object.

Errors use the shared shape; see [Errors](https://clawifi.dev/docs/errors). Try public operations without a key in the [playground](https://clawifi.dev/playground).
