Watch a 402 get answered
Compose a request, run it, and follow the handshake step by step. The snippet underneath is the same call, ready to paste.
Quoted before the call, settled after it. No balance is held between requests.
- request sentno key, no account attached
- 402 payment requiredprice, asset, network and payee quoted
- authorization signedgasless EIP-3009 transferWithAuthorization
- facilitator verifiedvalidated off-chain in one round trip
- settled onchainUSDG transferred, tx hash returned
- response streamingtokens on the wire
No response yet
Pick an endpoint, adjust the parameters, and run the request to see the settled response.
curl -sN https://api.<your-domain>/v1/inference \
-H "content-type: application/json" \
-H "x-wuraw-wallet: 0x…" \
-d '{
"model": "anthropic/claude-fable-5",
"messages": [
{
"role": "user",
"content": "Summarize this contract and flag anything unusual."
}
],
"max_tokens": 512,
"temperature": 0.7,
"stream": true
}'The base URL resolves client-side after mount.
01
Request
Your client calls the router with no key and no account attached.
02
402
The router answers 402 Payment Required with the price, asset, network and payee.
03
Authorize
The wallet signs a gasless EIP-3009 transfer authorization and re-sends.
04
Verify
A facilitator validates the signed payload off-chain in a single round trip.
05
Settle
The transfer lands onchain, the tx hash comes back, and the response streams.
The signed payment header carries an EIP-3009 transferWithAuthorization, which is why the authorization costs no gas and needs no prior approval transaction. The header's name differs between the community specification and the current hosted-facilitator documentation, so the SDK negotiates it rather than hard-coding one.