BlockRun
Best value per dollar

Pay for the outcome.

One endpoint for every model, tool and data source an agent needs — priced in dollars before it runs, settled in USDC on Arc through Circle. A wallet holding USDC on Arc is the only account. No gas per call.

01
How you pay — native x402 on Arc, settled by Circle

A wallet with USDC on Arc. That is the whole setup.

01
Hold USDC on Arc

Any wallet you already control. USDC is Arc's native token, so there is nothing else to acquire — and you never spend it on gas here.

02
Get the quote

Call the endpoint. It answers 402 with the price in dollars and an Arc payment requirement: USDC, the amount, where it goes.

03
Sign, retry, done

Sign an EIP-3009 authorization for exactly that amount and send the call again. Circle verifies and settles it on Arc. 105 models and every tool, one endpoint.

pay.ts
// 1. Ask. The 402 carries the requirement (network, asset, amount, payTo).
const res = await fetch("https://arc.blockrun.ai/v1/chat/completions", { method: "POST", body });
const { accepts: [req] } = JSON.parse(atob(res.headers.get("PAYMENT-REQUIRED")));

// 2. Sign — EIP-3009 transferWithAuthorization against USDC on Arc.
const authorization = { from: me, to: req.payTo, value: req.amount, validAfter: 0n,
  validBefore: now + 300n, nonce: randomBytes32() };
const signature = await wallet.signTypedData({
  domain: { name: "USDC", version: "2", chainId: 5042,
            verifyingContract: "0x3600000000000000000000000000000000000000" },
  types, primaryType: "TransferWithAuthorization", message: authorization });

// 3. Retry with the signed authorization. Circle settles it on Arc.
await fetch(res.url, { method: "POST", body, headers: {
  "PAYMENT-SIGNATURE": btoa(JSON.stringify({ x402Version: 2, accepted: req,
                                              payload: { signature, authorization } })) } });
02
What people build

Nobody ships one
model in production.

The combination is the hard part to buy. Here it is one endpoint, whichever pieces you need.

01
A trading agent

Quotes, odds and on-chain positions, read in one session.

02
A finished video

The clip is one model. The score, the voice and the thumbnail are three more.

03
A research agent

Neural search for the answer, live search for this morning, one model to read both.

04
An agent that calls people

A real number, a voice worth hearing, and a model deciding what to say.

04
An agent · in the terminal

Watch an agent
pay its way.

An agent on this endpoint. It asks, the call is priced before it runs, and it signs for it — a wallet with USDC on Arc, nothing else.

agent · arc
get a second opinion on this race condition from GPT-5.6
blockrun_chat(model: "openai/gpt-5.6-sol", prompt: "review queue/worker.ts — workers occasionally double-claim jobs…")
402 → signed USDC auth → verified
"Two workers can read status='pending' before either UPDATE lands. Move the claim check inside the row lock — SELECT … FOR UPDATE SKIP LOCKED."
$0.0042 · settled on Arc · 0x8f2a…c41d
Settled through
We don't share your data

No training, no retention beyond the request. Privacy policy →

No accounts, no API keys

A wallet signature is the credential. Pseudonymous by default.

An open protocol, not a login

x402 v2 over HTTP; the 402 and the signed authorization are the whole contract.