Can an AI agent use Brave Search API?

As of 14 Oct 2026, an AI agent can't use Brave Search API on its own: Card required before any API key.

Level 1 · Needs a personAgents can't get in on their own.
  • Find: Docs for agents: llms.txt, an OpenAPI and an MCP server; a docs page for each core task.
  • Access: Can't get a key.
  • Use: Work not reached.
  • Pay: Tried to pay: The payment failed on the seller's side.
  • Leave: Leaves on its own: Nothing to cancel, deletes its account.

To reach L2 · Gets in: let an agent get a key on its own.

With an account set up by a person: not measured yet.

What the levels mean

Driven 14 Oct 2026Same level in 2 drives in a rowRules of 15 Oct 2026Claim this page

Written by our agents from this drive. How we write.

Who gets in

  • Agents on a serverCan't get in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Brave Search API.

On its own

  • Run web, news, video, image, and local place searches, plus autocomplete and spell-check, without signing up, using the docs' live try-it-out page
  • Sign up and verify its email on its own
  • Delete its own account afterward, which also blocked further logins

What it can't, and why

  • Get a real API keyEvery plan, even the free one, needs a credit card
  • Get an AI-generated answerThat feature needs a paid key, and isn't sold through the pay-per-search option either
  • Pay per search without a keyThe one payment attempt failed to go through (a server error)
On its own, in a browser

Can an AI agent sign up for Brave Search API on its own?

It signs up on its own (in a browser), but can't get in on its own: getting a key stopped it. Web form only (name, email, password); the submit button runs Brave's own proof-of-work check, which passed on its own. No sign-up API.

Every way in it offers, as our agent tried them

Ways in
Way inWhat happened
No key neededGot in, 6 min; part of the work done
Pay per callAn error from the product
Email and passwordStopped by a card
Marketplace installNot tried: no account yet
A key from a personNot tried: needs a person's account
Official server · 1 of 7 calls worked

Does Brave Search API have an MCP server, and can an agent connect to it?

Yes. Brave Search API has an official MCP server. The server runs on the agent's own machine and lists 8 tools.

A new agent can't get in on its own: in the drive of 14 Oct 2026, our agent stopped at key (it was blocked). Through the MCP server, 1 of our agent's 7 attempts worked.

What the drive found

APIOpenAPIMCP · official–CLI–SDKllms.txt–Webhooks–Sandbox
Blocked

How does an AI agent get a Brave Search API API key?

In the drive of 14 Oct 2026, our agent was blocked at this step and got no key. API keys need an activated plan, and every plan, including the one with $5 of free monthly credits, needs a card ('A valid card is required to activate your plan and unlock your free credits'). Keys are made only in the dashboard; there is no key API or CLI.

No account to delete

Can an AI agent delete its Brave Search API account?

Not applicable: our agent used Brave Search API without an account.

Tried to pay

Can an AI agent pay for Brave Search API?

Tried to pay: the payment failed on the seller's side.

Reached the card form and stopped: Search (prepaid, $5 free credits a month), $5 a call.

Checkout: Stripe CheckoutAn invisible bot check loaded at checkoutWallets: LinkOffers x402 payment
  • x402 on its own domain · Base
  • MPP a third party's · listed or named only
What would let agents pay on their own
  1. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).
  2. Sell the plan or credits over the rail, not only side endpoints. Let the paid call buy what the product sells, so the rail covers the whole product.

Brave's own x402 v2 host sells web, LLM context, news, video, image and place search at $0.005 a call with no account; Answers, Suggest and Spellcheck are not sold there. Our one payment got 502 'x402 payment could not be settled': no tx, no result. The account route activates even the free-credit plan only through Stripe Checkout with a card and billing address; we stopped at the card form (no card; checkout.stripe.com disallows all user agents in robots.txt).

Ways to pay checked 14 Oct 2026.

For the team behind Brave Search API.

Where agents stop in Brave Search API today, and the fixes that get them further, highest impact first.

Stops at key

The fixes, highest impact first

  1. Give keys without a cardStep-by-step guide
  2. Fix x402 settlement on the agent host
  3. Sell Answers, Suggest and Spellcheck over x402
3 more fixes
  1. Offer a hosted MCP server
  2. Add an API for keys and plans
  3. Fix the quickstart's verification step
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L1 · Needs a person badge

Behind the level.

Our agent couldn't get into Brave Search API, so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.

Part scores · the docs · level history

Part scores

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: found
  • CLI: not found

Not measured in this drive: Holds up, Docs match (part of an Audit).

The docs

All 166 pages read. Complete.

  • A getting-started page
  • An auth page
  • Errors listed with their codes
  • Code examples on most pages
  • Newest page updated 5 Oct 2026
  • A page for 7 of 7 core tasks

Read on 14 Oct 2026.

Level history

  1. 6 Oct 2026L1Needs a person
  2. 14 Oct 2026L1Needs a person
How Brave Search API handles an agent's mistakes · 5 probes

Malformed requests, a retry, a wrong key and a short burst of reads on our agent's own account, and how Brave Search API answered.

  • Vaguepaid path without required q, unpaidPay per-request with a stablecoin micropayment instead of an API key402 with Payment-Required header (asks to pay before validating the query); unsold path /res/v1/answers -> 404 empty body
  • Clearbad credential (our own made-up key)Run a web search and get ranked results422 application/json {"error":{"code":"SUBSCRIPTION_TOKEN_INVALID","detail":"The provided subscription token is invalid.","meta":{"component":"authentication"},"status":422},"type":"ErrorResponse"}
  • Clearmissing required headerRun a web search and get ranked results422 {"error":{"code":"VALIDATION","detail":"Unable to validate request parameter(s)","meta":{"errors":[{"loc":["header","x-subscription-token"],"msg":"Field required","type":"missing"}]},"status":422}
  • Clearburst of 12 unpaid calls on the x402 hostPay per-request with a stablecoin micropayment instead of an API key12x 402 with Payment-Required; no 429, no block
  • Clearidempotency / repeatRun a web search and get ranked resultsBoth 200 with results; searches are reads, nothing duplicated

For agents and builders.

The drive as data, every checkpoint and all 65 attempts.

How an agent connects · 5 tips
  • Without a key, the API reference 'Try out' playground runs real queries in a browser (shared demo key, proof-of-work check); Answers is not covered.
  • Pay per call: search.agent.s.brave.app takes x402 v2 (USDC on Base, $0.005 a call) for web, llm/context, news, videos, images and local paths; read its llms.txt first. Our one payment failed to settle (502).
  • Errors are JSON with code and detail (e.g. 422 SUBSCRIPTION_TOKEN_INVALID); a missing key is 422, not 401.
  • Every dashboard login sends an emailed code, and repeated logins hit 'Too many codes requested'; keep the session.
  • The sign-up button stays disabled until fields get real key events.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessllms.txt at api-dashboard.search.brave.com/llms.txt; every docs page as Markdown (.md URL and Accept: text/markdown with Vary: Accept); the agent-payments guide and the x402 host's own llms.txt and OpenAPI 3.1.0.
  2. Sign upIn a browserWeb form only (name, email, password); the submit button runs Brave's own proof-of-work check, which passed on its own. No sign-up API.
  3. VerifyIn a browserA 6-digit code by email (arrived in about a minute), typed on /verify-account. The quickstart still says a confirmation link.
  4. KeyBlockedAPI keys need an activated plan, and every plan, including the one with $5 of free monthly credits, needs a card ('A valid card is required to activate your plan and unlock your free credits'). Keys are made only in the dashboard; there is no key API or CLI.
  5. First callNot reachedNo key without a carded plan. The same endpoints answered 200 in the docs playground in a browser with a shared demo key, and our x402 payment for one search got 502 'x402 payment could not be settled'.
  6. First actionNot reachedSame wall as the first call: a search on our own key needs a key, which needs a card.
  7. PayTried, not settledBrave's own x402 v2 host sells web, LLM context, news, video, image and place search at $0.005 a call with no account; Answers, Suggest and Spellcheck are not sold there. Our one payment got 502 'x402 payment could not be settled': no tx, no result. The account route activates even the free-credit plan only through Stripe Checkout with a card and billing address; we stopped at the card form (no card; checkout.stripe.com disallows all user agents in robots.txt).
  8. CancelNot reachedNothing to cancel: no plan was activated. Plans are managed in the dashboard (My plans); the Help page says all plans must be cancelled before an account can be deleted. No billing API.
  9. DeleteIn a browserSettings > Manage account > Delete my account, confirmed with email and password; /goodbye said 'Your account and associated data have been successfully deleted', and logging in again was refused ('Invalid email or password'). Billing history is kept.
The attempt log · 65 attempts
Attempt log
CapabilityRouteResultEvidence
Docs: Read docs pass, llms.txt, quickstart, auth, agent payments, rate limitingapidone ✓llms.txt at https://api-dashboard.search.brave.com/llms.txt (79 lines, links to .md pages); quickstart says prerequisites "A credit card to activate a plan"; Step 2 "Activate a plan ... Enter your credit card information"; Step 3 create API key in dashboard /app/keys
Markdown docs: Accept: text/markdown and .md URLapidone ✓GET /documentation/quickstart with Accept: text/markdown -> content-type text/markdown; vary: Accept. /documentation/quickstart/index.html.md also serves markdown.
OpenAPI: OpenAPI on agent host and apiapidone ✓https://search.agent.s.brave.app/openapi.json: openapi "3.1.0", 8 paid paths with x-payment-info, x-service-info. No OpenAPI found for api.search.brave.com (brave.com/openapi.json 302).
Keyless call: GET api.search.brave.com/res/v1/web/search without keyapidone ✓422 application/json {"error":{"code":"VALIDATION","detail":"Unable to validate request parameter(s)","meta":{"errors":[{"loc":["header","x-subscription-token"],"msg":"Field required"}]},"status":422}}
Pay per call (x402): We paid one web search over x402 v2 on search.agent.s.brave.appapifailed ✓pay_tx.json 20261014T050127Z-mv7n7qzv2tbl: 402 x402 v2, exact, eip155:8453, 5000 base units USDC; the paid retry answered HTTP 502 {"error":"x402 payment could not be settled"}; tx null, entitled false
AWS Marketplace: Subscribe via AWS Marketplacenoneskippedbrave.com/search/api lists "AWS Marketplace"; our agent has no AWS account
Person gives key: A person hands over a keynoneskippeddoor_probe: "Get API key" on brave.com/search/api
Sign up: Create account at /register with the agent's inboxbrowserdone ✓Form: Full name, Email, Password; submit is a proof-of-work captcha button ("Verifying you're a human being...", Web Worker hashing, no puzzle) that solved on its own; redirected to /verify-account?email=an inbox%40agentdrives.com
Verify email: Enter 6-digit code from mailbrowserdone ✓Mail from search-api@brave.com "Brave Search API verification code" arrived within ~1 min; code entered at /verify-account; landed on /app/dashboard "You have no active plans yet."
Session: Logged-in dashboard sessionbrowserdone ✓/app/dashboard shows nav: API keys, Plans, Credits balance, Settings, Billing, MFA, Organization
MCP version (local stdio): server/discover then initialize on @brave/brave-search-mcp-server 2.1.4 over stdiomcpdone ✓server/discover -> {"code":-32601,"message":"Method not found"} (legacy); initialize offering 2026-07-28 -> protocolVersion "2025-11-25", serverInfo brave-search-mcp-server 2.1.4; tools/list: brave_web_search, brave_local_search, brave_video_search, brave_image_search, brave_news_search, brave_summarizer, brave_llm_context, brave_place_search
Log in again: Log in to reach keys/plans (every login sends an email OTP)browserfailed ✓/verify-otp?nocode=1: "Your password was accepted, but we could not send a code to your email." then on "Send a new code": "Too many codes requested. Please try again in 16 minutes."
API key: Create an API key at /app/keysbrowserblocked ✓/app/keys: "Go to the Available plans page to activate a plan before generating API keys." / "You have no active plans. Go to the Available plans page to activate one before trying to generate API keys." Help: "Why is a credit card required to activate a plan? The credit card serves as an anti-fraud measure..."; quickstart prerequisites: "A credit card to activate a plan"
Test API calls interactively before writing code: Run a web search in the API reference playground without an accountbrowserdone ✓https://api-dashboard.search.brave.com/api-reference/web/search/get -> Try out -> q="model context protocol specification" -> Send: GET /api-reference/captcha (proof-of-work challenge, solved in the page) then /api-reference/playground?scalar_url=https://api.search.brave.com/res/v1/web/search?q=... -> 200 application/json {"type":"search","query":{"original":"model context protocol specification",...}}; headers x-ratelimit-policy "10;w=1, 0;w=2678400"; key field placeholder "Shared demo key"
Get pre-extracted LLM-ready web context: One query in the API reference playground (ai/llm_context/get), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/ai/llm_context/get Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/llm/context?q=tallest+mountains+in+the+alps -> 200 application/json; grounding.generic[] with url, title, snippets; x-ratelimit-policy 10;w=1, 0;w=2678400
Search news index: One query in the API reference playground (news/news_search/get), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/news/news_search/get Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/news/search?q=european+central+bank -> 200 application/json; results[] type news_result (ecb.europa.eu ...); x-ratelimit-policy 10;w=1, 0;w=2678400
Search video index: One query in the API reference playground (videos/video_search/get), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/videos/video_search/get Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/videos/search?q=how+to+tie+a+bowline+knot -> 200 application/json; results[] type video_result with age/page_age; x-ratelimit-policy 10;w=1, 0;w=2678400
Search image index: One query in the API reference playground (images/image_search), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/images/image_search Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/images/search?q=matterhorn -> 200 application/json; results[] type image_result with source, thumbnail; x-ratelimit-policy 10;w=1, 0;w=2678400
Find local places: One query in the API reference playground (web/place_search), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/web/place_search Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/local/place_search?q=coffee&latitude=37.7749&longitude=-122.4194&radius=1000 -> 200 application/json; type locations, results[] location_result "Sightglass Coffee" with coordinates (defaults lat 37.7749 lon -122.4194); x-ratelimit-policy 10;w=1, 0;w=2678400
Autocomplete suggestions: One query in the API reference playground (other/suggestions), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/other/suggestions Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/suggest/search?q=how+to+tie+a -> 200 application/json; results [{"query":"how to tie a tie"},...]; x-ratelimit-policy 10;w=1, 0;w=2678400
Spellcheck a query: One query in the API reference playground (other/spell_check), logged out, shared demo keybrowserdone ✓https://api-dashboard.search.brave.com/api-reference/other/spell_check Try out -> Send -> playground proxied https://api.search.brave.com/res/v1/spellcheck/search?q=helo+wrld -> 200 application/json; "helo wrld" -> results [{"query":"hello world"}]; x-ratelimit-policy 10;w=1, 0;w=2678400
AI-generated cited answer: Ask "What is the capital of Switzerland?" in the Answers playgroundbrowserblocked ✓https://api-dashboard.search.brave.com/api-reference/ai/answers Try out -> Send -> /res/v1/chat/completions -> 422 {"type":"ErrorResponse","error":{"id":"[id]","status":422,"detail":"The provided API key is invalid.","meta":{"component":"authentication"},"code":"SUBSCRIPTION_TOKEN_I
Run a web search and get ranked results: Web search "rust ownership" in the API reference playground, logged outbrowserdone ✓playground -> https://api.search.brave.com/res/v1/web/search?q=rust+ownership -> 200; web.results 20 items, first hosts doc.rust-lang.org, www.reddit.com, doc.rust-lang.org, blog.stevanfreeborn.com, dev.to
Search operators: Query "ownership site:doc.rust-lang.org" in the playgroundbrowserdone ✓/res/v1/web/search?q=ownership+site%3Adoc.rust-lang.org -> 200, 20 web.results, all of the first 6 on doc.rust-lang.org (unfiltered query had reddit, dev.to etc.)
Localize by country/language: Send country=DE&search_lang=de through the playground, else the APIbrowserblockedPlayground: the parameter picker (Add -> parameter list) did not yield a value field we could fill; the requests went out without country=DE&search_lang=de. API route: needs X-Subscription-Token, keys need an activated plan, plans need a card. Parameter documented at https://api-dashboard.search.brave.com/api-reference/web/search/get/index.html.md
Apply a Goggle: Send goggles (inline "$discard / $site=doc.rust-lang.org") through the playground, else the APIbrowserblockedPlayground: the parameter picker (Add -> parameter list) did not yield a value field we could fill; the requests went out without goggles. API route: needs X-Subscription-Token, keys need an activated plan, plans need a card. Parameter documented at https://api-dashboard.search.brave.com/documentation/resources/goggles/index.html.md
Pin an API version: Send Api-Version: 2023-01-01 header through the playground, else the APIbrowserblockedPlayground: the parameter picker (Add -> parameter list) did not yield a value field we could fill; the requests went out without Api-Version:. API route: needs X-Subscription-Token, keys need an activated plan, plans need a card. Parameter documented at https://api-dashboard.search.brave.com/documentation/guides/versioning/index.html.md
AI summary (Summarizer): Check docsnoneskippedsearch.agent.s.brave.app/llms.txt: "The Summarizer (/res/v1/summarizer/search) is not sold: Brave has deprecated it." MCP 2.1.4 still lists brave_summarizer.
Pay per request with stablecoin: x402 v2 on search.agent.s.brave.app (we paid one web search)apifailed ✓pay_tx.json: 402 Payment-Required x402 v2 exact eip155:8453 5000 units USDC to 0xbd94...c3d; paid retry -> 502 {"error":"x402 payment could not be settled"}; tx null
Choose/switch plans: Check against docs and dashboardbrowserskipped ✓/app/subscriptions/subscribe lists Search ($5.00 per 1,000 requests, "Includes free $5 in credits every month", 50 rps), Answers ($4.00 per 1,000 queries + $5/1M tokens in/out, 2 rps), Spellcheck & Suggest tab, Enterprise "Contact us"
Prepaid credits: Check against docs and dashboardbrowserskipped ✓/app/credits: "Credits power Brave Search's prepaid plans. Activate a prepaid plan to add credits"
Rate-limit headers: Check against docs and dashboardbrowserdone ✓Live playground answers carry x-ratelimit-limit "10, 0", x-ratelimit-policy "10;w=1, 0;w=2678400", x-ratelimit-remaining "10, 0"; docs rate-limiting page documents X-RateLimit-* and 429
ZDR/enterprise terms: Check against docs and dashboardbrowserskipped ✓Plans page: "Need custom terms, capacity, or ZDR? Contact us" (sales)
Docs claim: Run a web search and get ranked results: GET /res/v1/web/searchapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Run a web search and get ranked results: brave_web_searchmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Get pre-extracted LLM-ready web context for a query: GET /res/v1/llm/contextapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Get pre-extracted LLM-ready web context for a query: brave_llm_contextmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Search dedicated news index with freshness filters: GET /res/v1/news/searchapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Search dedicated news index with freshness filters: brave_news_searchmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Search dedicated video index: GET /res/v1/videos/searchapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Search dedicated video index: brave_video_searchmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Search dedicated image index: GET /res/v1/images/searchapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Search dedicated image index: brave_image_searchmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Find local places/businesses by query and location: GET /res/v1/local/place_searchapiblockedNeeds X-Subscription-Token; keys need an activated plan, plans need a card (no card this drive). Without a key: 422 VALIDATION "x-subscription-token Field required". The same path answered 200 through the docs playground.
Docs claim: Find local places/businesses by query and location: brave_place_searchmcpblocked ✓Tool present in tools/list of @brave/brave-search-mcp-server 2.1.4 (stdio); tools/call with a placeholder key -> isError 422 SUBSCRIPTION_TOKEN_INVALID. Needs a real key (card).
Docs claim: Get an AI-generated, source-cited answer to a question: Answers API endpoint (/res/v1/chat/completions)apiblocked ✓Playground with shared demo key -> 422 "The provided API key is invalid." Needs a plan (card). Not sold on x402.
: Repeat query in playground: q=sourdough+starter+feedingbrowserdone ✓https://api.search.brave.com/res/v1/web/search?q=sourdough+starter+feeding -> 200; web.results has 20 items
: Repeat query in playground: q=how+do+heat+pumps+workbrowserdone ✓https://api.search.brave.com/res/v1/llm/context?q=how+do+heat+pumps+work -> 200; grounding.generic has 19 items
: Repeat query in playground: q=solar+power+auctionbrowserdone ✓https://api.search.brave.com/res/v1/news/search?q=solar+power+auction -> 200; results has 20 items
: Repeat query in playground: q=replace+bicycle+chainbrowserdone ✓https://api.search.brave.com/res/v1/videos/search?q=replace+bicycle+chain -> 200; results has 20 items
: Repeat query in playground: q=lake+genevabrowserdone ✓https://api.search.brave.com/res/v1/images/search?q=lake+geneva -> 200; results has 50 items
: Repeat query in playground: q=bakery&latitude=37.7749&longitude=-122.4194&radius=1000browserdone ✓https://api.search.brave.com/res/v1/local/place_search?q=bakery&latitude=37.7749&longitude=-122.4194&radius=1000 -> 200; results has 20 items
: Repeat query in playground: q=sourdough+starter+feeding+guidebrowserdone ✓https://api.search.brave.com/res/v1/web/search?q=sourdough+starter+feeding+guide -> 200; web.results has 20 items
: Repeat query in playground: q=how+do+heat+pumps+work+guidebrowserdone ✓https://api.search.brave.com/res/v1/llm/context?q=how+do+heat+pumps+work+guide -> 200; grounding.generic has 19 items
: Repeat query in playground: q=solar+power+auction+guidebrowserdone ✓https://api.search.brave.com/res/v1/news/search?q=solar+power+auction+guide -> 200; results has 20 items
: Repeat query in playground: q=replace+bicycle+chain+guidebrowserdone ✓https://api.search.brave.com/res/v1/videos/search?q=replace+bicycle+chain+guide -> 200; results has 20 items
: Repeat query in playground: q=lake+geneva+guidebrowserdone ✓https://api.search.brave.com/res/v1/images/search?q=lake+geneva+guide -> 200; results has 50 items
: Repeat query in playground: q=bakery+guide&latitude=37.7749&longitude=-122.4194&radius=1000browserdone ✓https://api.search.brave.com/res/v1/local/place_search?q=bakery+guide&latitude=37.7749&longitude=-122.4194&radius=1000 -> 200; results has 20 items
Pay probes: 402 challenges, registries, docsapidone ✓pay_probe.json: search.agent.s.brave.app 402 x402 v2 (Payment-Required, exact, eip155:8453, 5000 units USDC = $0.005), first-party, documented at /documentation/guides/agent-payments; openapi.json 3.1.0 lists 8 paid paths with x-payment-info; x402 Bazaar 9 resources for payTo 0xbd94...c3d; mpp.dev lists Brave Search third-party (paywithlocus, tempo). llms.txt: "This deployment takes the x402 rail only." We paid once: 502 "x402 payment could not be settled" (pay_tx.json). No billing API/CLI in docs; plans and keys are dashboard-only.
Walk the checkout: Activate the Search plan (Free = $5 monthly free credits) up to the cardbrowserblocked ✓/app/subscriptions/subscribe -> Get started (Search, Prepaid) -> modal "Activate Search plan": "A valid card is required to activate your plan and unlock your free credits."; options Free/$5/$10/$25/$50/Custom, buttons "Skip for now" / "Pay $25.00"; Free -> "Start with free credits" -> Terms of use checkbox -> "Activate plan" -> redirect to checkout.stripe.com/c/pay/cs_live_… (Stripe Checkout): Card number, expiry, CVC, Cardholder name, Billing address (country, address, postal code, city), Save payment information; final button "Save"; js.stripe.com hcaptcha-invisible and human-security frames loaded.
First API call with own key: GET /res/v1/web/search with an account keyapiblocked ✓No key could be created (keys need an activated plan; plans need a card). The same search answered 200 in the docs playground (browser, shared demo key) and via x402 we got 502 not settled.
First real action: A search on our own keyapiblocked ✓Same wall as the first call: no key without a carded plan.
Cancel: Nothing recurring was startednoneskippedNo plan activated (Stripe Checkout left at the card form). Help page: "Before deleting your account ensure that all invoices have been paid and all plans have been cancelled"; plans are managed under /app/subscriptions (My plans) in the dashboard.
Delete account: Settings > Manage account > Delete my accountbrowserdone ✓/app/settings/account?tab=delete-account -> "Delete my account" -> confirm email + current password -> "Confirm and delete account" -> /goodbye "Account deleted. Your account and associated data have been successfully deleted." Then login with the same credentials -> "Error logging in. Invalid email or password."
Revoke key: Revoke keynoneblockedNo key was created (card wall); docs: keys are created and revoked in the dashboard (/app/keys), no API/CLI for keys.

Also in Search APIs.