Rate limits
Per-workspace request budgets, the headers that describe them, and how to back off.
Rate limits protect your workspace and the platform. REST API limits are counted per workspace once the request is authenticated: every API key of the same workspace shares the same budgets, and there is no per-IP limit in front of /api/*, so many workspaces calling from one egress IP do not share a budget. The public endpoints that are not tied to a workspace (the MCP endpoint, the web chat widget, Zapier) 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. Each limiter that applies to a request counts it once.
General API limit
/api/* routes are behind a general limit that scales with your plan. The exceptions are /api/whatsapp and /api/billing, which use only their own limits below.
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. WhatsApp 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 outbound limit fails closed: if Jelliu cannot count requests reliably, the routes it covers answer 429 until it can, so that outbound spend is never uncapped. Reads such as listing calls are not affected.
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.
- Zapier and inbound webhooks.
/zapier/*and the webhook receivers share 200 requests per minute per client IP. See Zapier. - 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.

