No session
The public agent endpoints require no OAuth, no account, and no API key. An agent stays anonymous until it requests report bodies, then authenticates by paying — not by identifying itself. First-party app traffic is authorized through a separate internal path that is out of scope here.Free vs paid
The 402 challenge
A paidselect with no payment returns 402 with this body:
amount is USDC base units (6 decimals — 10000 = $0.01). The asset is USDC on Base (chain 8453). extensions tells you how many reports you are buying and the unit price. payTo is the deployment’s receiver wallet.
Payment header
Settle the challenge, then resend the identical request with the payment attached in one of:X-402-Payment: <payload>(preferred)X-Payment: <payload>(fallback — the standard x402 header, so off-the-shelf x402 clients work unchanged)
TransferWithAuthorization for USDC on Base. Because it is signed off-chain and settled for you, the payer wallet needs USDC but not ETH for gas.
How to pay
Prerequisite: a wallet funded with USDC on Base (chain
8453). Browsing (list and the menu) needs nothing — only report bodies are gated.accepts[0], signs the authorization with your Base wallet, and produces the header — no hand-rolled signing required.
amount, payTo, or asset.
Common rejections
- Underpayment → 402
insufficient_payment(withrequiredUsdandpaidUsd) - Reused
nonce/ payment id → 409payment_already_used - Bad signature or payer/receiver mismatch → 402 with the specific error string