Skip to main content
Limits apply per organization. Every API key and OAuth token in an organization, including keys used through the MCP server, draws on the same budgets. A request over a rate limit returns 429 with a Retry-After header, and nothing runs.

How limits are counted

A request counts once it is admitted, even if it fails afterwards. Each endpoint has its own budget unless a table below says it shares one. Requests from a signed-in session in the Sixtyfour web app skip the burst budgets: status polling, result downloads, and history exports. They count toward per-minute limits like any other request. API keys and OAuth tokens never skip a limit.

Status polling

GET /job-status answers are cached for up to 10 seconds, so polling a job more often returns the same answer. At one poll every 10 seconds, the budget covers about 50 jobs or runs in flight. Spread the polls out instead of polling every job at the same moment. For more work than that, pass webhook_url and poll only as a fallback. See Outgoing Webhooks. A 429 on a status read does not affect the job. Wait for Retry-After and read again; do not restart the job. Async jobs has a polling helper that does this.

Limits by endpoint

Intelligence and contact

Workflows

Monitors

Atlas

Webhooks

Media

OAuth tokens

POST /oauth/token issues up to 60 tokens per minute per client. Requests that fail client authentication, or are still being checked, also count toward 25 per minute per client and toward 120 per minute shared with other callers. A request that authenticates does not count toward those two. Reuse each token until shortly before its expires_in instead of requesting one per call. See Using OAuth Clients.

Concurrency limits

Each organization runs up to 5 deep searches at a time, people and company combined. A start above that is never refused with 429. It returns 200 with status: "running", and the search then ends failed with this error:
On some accounts, lookalike searches also take one of the five slots. Start a new deep search only after one of yours reaches a final status.

History exports

All callers, web app sessions included, share 5 history-export builds at a time per organization. A sixth returns 429 with Retry-After: 5:

Response headers

Successful responses carry no X-RateLimit-* headers. A 429 from the status polling budget:
A 429 from a per-minute limit:
When Sixtyfour cannot count requests against a burst budget, the endpoint returns 503 with Retry-After: 15 and a detail that starts with Request capacity is temporarily unavailable.

Retry after a 429

  • Wait at least Retry-After seconds, then send the same request again.
  • Workers that share an organization share its budgets. Coordinate them, and add a small random delay after the server’s minimum.
  • Stop after a bounded number of attempts.
  • For many records, use async endpoints, Bulk Intelligence, or the Workflows API instead of many synchronous calls.
This helper retries 429 and 503 responses after Retry-After:
Contact support@sixtyfour.ai if a limit blocks your integration. For other status codes, see Handling Errors.