Skip to content

Rate limits ​

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

  • read: reads and cheap non-order mutations.
  • order: order entry (place, cancel, mint a session, cancel-all-after).
  • withdraw: POST /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-09-11

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-09-11
Testnet: test sats have no value. Nothing here is an offer, a solicitation, or advice.