Checks any agent can buy — no account, per call, for tenths of a cent —
or fund with prepaid credits. Every endpoint answers unpaid requests with
HTTP 402 and machine-readable payment terms, so an agent can discover the
price, pay, and retry without a human.
Pay: two rails, one paywall
# rail 1 — x402 (agents, no account): pay per call in the request
curl -X POST /v1/check/site -d '{"sites":["https://dns.pizza"]}'
# → 402 with PAYMENT-REQUIRED; sign the x402 authorization and retry
# rail 2 — credits (humans/keys): one top-up, then Bearer auth
curl -X POST /topup -d '{"amount": 5.00}' # → {"api_key": "sk_…"}
curl -X POST /v1/check/site -H "Authorization: Bearer sk_…" -d '{}'
# no payment? the 402 tells you everything:
curl -X POST /v1/check/site # → 402 + price + both rails
Endpoints
endpoint
price
what you get
POST /v1/check/site
$0.005
Per site: HTTP status + latency, DNS resolve time, resolved IP, A-record TTL, nameservers, TLS days-remaining, server header. Body: {"sites": [...]} (empty = default fleet).
POST /v1/watch/page
$0.005
Content-change detection vs last snapshot: text-similarity %, changed flag (≥2% threshold), added/removed snippets, last-change time. Body: {"url": "..."}. First call stores the baseline.
POST /v1/monitors
runs billed
Scheduled checks. Body: {"type": "site"|"page", "target": url, "interval_min": 5} + Bearer key. Each run charges the key; up↔down and page-change transitions alert (Pushover + email). Cap/balance failure pauses the monitor and alerts.
GET /v1/monitors
free
List your monitors with state, last run, last summary. Requires your Bearer key — it only ever returns monitors funded by that key.
DELETE /v1/monitors/<id>
free
Funding key required (Bearer).
GET /v1
free
Machine-readable index of all of the above.
Spend safety (credits rail)
daily cap
per key, default $0.10 — POST /cap {"key_prefix", "daily_cap"}
80% of cap
one Pushover warning per key per UTC day
100% of cap
hard stop — 402 daily spend cap reached until 00:00 UTC (x402 rail unaffected)
Monitors: the subscription that is just credits + a schedule
# watch dns.pizza every 5 min ($0.58/day), alert on down/up
curl -X POST /v1/monitors -H "Authorization: Bearer sk_…" \
-d '{"type":"site","target":"https://dns.pizza","interval_min":5}'
# watch a page for material changes every 30 min
curl -X POST /v1/monitors -H "Authorization: Bearer sk_…" \
-d '{"type":"page","target":"https://ayd.yoga/schedule","interval_min":30}'
Billing rules
case
what you are charged
Check succeeds
the listed price, once.
Single check fails
nothing — a failed individual check is refunded.
Profile, some parts fail
the full bundle price. The response
names the missing parts in errors and restates this in billing.
A profile is refunded only if every part fails.
Profile side effect
each profile also stores a free page snapshot of
https://<domain> so your first page_watch on it returns a real
diff. An existing baseline is never overwritten. No charge, and it never fails the call.