Everything is priced in USDC and charged per request. There is no subscription, no minimum, and no monthly commitment.

Models

gpt-6-astra is half of OpenAI’s list price for the same model.
This table is a snapshot. The live price list is GET /v1/models, which returns the rate for each model beside its name — no key required. Read it from there if you are computing costs in code.
Max output is the router’s ceiling on your max_tokens, not a limit of the model. It exists because the quote is priced at max_tokens: an unbounded ceiling means an unbounded hold against your balance for a single request. The relayed models have no internet access of their own, so the router searches on their behalf between rounds. That is a real cost from a real provider, and it costs about $0.00875 per search, capped at 3 searches per request. Search is billed after the fact, not quoted up front, because nothing knows whether a request will search until it does. Quoting for three searches that almost never happen would have charged every caller roughly thirty times what an ordinary chat turn costs.
A turn that actually searches is expensive, and the quote will not warn you. One measured in production quoted 0.0024andsettledat0.0024** and settled at **0.0614 — two thirds of it input tokens, because every tool round re-sends the conversation so far. Read Web search before enabling it on a budget.
The exact figure and the per-request cap are published in the tools array of GET /v1/models. A search is priced per call rather than per token, and the final amount is whatever the search actually cost — which is why it is billed at settlement rather than quoted up front.

What you are actually charged

Three numbers, and they are usually different:
Input tokens are estimated high (about 3 characters per token, plus the router’s own injected instructions), and output is priced at the full max_tokens you asked for. An LLM’s cost is not knowable until after generation, and the settlement scheme needs a price up front.
Real input tokens at the real rate, real output tokens at the real rate, plus whatever search actually cost. This is the figure in x-nanorouter-charged-usdc and on your ledger row.
Quote minus charge, credited back the moment the request settles and netted into your next quote. From the second request onward you are charged approximately your true cost.
A turn that lands above its quote — which is what tool spend does — books the difference as credit debt. It is collected on that payer’s next request, and until it is, held back from what you can withdraw. Nothing is written off in either direction.

Reasoning is not priced separately

The upstream bills reasoning as output tokens, and only the model decides how much of it there is. There is no separate reasoning rate to publish, and no way to quote for it in advance — it lands in your output token count. reasoning_effort defaults to low for exactly this reason. The backend’s own default spends multiple seconds thinking before the first token on even trivial prompts, and you pay for all of it.

Where the money goes

Your deposit sits in Circle Gateway, keyed to your own address. A charge is an EIP-3009 authorization signed on your behalf, batched, and settled on chain. You hold no native gas — on Arc, USDC is the gas token. Unspent credit is withdrawable, less any outstanding debt from a turn that overran its quote.

How billing works, in detail

The quote, the hold, the meter, and the refund — and why it is built this way.