Monitors#

Watch a public URL on a schedule. Each check scrapes the page, compares a content hash against the last snapshot, and can post a signed monitor.page webhook when the page is new or changed. Intervals: 60, 360, 1440 or 10080 minutes (or 0 for manual runs only). One credit per successful check; failed checks are free, and a lack of credits pauses scheduled checks.

Create a monitor
curl -X POST https://api.luni.gg/v1/monitors \
  -H "Authorization: Bearer $LUNI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Pricing",
    "url": "https://example.com/pricing",
    "intervalMinutes": 360,
    "webhook": {
      "url": "https://your-app.example/luni-monitor",
      "secret": "<your-signing-secret>"
    }
  }'
Run a check now
curl -X POST https://api.luni.gg/v1/monitors/$MONITOR_ID/run \
  -H "Authorization: Bearer $LUNI_API_KEY" \
  -H "Idempotency-Key: monitor-run-1"

MVP scope is one URL per monitor, text diffs, and webhooks. AI goals, crawl/search targets, email and Slack are not included yet. The same watches are available as MCP tools (luni_monitor_*).