altrouter.ai
CORE

Limits & credits

How balance, billing and request limits work — and how to cap individual keys.

Credits

The account balance is held in credits, 1 credit = $1. Each request first reserves an upper-bound estimate (a hold), then settles the actual cost. Check the current balance with GET /v1/credits.

cURLJSON
curl https://api.altrouter.ai/v1/credits -H "Authorization: Bearer ar-..."

Top up in the Credits section of your dashboard (cards, SBP, crypto). At a zero balance, requests get 402 insufficient_quota.

Rate limits

Requests are counted per minute, per key, in a fixed one-minute window. The default is 600 requests per minute; an individual key can be raised or lowered in the dashboard.

The limit applies to the generating endpoints — /chat/completions and /images/generations. The read-only /models and /credits endpoints are not rate limited.

Every response from a generating endpoint carries the x-ratelimit-limit and x-ratelimit-remaining headers. On exceeding the limit you get a 429 with retry-after: 60 — the worst-case number of seconds left in the window.

Per-key limits

Each key can be given its own requests-per-minute limit and a spending cap over a period — day · week · month · total. This bounds the blast radius of a leaked key and lets you hand keys to teams with predictable spend.

A request on a key that has exhausted its spending cap gets a 402 insufficient_quota with code: "spend_limit_exceeded" — the same status as a zero account balance, but a different code.

i
Configured in Keys → the selected key. Without an explicit limit, a key uses the account default. The spending cap is checked before a request and incremented after billing settles, so a burst of concurrent requests can overshoot it slightly — it is a soft guard, not a hard boundary.
NextKey security