Caching and refunds
Repeats cost half. Unused budget comes back.
Response cache
A byte-identical request can be answered from cache without touching a model. A hit is billed at 50% of the normal token charge and returns X-ArcRouter-Cache: HIT.
- Deterministic by default. Only requests with
temperature: 0are cached automatically. - Opt in or out per request with the
X-ArcRouter-Cacheheader:oncaches at any temperature,offbypasses. - Tenant scoped. Your cache is keyed to your key or paying wallet. A hit never crosses tenants.
- Non-streaming only.
- Fails open. Any cache problem just sends the request upstream.
curl https://arcrouter.co/v1/chat/completions \
-H "Authorization: Bearer $ARCROUTER_KEY" \
-H "X-ArcRouter-Cache: on" \
-H "content-type: application/json" \
-d '{"model":"gpt-oss-20b","messages":[{"role":"user","content":"Define x402 in one line."}]}' Refunds
USDC is owed back to a wallet in four cases:
- Overpayment. A pay-per-call ceiling minus the real charge.
- Failed call. You paid and the model failed. The whole amount returns.
- Failed deposit. A deposit settled but could not be credited.
- Key closed. The remaining balance of a revoked key.
Refunds are batched per wallet and sent from the treasury on a sweep that runs every 10 minutes. Very small amounts wait until they add up to the minimum.
Empty replies are free
If a model returns no usable text, the charge is waived. On pay-per-call the whole ceiling is refunded.