Rate limits
120 requests per minute per API key, reported on every response.
| Limit | Scope |
|---|---|
| 120 requests per minute | Per API key, shared by the REST API and the MCP server |
| 120 requests per minute | Per connected MCP app (OAuth), separately from your keys |
| 30 descriptions per minute | Per workspace: POST /v1/describe, POST /v1/audiences with a prompt, and the MCP and app equivalents |
Windows are fixed minutes. Every request counts, including ones that fail or are refused.
Headers
Every authenticated response carries:
| Header | Meaning |
|---|---|
RateLimit-Limit | Requests allowed per minute (120) |
RateLimit-Remaining | Requests left in the current window |
RateLimit-Reset | Seconds until the window resets |
Over the limit you get 429 rate_limited with a Retry-After
header in seconds. 503 capacity_unavailable also sends
Retry-After.
Handling 429
async function withRetry(call) {
for (let attempt = 0; ; attempt++) {
const res = await call();
if (res.status !== 429 && res.status !== 503) return res;
if (attempt === 4) return res;
const wait = Number(res.headers.get("Retry-After") ?? 60);
await new Promise((r) => setTimeout(r, wait * 1000));
}
}Other limits worth knowing: pages hold at most 100 items, a Reveal takes at most 1,000 leads,
a batch enrichment at most 10,000 rows, and an audience at most 25 where clauses and 5 topics.