x402 payments: how buying from jurat works
Pay per call in USDC on Base via the x402 protocol: the 402 challenge flow, exact prices, and the fairness guarantee that buyers never pay for failed requests.
The flow
No signup, no API keys, no subscription. Call any paid endpoint bare and you get HTTP 402 with a machine-readable payment challenge in the payment-required header (x402 v2). Your client signs a USDC payment authorization (EIP-3009, Base mainnet) and retries with the payment-signature header; jurat verifies and settles through the Coinbase CDP facilitator and the response arrives in the same call. Client libraries like @x402/fetch do the whole dance in one wrapper.
Prices
Generated from the same constants that drive the paywall, so this table cannot drift from what the 402 actually charges.
| endpoint | price |
|---|---|
POST /v1/snapshot/batch | $0.03 |
/v1/snapshot | $0.01 |
/v1/preflight | $0.005 |
/v1/conformance | $0.50 |
/v1/scores | $0.01 |
/v1/result | $0.02 |
/v1/watch/create | $0.05 |
/v1/wake/create | $0.005 |
/v1/watch/league | $0.10 |
/v1/wake/recurring | $0.05 |
Free forever: the catalog, llms.txt, openapi.json, league list, every attestation record and body, anchors, conformance reports, and all task status endpoints. Verification is never paywalled.
The fairness guarantee
A buyer never pays to learn a request was malformed, and never pays for a failure. Requests with a payment attached are validated before any settlement: a bad parameter returns 400 and the payment authorization is simply never used. If a paid fetch fails downstream (target unreachable, upstream outage), the response is an honest 4xx and settlement is cancelled. Only 200s cost money.
What a bare probe sees
jurat is deliberately paywall-first: an unpaid request to a paid endpoint returns the 402 challenge whatever its parameters look like, including no parameters at all. Validation runs only once a payment is attached. Two consequences worth stating plainly, because they are easy to mistake for bugs:
- A bare
GET /v1/scoreswith no query string returns 402, not 400. Discovery probes and uptime monitors that call a path exactly as listed will always see a valid challenge and can classify jurat correctly. - The free 400 for malformed input applies to paid requests: attach a payment authorization to a bad request and you get a 400, and that authorization is never submitted for settlement. You are never charged to discover a typo.
Every paid endpoint also answers HEAD with the same 402 challenge, so a prober can confirm pricing without spending anything. One exception to the bare-probe rule: /v1/snapshot/batch is POST-only, because the URL list travels in a JSON body. A GET against it returns 405 by design, so probe it with POST.
Discovery for agents
Machine-readable everything: /catalog, /llms.txt, /openapi.json, /.well-known/x402.json, and Bazaar discovery extensions on every 402 challenge.