Ask the router one question. Pay 0.005 USDG, or use today’s free ones.

This is the diagram from the front page, executing against POST /api/v1/chat, an OpenAI-compatible model router on Robinhood Chain. Everyone gets 5 free requests a day; after that each one is a real payment. You sign, Tally pays the gas.

Paying needs a wallet with a little USDG on Robinhood Chain (and a little ETH the first time, for a one-time Permit2 approval). The free allowance needs nothing.

Or fund a key your agent spends

You pay once with USDG; the key carries that balance. Your agent calls Tally like any OpenAI-compatible API with Authorization: Bearer and each request is debited (0.005 USDG). No wallet in the agent.

Funding uses the same 402 → sign → settle flow as a request.
POST /api/v1/chat1 · request
Your message goes to the router as a normal chat-completion request.
402 Payment Required2 · price
Without payment the router answers with the exact amount, asset, recipient and window.
PAYMENT-SIGNATURE3 · sign
Your wallet signs a Permit2 transfer. No gas, no transaction, nothing on-chain yet (after a one-time approval on first use).
4 · verify & settle
checks & simulates
POST /verify
broadcasts on Robinhood Chain, pays the gas
POST /settle
Tally checks the signature, simulates the transfer, then broadcasts it and pays the gas.
200 OK PAYMENT-RESPONSE5 · delivered
The completion, with the settlement receipt in a header.
from a terminal
curl · free allowance
curl /api/v1/chat \
  -H 'Tally-Free: 1' -H 'content-type: application/json' \
  -d '{"messages":[{"role":"user","content":"hi"}]}'
# 200 with Tally-Free-Remaining: 4 … then 402 once spent
headless agent · pays per request
AGENT_PRIVATE_KEY=0x… npm run agent -- chat "hi"
# @x402/fetch handles 402 → sign → retry; prints the reply and the receipt