Rate limits
Per-workspace request budgets, the headers that describe them, and how to back off.
Rate limits protect your workspace and the platform. Once a request is authenticated, limits are counted per workspace: every API key of the same workspace shares the same budgets. Requests that are not yet tied to a workspace are counted per client IP.
All limits use a 60-second window. The counter starts with the first request in the window and resets when the window ends.
General API limit
Most /api/* routes are behind a general limit that scales with your plan:
Stricter limits on specific routes
Some routes carry a stricter limit. Where it is added on top of the general limit, a request must pass both. Calls, WhatsApp, email and billing routes are governed by their own limit instead of the general one.
Loading many contacts? Use a single POST /api/campaigns/{campaignId}/contacts/bulk request (up to 5,000 contacts) instead of one request per contact.
The limit on /api/calls, /api/whatsapp and /api/email fails closed: if Jelliu cannot count requests reliably, those routes answer 429 until it can, so that outbound spend is never uncapped.
Response headers
Responses from rate-limited routes include:
When several limits apply to one request, the RateLimit-* headers describe one of them. Always rely on Retry-After when you receive a 429.
When you hit a limit
The API answers 429 Too Many Requests with code RATE_LIMIT_EXCEEDED:
The message differs between limits (for example Rate limit exceeded for outbound operations or Too many agent operations, please slow down); the code is always RATE_LIMIT_EXCEEDED.
Handling 429 responses
Other limits
- MCP server. The MCP endpoint allows 120 requests per minute per client IP. Each tool the assistant calls is an API request and also counts against your workspace limits above.
- Web chat widget. Public widget traffic is limited per visitor IP, per widget (its
rate_limit_rpmsetting, 30 by default) and per workspace (300 per minute across all widgets). See Web chat widget. - Plan capacity such as concurrent calls, and budgets you configure on agents, are not rate limits. They return their own codes (
MAX_CONCURRENT_CALLS_REACHED,AGENT_BUDGET_EXCEEDED); see Errors.

