Skip to main content

The limit

Each API key can make up to 90 requests every 10 seconds. That’s about 9 requests per second, averaged over a 10-second window. The limit applies to every request that sends that key in the X-API-KEY header, on both the REST API and the MCP server. Each key has its own limit, so one client’s traffic never uses up another client’s. Webhooks from your connected tools (Instantly, HubSpot, RB2B and so on) don’t send an API key, so they don’t count toward this limit.

When you go over

Requests over the limit get a 429 Too Many Requests response and are not processed. Nothing is saved, so it’s safe to send the same request again. The limit resets continuously. Once your request rate drops back under 90 in 10 seconds, requests go through again.
A 429 response may not have a JSON body, and it doesn’t include a Retry-After header. Check the status code, not the body.

Staying under the limit

  • Back off and retry. On a 429, wait about 10 seconds, then retry. If it happens again, wait longer each time (for example 10, 20, then 40 seconds).
  • Upsert instead of look-up-then-write. PUT /public/v2/contacts and PUT /public/v2/companies create the record if it doesn’t exist and update it if it does, so one request does the job of two. See Contacts and Companies.
  • Page through results with the largest page size. List endpoints return up to 100 records per page. See Pagination.
  • Spread out large imports. If you’re loading thousands of records, pace your requests to stay under 9 per second.
  • Use one key per workspace. When you manage several clients, give each integration that client’s own key. Each key gets its own limit.