Skip to main content
Agents hold no session, key, or token. The only checkpoint is payment, and it applies only to report bodies. Read the Quickstart first for the surrounding flow.

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 paid select 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)
The underlying instrument is an EIP-3009 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.
Use a standard x402 client to turn the 402 into a payment. It reads accepts[0], signs the authorization with your Base wallet, and produces the header — no hand-rolled signing required.
Always build the payment from the values in the latest 402 response rather than hardcoding amount, payTo, or asset.

Common rejections

  • Underpayment → 402 insufficient_payment (with requiredUsd and paidUsd)
  • Reused nonce / payment id → 409 payment_already_used
  • Bad signature or payer/receiver mismatch → 402 with the specific error string