Skip to main content

Rate limits

Most Jaah API endpoints have no rate limit. The few below do, because each one sends an email, charges a card, calls the payment provider, runs the Help assistant or holds other work open. Most limits are a sliding window: a call is refused while the calls counted in the last window already reach the limit, and it is allowed again as older calls age out. Two are caps on what is open at once instead, under Open at once.

When you are limited​

A refused call gets 429 Too Many Requests and a sentence in detail, for example:

{"detail": "Too many top-ups. Try again later."}

Only Download session transcript sends a Retry-After header. For the others, wait a few minutes before trying again: a call keeps being refused until older calls leave the window. A refused call is not counted against the limit that refused it — but where an endpoint has two limits, a call the second one refuses has already been counted by the first.

The limits​

"Per organization" counts every call from your organization together, whoever makes it; "per user" counts your own calls. Where an endpoint has both, a call must fit both.

People​

EndpointLimitCounted perdetail when refused
Resend invitation3 per hourinvited userToo many invitations for this user; try again later.
Resend invitation and Create user50 invitation emails per dayorganizationToo many invitation emails from this organization today; try again tomorrow.

Create user is never refused for this limit: the user is still created, and the response's invitation is rate_limited instead of sent.

Billing​

EndpointLimitCounted perdetail when refused
Create setup intent10 per hour, and 5 per 10 minutes per userorganization, userToo many attempts to add a payment method. Try again later.
Subscribe to a plan10 per hour, and 5 per 10 minutes per userorganization, userToo many attempts to subscribe. Try again later.
Preview subscription change, Change subscription, Cancel subscription, Undo subscription change, Abandon checkout, Pay invoice30 per 10 minutes, all six togetherorganizationBilling was changed too often. Try again in a few minutes.
Sync billing20 per 10 minutesorganizationBilling was refreshed too often. Try again in a few minutes.
Update billing details60 per 10 minutesorganizationBilling details were changed too often. Try again in a few minutes.
Top up the Jaah AI wallet, and the automatic recharge setting when it turns automatic recharge on10 per hour, both togetherorganizationToo many top-ups. Try again later.
Refund a Jaah AI top-up5 per hourorganizationToo many refunds. Try again later.

Two reads have a budget too, but are never refused. Get billing shares the 60-per-10-minutes budget of Update billing details, and over it answers without details; it also previews the next charge at most 60 times per 10 minutes per organization, and over that its next_charge.available is false. Get billing usage has its own 60 per 10 minutes per organization, and over it its total is reported unavailable.

Help assistant​

EndpointLimitCounted perdetail when refused
Create conversation10 per 10 minutesuserToo many new chats. Wait a few minutes or create a ticket.
Send message20 per 10 minutesuserYou're sending messages too fast. Wait a few minutes or create a ticket.

The Help assistant's limits are counted by each Jaah server separately, so a burst spread across servers can briefly go past them. Build on the numbers above, not on that.

Open at once​

EndpointLimitCounted perdetail when refused
Create request20 access requests waiting for a decisionrequesterToo many open requests. Wait for a decision on one first.
Download session transcript2 downloads being assembled at onceJaah server2 transcript downloads are already being assembled; try again shortly

Waiting does not clear the first: a decision on one of your open requests does. The second answers with Retry-After: 30.