API Documentation
Complete REST API for managing monitors, reading alerts and exporting data. Available from the Pro plan.
Authentication
All requests require a JWT token in the Authorization header. You get the token after login.
Authorization: Bearer <token>
curl -X POST https://omniwatchguard.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "your_password"}' {"token": "eyJhbGciOiJIUzI1NiJ9...", "user": {"id": 1, "plan": "pro"}} Returns the list of all active monitors for your account.
curl https://omniwatchguard.com/api/monitors \ -H "Authorization: Bearer <token>"
const res = await fetch("https://omniwatchguard.com/api/monitors", {
headers: { Authorization: `Bearer ${token}` }
});
const monitors = await res.json(); [{"id": 1, "url": "https://example.com", "name": "Test monitor",
"type": "text", "frequency": 60, "status": "active",
"notify_email": 1, "notify_slack": null, "created_at": "2026-03-01T12:00:00Z"}] Creates a new monitor.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL of the page to monitor |
| name | string | No | Monitor name |
| type | string | No | text | price | stock | visual | css | api | seo | ssl |
| frequency | integer | No | 5, 15, 30, 60 minutes (default 60) |
| notify_email | integer | No | 1 = active, 0 = inactive |
| notify_slack | string | No | Slack webhook URL |
| notify_discord | string | No | Discord webhook URL |
| notify_telegram | string | No | Telegram Chat ID |
| notify_webhook | string | No | Custom webhook URL |
curl -X POST https://omniwatchguard.com/api/monitors \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/prices", "type": "price", "frequency": 15}' {"success": true, "id": 42} Updates an existing monitor. Send only the fields you want to change.
curl -X PATCH https://omniwatchguard.com/api/monitors/42 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"frequency": 5, "notify_slack": "https://hooks.slack.com/..."}' {"success": true} Deletes a monitor. This action is irreversible.
curl -X DELETE https://omniwatchguard.com/api/monitors/42 \ -H "Authorization: Bearer <token>"
{"success": true} Returns the latest detected changes. Optional parameter: ?limit=20 (default 10, max 100).
curl "https://omniwatchguard.com/api/monitors/changes?limit=20" \ -H "Authorization: Bearer <token>"
[{"id": 1, "monitor_id": 42, "url": "https://example.com",
"ai_summary": "Price dropped from $99 to $79.",
"ai_severity": "major", "detected_at": "2026-03-24T09:15:00Z"}] Exports data in CSV format. Parameters: type=monitors|incidents, optional monitor_id.
curl "https://omniwatchguard.com/api/export?type=monitors" \ -H "Authorization: Bearer <token>" -o monitors.csv
curl "https://omniwatchguard.com/api/export?type=incidents&monitor_id=42" \ -H "Authorization: Bearer <token>" -o incidents.csv
Returns the history of the last 50 sent notifications.
curl https://omniwatchguard.com/api/notifications \ -H "Authorization: Bearer <token>"
[{"id": 1, "type": "email", "success": 1, "error": null,
"sent_at": "2026-03-24T09:15:00Z", "url": "https://example.com"}] Error codes
| HTTP Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid request |
| 401 | Unauthorized - token missing or expired |
| 403 | Forbidden |
| 404 | Resource not found |
| 500 | Internal server error |
{"error": "Error description"} ⚡ Zapier & Make Integration
OmniWatchGuard connects natively with Zapier, Make (Integromat) and any automation platform via Custom Webhook. No code needed - connect in 2 minutes.
Zapier
5000+ appsConnect OmniWatchGuard alerts with Gmail, Slack, Google Sheets, Notion, Airtable, Trello and 5000+ other apps.
In Zapier, choose Trigger: Webhooks by Zapier → Catch Hook
Zapier generates a URL like https://hooks.zapier.com/hooks/catch/...
When creating a monitor, in the Custom Webhook section, paste the Zapier URL.
Wait for the first detection or test from dashboard. Zapier receives data automatically.
Make (Integromat)
1500+ appsAutomate complex workflows with Make - send alerts to WhatsApp, update spreadsheets, create Jira tickets or notify your team.
In Make, add a Webhooks → Custom Webhook module as trigger.
Make generates a URL like https://hook.eu1.make.com/...
When creating a monitor, in the Custom Webhook section, paste the Make URL.
Send a test - Make automatically detects the JSON structure and makes it available in your scenario.
Popular automation examples
When price drops - Slack notification + record in Google Sheets
When back in stock - automatic email to customers or SMS via Twilio
When competitor page changes - new task in Trello or Notion
When SSL expires in 14 days - automatic ticket in Jira + email to dev team
When title or meta description changes - notification in Microsoft Teams
On any change - record in Airtable for weekly reports
Webhook Payload
On every detected change, OmniWatchGuard sends a POST request with Content-Type: application/json to your URL.
{
"event": "change_detected",
"monitor_id": 42,
"monitor_name": "Competitor A prices",
"url": "https://competitor.com/product",
"type": "price",
"summary": "Price dropped from 149.99 to 129.99 (-13%)",
"severity": "major",
"detected_at": "2026-04-29T10:23:45.000Z"
} {
"event": "ssl_expiry_warning",
"monitor_id": 15,
"monitor_name": "SSL Monitor - site.com",
"url": "https://site.com",
"hostname": "site.com",
"ssl_days_left": 12,
"ssl_expires_at": "2026-05-11T00:00:00.000Z",
"ssl_issuer": "Lets Encrypt",
"ssl_error": null,
"detected_at": "2026-04-29T06:00:00.000Z"
} Available fields
| Field | Type | Description |
|---|---|---|
| event | string | change_detected or ssl_expiry_warning |
| monitor_id | integer | Monitor ID in OmniWatchGuard |
| monitor_name | string | Name given to the monitor |
| url | string | Monitored URL |
| type | string | Monitor type: text, price, stock, seo, ssl, css, api, visual |
| summary | string | AI summary of the detected change |
| severity | string | minor, major or critical |
| detected_at | string | Detection date and time in ISO 8601 format |
Use the severity field as a filter - send email only if severity = critical. In Make you can build complex conditional logic based on type and severity.
