Guides
Monitors
Detect visual changes on any URL and receive webhook notifications.
Monitors periodically capture a URL and notify you when the page content changes. Use them for price tracking, content alerts, uptime monitoring, or competitor surveillance.
Create a monitor
curl -X POST https://api.bytekit.com/v1/monitors \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"interval": 3600,
"notify_url": "https://your-server.example.com/webhooks/bytekit"
}'| Field | Description |
|---|---|
url | The page to monitor |
interval | Check frequency in seconds (e.g. 3600 = every hour) |
notify_url | Webhook endpoint to receive change notifications |
A successful response returns the monitor object with an id prefixed mon_:
{
"id": "mon_...",
"url": "https://example.com/pricing",
"interval": 3600,
"notify_url": "https://your-server.example.com/webhooks/bytekit",
"created_at": "2026-01-01T00:00:00Z"
}List monitors
curl https://api.bytekit.com/v1/monitors \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE"Get a monitor
curl https://api.bytekit.com/v1/monitors/mon_... \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE"Update a monitor
curl -X PATCH https://api.bytekit.com/v1/monitors/mon_... \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"interval": 1800}'Delete a monitor
curl -X DELETE https://api.bytekit.com/v1/monitors/mon_... \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE"Monitor captures
Each time a monitor fires and detects a change, it records a capture event. Retrieve the history with:
curl https://api.bytekit.com/v1/monitors/mon_.../captures \
-H "Authorization: Bearer sk_live_YOUR_KEY_HERE"Each capture in the list represents one detected change event, including the timestamp and a diff of what changed.
Webhook payload
When a change is detected, Bytekit sends a POST to your notify_url with a JSON body:
{
"success": true,
"type": "scrape.completed",
"id": "mon_...",
"scrape_id": "sc_...",
"has_change": true,
"change_pct": 100.0,
"metadata": {},
"scrape": {
"status": "success",
"data": {
"id": "sc_...",
"url": "https://example.com/pricing",
"content": "..."
}
}
}| Field | Description |
|---|---|
has_change | true when the captured content differs from the previous capture |
change_pct | Percentage of content that changed (0–100) |
scrape | Full scrape result envelope (same shape as POST /v1/scrape response) |
Your endpoint must respond with 2xx within 10 seconds. Failed deliveries are retried with
exponential backoff.
Next steps
- API Reference: Monitors — full endpoint schema
- Errors — error codes returned by monitor endpoints