Skip to main content

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 is budget ÷ 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 returns 429 Too Many Requests with the body:
429 responses do not currently include 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: The whole batch must fit in the bucket at once. A 25-order create batch needs 250 tokens available when it arrives, or the entire batch is rejected.

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 with GET /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:
TierRead budgetWrite budget
Basic200100
Advanced300300
Expert600600
Premier1,0001,000
Paragon2,0002,000
Prime4,0004,000
Prestige6,0008,000
Write bucket capacity is twice the per-second budget above the Basic tier.

Tier qualification

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.
Fetch your grants from GET /account/limits, returned alongside your current usage_tier:
A grant with no 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.