Monitors API endpoint
Returns the caller's own monitor's most recent check runs (most recent first, capped at 50), including webhook delivery status per run.
/monitors/{id}/checksRequires a dashboard JWT (Authorization: Token <jwt>) or an x-api-key. Free to call.
Notable response fields:
changed: whether this run detected a difference from the prior baseline.diff (page target) / added_urls, removed_urls (sitemap target): populated only when
changed is true.skipped: true when the run never reached the target (e.g. the account had insufficient
credits at the time) — distinct from error, which is a target fetch/parse failure. Skipped
runs are always free.billed: whether this run actually consumed a credit.webhook_deliveries: one entry per event this run's notification config sent
(change.detected and/or run.completed), each with a status of delivered, rejected,
failed, or skipped_unsafe_url.| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| Authorization (header) | string | No | Dashboard JWT in the form `Token <jwt>` (use this or x-api-key) | ||
| x-api-key (header) | string | No | API key (alternative to a dashboard JWT) | ||
| id (path) | string | Yes | Monitor ID returned by your account monitor create/list response; replace the illustrative example with your own ID | 66d2f0b1c2a4e5f6a7b8c9d0 |
curl -X GET "https://api.crawlora.net/api/v1/monitors/66d2f0b1c2a4e5f6a7b8c9d0/checks" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": [
{
"id": "66d2f0c1c2a4e5f6a7b8c9d1",
"monitor_id": "66d2f0b1c2a4e5f6a7b8c9d0",
"checked_at": "2026-08-22T10:00:00Z",
"changed": true,
"diff": "- Starting at $29/mo\n+ Starting at $39/mo\n",
"billed": true,
"webhook_deliveries": [
{
"event": "change.detected",
"status": "delivered",
"status_code": 200,
"attempts": 1,
"delivered_at": "2026-08-22T10:00:02Z"
}
]
}
]
}Request schema
No body schema
Response schema
#/definitions/webmonitor.checkListResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].added_urls | array | No | ||||
| data[].billed | boolean | No | true | |||
| data[].changed | boolean | No | false | |||
| data[].checked_at | string | No | 2026-08-22T10:00:00Z | |||
| data[].diff | string | No | ||||
| data[].error | string | No | ||||
| data[].fingerprint | string | No | ||||
| data[].id | string | No | 66d2f0c1c2a4e5f6a7b8c9d1 | |||
| data[].monitor_id | string | No | 66d2f0b1c2a4e5f6a7b8c9d0 | |||
| data[].removed_urls | array | No | ||||
| data[].skipped | boolean | No | false | |||
| data[].webhook_deliveries | array | No | ||||
| data[].webhook_deliveries[].attempts | integer | No | 1 | |||
| data[].webhook_deliveries[].delivered_at | string | No | 2026-08-22T10:00:02Z | |||
| data[].webhook_deliveries[].error | string | No | ||||
| data[].webhook_deliveries[].event | string | No | change.detected, run.completed | change.detected | ||
| data[].webhook_deliveries[].status | string | No | delivered, rejected, failed, skipped_unsafe_url | delivered | ||
| data[].webhook_deliveries[].status_code | integer | No | 200 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 401 | Authentication required | #/definitions/app.Response |
| 404 | Monitor not found | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/monitors/66d2f0b1c2a4e5f6a7b8c9d0/checks" \
-H "x-api-key: $CRAWLORA_API_KEY"