Skip to main content

How rate limiting works

The API uses a token bucket.
  • Bucket capacity: 100 tokens
  • Refill rate: 10 tokens per second
  • Default request cost: 1 token
  • Expensive request cost: 5 tokens
All requests authenticated against the space share the same bucket.

Expensive endpoints

These synchronous contact write endpoints cost 5 tokens per request:
  • POST /contacts
  • PATCH /contacts/{id}
If you want the lower-cost write path, use POST /contacts/upsert. It keeps the default request cost of 1 token and is the recommended route for synchronization and mass updates.

Response headers

Every rate-limited authenticated response includes these headers: When the API rejects a request with 429 Too Many Requests, the response also includes:

Example

Best practices

  • Prefer POST /contacts/upsert for large imports and recurring syncs.
  • Spread bursts when you send expensive synchronous contact writes.
  • Read Retry-After before retrying a 429 response.
Last modified on June 10, 2026