Token-based limits
Every authenticated request costs tokens. Your tier sets your budget: the rate, in tokens per second, at which your balance refills. Your sustained rate for an endpoint isbudget ÷ cost.
Most requests cost the default of 10 tokens. For endpoints that cost more or less, GET /account/endpoint_costs is the authoritative list of non-default costs currently in effect.
Read and Write buckets
You have two independent token budgets:
The split is by operation type, not by protocol. REST and FIX requests drain the same buckets.
Bucket capacity and bursting
Each budget is a token bucket. The bucket refills continuously at your per-second budget, up to its capacity, and a request is allowed whenever the bucket holds enough tokens to cover its cost. There are no fixed windows and no per-second resets. Basic and Advanced Predictions Read buckets, and Write buckets above the Basic tier, hold up to two seconds of budget. When you spend less than your budget, unspent tokens accumulate, and after two quiet seconds the bucket is full. You can then spend up to twice your per-second budget in a single burst before throttling back to the refill rate. This favors event-driven clients that sit idle most of the time and place a block of orders when the market moves. Predictions Read buckets above Advanced, Perps Read buckets, and Basic-tier Write buckets hold one second of budget. You can spend a full second’s budget at once, but idle time banks nothing beyond that.Example
A Premier Write bucket refills at 1,000 tokens per second and holds up to 2,000. At the default cost of 10 tokens per order, it sustains 100 orders per second.When you hit the limit
A rate-limited request returns429 Too Many Requests with the body:
Retry-After or X-RateLimit-* headers. There is no penalty or cooldown. The bucket keeps refilling, and your next request succeeds once the balance covers its cost. At a 1,000 tokens-per-second refill, a 10-token order is covered again 10 ms after a 429. Apply exponential backoff on 429.
Batch endpoints don’t save tokens
A batch request costs the same as making each call individually. Every item in the batch is billed separately:- Batch Create Orders: submitting 25 orders costs
25 × 10 = 250tokens. - Batch Cancel Orders: cancelling 25 orders costs
25 × 2 = 50tokens.
Perps limits use separate buckets
The Perps API uses the same bucket mechanics, including the two-second Write bucket above Basic, but perps traffic is metered in its own Read and Write buckets. Perps calls do not draw down your event-contract budgets, and event-contract calls do not draw down your perps budgets. In effect you have up to four independent buckets: event-contract Read, event-contract Write, perps Read, and perps Write. Check your perps tier and limits withGET /account/limits/perps, the perps counterpart of GET /account/limits.
See the Perps API overview for the full perps surface.
Tiers and budgets
Per-second token budgets in each event-contract bucket:| Tier | Read budget | Write budget |
|---|---|---|
| Basic | 200 | 100 |
| Advanced | 300 | 300 |
| Expert | 600 | 600 |
| Premier | 1,000 | 1,000 |
| Paragon | 2,000 | 2,000 |
| Prime | 4,000 | 4,000 |
| Prestige | 6,000 | 8,000 |
Tier qualification
- Basic: complete account signup.
- Advanced: call the Upgrade Account API Usage Level endpoint.
- Expert, Premier, Paragon, Prime, and Prestige: earned automatically from your trading volume (see Earning higher tiers below), or assigned by Kalshi.
Kalshi may, at its discretion, adjust your tier at any time, including downgrading you from higher tiers following prolonged inactivity. Members may request an upgrade by contacting support with a description of their use case.
Earning higher tiers by volume
Once a day, Kalshi reviews your trading volume and grants Expert, Premier, Paragon, Prime, or Prestige if you qualify. Your volume share is your trailing 30-day volume (counting both sides of every trade you are part of, as maker and as taker) divided by twice the previous calendar month’s total exchange volume:volume share = your trailing 30-day volume ÷ (previous month's exchange volume × 2)
A qualifying review grants the tier for 30 days, and each daily review renews the window while you keep qualifying. Each tier has a higher Earn threshold to gain it and a lower Keep threshold to hold it, so a brief dip does not cost you the tier:
If your volume falls below the Keep threshold, the tier does not drop immediately. It lapses when your current 30-day grant runs out.
Your grants
Your tier is the highest level among your active grants. Each grant raises you to a level on one lane,event_contract (predictions) or margined (perps), until it expires, and records its source:
volume: earned automatically from your trading volume.manual: assigned by Kalshi.
GET /account/limits, returned alongside your current usage_tier:
expires_ts is permanent. You keep your best grant at each level: a longer-lived manual grant is never shortened by a volume grant, and if you qualify by volume while holding a manual grant near expiry, the grant is extended to a fresh 30 days.