Current Limits
A few things worth knowing about how these behave:
- They are shared across your whole organisation, not per API key or per user. Creating additional keys does not raise your limit.
- They refill continuously, rather than resetting on a fixed schedule. The “new sessions” limit means you can submit 60 new questions at once, after which capacity returns at roughly one per second. There is no cliff edge at the top of the minute.
- Only new sessions count towards the session limit. Follow-up questions sent to an existing session — by passing
session_idto Create Question — count only towards the overall request limit. Grouping related questions into one session is both faster and cheaper on your limit. - Polling counts as a request, and it is what most integrations spend their request limit on. Each call to Get Question Status uses one, and polling has to share the limit with the calls that create the questions in the first place. At one poll per question every ten seconds, around 30 questions in flight leaves you comfortable headroom; polling every second, six or seven questions is all your budget stretches to. If you need to track more than that at once, pass a
callback_urland let a webhook tell you when each answer is ready — that removes polling from your budget entirely, and it is the approach we recommend for any integration running at volume.
When You Are Rate Limited
The API responds with HTTP429 and a Retry-After header telling you exactly how many seconds to wait:
integer
Seconds to wait before retrying. Always matches the
Retry-After header.integer
The maximum number of operations allowed in the window.
integer
The length of the window the limit applies over, in seconds.
429 means the request was rejected before any work started, so it is always safe to retry.
Handling Limits Gracefully
HonourRetry-After, then back off exponentially if you are limited repeatedly. This keeps your integration moving at the fastest rate we can serve without you having to guess at a delay.