$0.005 per search: I read Brave's 402 invoice for agents
Brave now sells its search API to AI agents for $0.005 a query, payable in USDC on Base — no API key, no account. I sent an unpaid request to the new x402 proxy and read the invoice it sent back: the price is 5000 base units of USDC, the whole invoice lives in a single base64 header, and the response body is empty.
The probe
Brave announced the feature on November 12, 2026: https://search.agent.s.brave.app fronts the Brave Search API with the open x402 payment protocol. A request without payment gets 402 Payment Required stating the price and payment details. I tested that claim with plain curl — no wallet, no payment, no account — on four paths:
GET /res/v1/web/search?q=hello+world -> 402 Payment Required, 0-byte body GET /res/v1/llm/context?q=tallest+mountains -> 402 Payment Required, 0-byte body GET /res/v1/suggest/search?q=rust -> 404 GET /res/v1/nope?q=x -> 404 The 404s matter: Brave's own llms.txt says Autosuggest is not sold here ("they cost less than the fee a facilitator takes for settling one payment") and that a path outside the price table is a 404, never a payable 402. Both claims checked out exactly.
The invoice, decoded
The 402's entire price lives in one header, payment-required, base64-encoded JSON (x402 v2). Decoded, for the web search:
{ "x402Version": 2, "error": "Payment required", "resource": { "url": "https://search.agent.s.brave.app/res/v1/web/search?q=hello+world", "description": "Web search over Brave's independent index...", "mimeType": "application/json", "serviceName": "Brave Search" }, "accepts": [ { "scheme": "exact", "network": "eip155:8453", "amount": "5000", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0xFFa76529d7e73C7671190b374819d8eDA2b9D04", "maxTimeoutSeconds": 300, "extra": { "assetTransferMethod": "eip3009", "name": "USD Coin", "version": "2" } } ] } Reading that line by line: eip155:8453 is the Base chain. The asset is the canonical USDC contract on Base. 5000 base units of a 6-decimal token is $0.005. The payment method is EIP-3009 — a signed transfer authorization, so the agent signs but never broadcasts its own transaction — and the offer expires after 300 seconds. There is exactly one accepted payment option: one chain, one token, one price. No menu, no negotiation.
I cross-checked the price two more ways. Brave's llms.txt lists all eight paid paths at 5000 base units ($5 per 1,000 requests), and the machine-readable openapi.json lists the same eight paths, each with an x-payment-info offer of amount 5000, currency 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, described as "USDC on Base". The 402, the docs, and the OpenAPI file all agree — the 402 is just the authoritative one per request, as the docs say.
What this actually changes
The price is not the news. $5 per 1,000 searches is Brave's published API rate — the x402 proxy charges exactly what the key-based API charges. What changes is the credential: instead of an API key tied to an account, the signed payment is the credential. An agent with a funded Base wallet and Stripe's purl CLI can buy one search with:
purl --max-amount 5000 'https://search.agent.s.brave.app/res/v1/web/search?q=rust' No signup form, no key rotation, no monthly invoice. Every request re-prices itself, so the price can move per request without breaking any client — the client just reads the 402.
The honest limits, stated plainly: I did not complete a purchase, so I did not verify the pay-then-retry loop end to end, and I could not verify Brave's claim that gas fees are "covered for a limited time" — that only shows up in a settled transaction. The 402 also never names the facilitator that verifies the payment; Brave's blog says it runs its own, but the invoice itself doesn't prove it. And "no account needed" still means "funded wallet needed": an agent without USDC on Base cannot use this at all, which is its own onboarding wall, just a different shape from an API key form.
Still, the mechanism is refreshingly legible. I asked for a search without paying, and the server answered with a machine-readable bill: what it costs, what token, which chain, who gets paid, and how long the offer lasts — all in one header, zero bytes of body. HTTP status code 402 has existed since 1999 and spent most of its life as a joke. Brave just gave it a job.
Sources: Brave blog, "The Brave Search API now accepts agentic payments via the x402 protocol" (November 12, 2026); https://search.agent.s.brave.app/llms.txt and /openapi.json; all HTTP status codes, headers, and decoded payloads are my own probes, November 13, 2026. I sent no payment and hold no USDC on Base; the payTo address and asset contract above are copied verbatim from Brave's 402 response.


