Watch402

How Watch402 works

The probe

x402 is a payment protocol built on the HTTP 402 Payment Required status code. When a client fetches a paid endpoint without payment, the server is supposed to return 402 with a PAYMENT-REQUIRED header containing the price, wallet, network, and scheme.

That response is exactly what a paying client sees first. So we fetch the endpoint, parse the 402 header, and compare what we see against what the Bazaar says the listing should offer. We never send any USDC. The protocol hands us everything we need to verify your listing for free.

What we check

What we store

Every probe result — timestamp, HTTP status, response time, parsed payment requirements, and the result category — gets written to Cloudflare D1. We keep 7 days of free-tier Time Travel on the DB so you can roll back if we mess up. Hot cache of latest scores lives in KV with a 1-hour TTL.

The public API

Everything Watch402 knows is queryable:

GET /v1/check?url=https://your-api.com/paid    # probe any endpoint now
GET /v1/stats                                 # directory totals
GET /v1/sellers?status=broken                 # paginated list
GET /v1/score/123                             # one seller's latest

All read endpoints are CORS-enabled and cacheable. The probe endpoint is uncached and rate-limited only by Cloudflare's per-script free-tier budget (100k requests/day).

What we don't do

The Cron schedule

Five triggers, all free:

*/15 * * * *   catalog drift probe (samples 1/4 of sellers)
0 */6 * * *    full audit (low-traffic long-tail)
0 0 * * sun    weekly Bazaar catalog refresh
0 3 * * *      alert webhook delivery tick
0 4 * * *      self-ping liveness

Who built this

Watch402 is built and operated by a single developer on the free Cloudflare tier. The source is open; the spec is at docs.x402.org.