webmonitor.io

REST API

Everything the app does, from your own code. Business plan. Keys come from Settings → API keys; send them as a bearer token. 60 requests a minute per key.

Authentication

curl https://webmonitor.io/api/v1/monitors \
  -H "Authorization: Bearer wm_live_…"

Errors come back as { "error": "…" } with 401 (bad key), 403 (missing scope), 402 (plan limit) or 429 (rate limit).

Create a monitor from a sentence

Give a URL and what matters; the same AI setup as the app picks the type, element and rule. Or pass type and rules yourself.

curl -X POST https://webmonitor.io/api/v1/monitors \
  -H "Authorization: Bearer wm_live_…" -H "Content-Type: application/json" \
  -d '{ "url": "https://www.amazon.com/dp/B0DT7L98J1",
        "prompt": "tell me when it is in stock under $1,900",
        "channels": ["telegram", "email"], "intervalSec": 60 }'

# explicit
  -d '{ "url": "https://example.com/pricing", "type": "keyword", "name": "Pricing",
        "rules": [{ "kind": "keyword", "mode": "appears", "terms": ["free trial"] }],
        "intervalSec": 600, "channels": ["webhook"] }'

Monitor types: content, keyword, availability, price, visual, uptime, api, feed, file, multistep. Optional: selector, jsRender, steps[] (click/type/select/press/wait/scroll/goto), useSession.

Read

GET  https://webmonitor.io/api/v1/monitors                 # list
GET  https://webmonitor.io/api/v1/monitors/:id             # one monitor + last 50 changes
GET  https://webmonitor.io/api/v1/changes?since=2026-10-01T00:00:00Z&alerted=1&limit=100
GET  https://webmonitor.io/api/v1/changes?monitor=:id&before=<createdAt of last row>   # paging

Act

POST   https://webmonitor.io/api/v1/monitors/:id   { "action": "check" | "pause" | "resume" }
DELETE https://webmonitor.io/api/v1/monitors/:id

Webhooks

Add a webhook channel in Settings → Notifications and point monitors at it. Every alert is a POST with this JSON and, when you set a secret, an X-Webmonitor-Signature header: hex HMAC-SHA256 of the raw body.

{
  "event": "change",
  "monitor": { "id": "…", "name": "RTX 5090", "url": "https://…" },
  "change":  { "id": "…", "title": "Back in stock", "summary": "Add to Cart is clickable. $1,999 → $1,849.", "createdAt": "…" },
  "url": "https://webmonitor.io/monitors/…"
}

Browser sessions (companion extension)

POST https://webmonitor.io/api/v1/sessions   scope: sessions
{ "url": "https://portal.example.com/account", "cookies": [ { "name": "sid", "value": "…", "domain": ".example.com" } ] }

Telegram bot

Not an API, but often quicker: message @webmonitor_bot with /watch https://… what matters after connecting it in Settings.