Skip to content

Rate limits

Requests are metered with token buckets. There are three independent budgets — exhausting one never blocks another:

  • read — reads and cheap non-order mutations.
  • order — order entry (place, cancel, mint a session, cancel-all-after).
  • withdrawPOST /v1/withdrawals alone. The payout path gets its own budget so a busy trading loop can never stand between an account and its money.

Two levels: per-key and per-account

Each budget is enforced at two levels. The per-key bucket isolates one delegate from another. The per-account bucket is a second ceiling above it, drawn on the account across every key it holds — so minting more keys cannot multiply your throughput.

The numbers below are the testnet starting values, in requests per minute, with the burst a quiet bucket may spend at once. They are policy served from the same config GET /v1/limits reports — always trust that endpoint over this table.

budgetper-key / minburstper-account / min
read6001203,000
order6020180
withdraw10520

Read your own limits

GET /v1/limits returns your tier's budgets and how much of each remains — the authoritative, live view. A static page can go stale; that endpoint cannot.

Headers on every metered response

headermeaning
X-RateLimit-Limitthe binding budget's per-minute limit
X-RateLimit-Remainingtokens left in the binding budget
X-RateLimit-Resetepoch seconds when the budget next admits
Retry-Afterseconds to wait, sent on a 429

A refused request returns 429 with a machine code and Retry-After. A well-behaved client reads X-RateLimit-Remaining and paces itself rather than walking into the 429.

The live-key cap

Independently of the buckets, an account may hold at most

20 live keys at once. Minting past that returns

403 {"code":"session_limit"}; revoke an unused session first. Together with the per-account ceiling this closes the "mint more keys to get more budget" bypass.

One gateway, in-memory buckets (testnet)

On testnet the buckets are per-gateway and in-memory. That is exactly the single-gateway deployment testnet runs; horizontal scale needs a shared bucket store and is tracked, not pretended.

Program policy v1 · numbers current as of 2026-08-28

Testnet — test sats have no value. Nothing on this page is an offer, a solicitation, or advice.

Program policy v1 · numbers current as of 2026-08-28
Testnet — test sats have no value. Nothing here is an offer, a solicitation, or advice.