x402 browser sessions: pay per session in USDC, with no account
SpecStream
Agents · · 5 min read
An agent with a wallet can open a real Chromium browser on SpecStream with one HTTP call, no account and no API key. It costs $0.10 an hour, charged by the second. The agent authorizes the most the session can cost, and only the seconds it ran are taken when it ends. A session that never starts costs nothing.
This page shows the call, the prices by duration, and how the other hosted browsers that take x402 charge for the same thing. Every number about another company is copied from its own docs, read on November 13, 2026.
What a session costs, by duration
The rate is $0.10 an hour by the second, plus $1 per 1,000 steps for steps sent one at a time over HTTP. Steps your code sends over the connect URL with Playwright or Puppeteer are not charged, so a session driven that way costs its time alone.
| Duration | The most a session can cost (time alone) |
|---|---|
| 5 minutes | $0.01 |
| 15 minutes | $0.03 |
| 30 minutes | $0.05 |
| 60 minutes | $0.10 |
A session runs from 1 to 60 minutes, and you can extend it while it runs. The price is public: ask the endpoint with no payment and it answers with the amount.
Open a session
1. Ask for the session. Send the settings with no key and no payment.
curl -X POST https://api.specstream.ai/v1/agent/browser/sessions \
-H "Content-Type: application/json" \
-d '{"timeout_s": 300, "max_actions": 0}'
2. Read the price. The answer is 402 Payment Required. Its body says the amount in plain words, and its PAYMENT-REQUIRED header carries the same offer for an x402 client.
{
"status": 402,
"detail": "This browser session costs at most $0.01: 300 seconds and 0 steps. Only what it uses is taken when it ends, and nothing when it never starts."
}
3. Pay and send the same request again. The header offers x402's upto scheme in USDC on Base, Arbitrum or Polygon. Any x402 v2 client signs a Permit2 authorization for the amount and puts it in PAYMENT-SIGNATURE. Nothing moves when you sign.
4. Connect. The answer is 201 with the session, its connect_url and a purchase token.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(connect_url)
page = browser.contexts[0].new_page()
page.goto("https://example.com")
print(page.title())
The same connect_url works with Puppeteer's connect, with browser-use as cdp_url, and with Stagehand.
5. End it. With Authorization: Bearer <token>, POST /v1/agent/browser/sessions/{id}/release ends the session. The seconds it ran are taken from the authorization and the rest is released. POST /v1/agent/browser/sessions/{id}/extend buys more time the same way.
An agent with no wallet can pay by card through MPP on the same endpoint. A card payment is at least $1 unless the session cost nothing.
Steps over HTTP, for an agent with no browser library
An agent that cannot run Playwright drives the session one step at a time: POST /v1/agent/browser/sessions/{id}/actions. Each step costs $0.001. Leave max_actions out and the authorization covers one step for every 5 seconds of the session, so 5 minutes is at most $0.07: 300 seconds and 60 steps. Set max_actions to the number of steps you plan, and the authorization covers that number. Only the steps taken are charged.
Already wrote a client for Browserbase's x402 endpoint?
SpecStream answers the same routes, so the client works with the address changed to https://api.specstream.ai:
POST /x402/browser/session/createwith{"estimatedMinutes": 5}POST /x402/browser/session/{id}/extendwith{"additionalMinutes": 5}GET /x402/browser/session/{id}/statusPOST /x402/browser/session/{id}/terminate
How the hosted browsers that take x402 compare
| SpecStream | Browserbase | Anchor Browser | Browser Use Cloud | |
|---|---|---|---|---|
| Price | $0.10 an hour, by the second | $0.12 an hour, sold in blocks of minutes | $0.50 a session | Credits, bought $1.00 at a time by default |
| What is taken | The seconds the session ran | The block you paid for. Unused time "may be eligible for refund" | The session price | The top-up, spent as credits |
| Networks | Base, Arbitrum, Polygon | Base | Base | Base |
| Account or key | None | None | The page describes x402 for when "you have insufficient credits" | None |
| Wallet | Any x402 v2 client | Any EVM wallet | "Currently only Coinbase Wallet is supported" | A wallet with at least $1 of USDC |
Three things differ for an agent that pays its own way.
You pay for seconds. Browserbase prints a table of blocks: 5 minutes for $0.01, 60 minutes for $0.12. When a session ends early, its quickstart says unused time may be eligible for a refund. On SpecStream the unused part is never taken: the authorization is a ceiling, and the charge is the seconds the session ran.
The price fits a short job. Anchor Browser charges $0.50 USDC for a session. A two minute page read on SpecStream costs $0.01.
The agent holds no balance with us. Browser Use Cloud turns each payment into credits, $1.00 by default, and the agent spends them down. On SpecStream each session is its own payment, so an agent that runs one session leaves nothing behind.
What the agent gets
A real Chromium browser, driven over the Chrome DevTools Protocol or step by step over HTTP. It is the browser SpecStream sells by API key at the same rate: see the headless browser for AI agents for what it does, and agents.md for every call an agent can pay for with x402, including one search or one page read at a time.
Questions
Does the agent need an account, an email address or a key? No. The wallet's signature is the payment, and the purchase token in the answer is the key for that one session.
What if the session fails to start? Nothing is taken. The authorization is released.
What if the session outlasts the authorization? It ends. Extend it before then with POST /v1/agent/browser/sessions/{id}/extend.
Which token and networks? USDC on Base, Arbitrum or Polygon. The PAYMENT-REQUIRED header lists all three, and the client picks one.
Where is the price in machine form? GET https://api.specstream.ai/v1/agent/browser/sessions returns the rate and the steps as JSON, with no key.
More from the blog
Every post
A list of MCP servers (100 active ones), and why your agent needs a list, not ten pages
100 MCP servers on GitHub with 500+ stars and a push in the last month, from one sentence over MCP
Oct 15, 2026 · SpecStream · 6 min read
Ask Claude for a lead list: connect an MCP server that returns rows with their sources
Connect Claude, Claude Code or Cursor to SpecStream's MCP server, describe the companies you want in plain words, approve the most the list can cost, and get every match as rows with the page behind each value
Nov 12, 2026 · SpecStream · 7 min read
Competitor monitoring with MCP: a table your agent rechecks on a schedule
Connect your agent to SpecStream's MCP server, describe the facts you track for each competitor, and turn the table into a monitor that rechecks every row and sends only what changed
Nov 12, 2026 · SpecStream · 7 min read