Rate limits
Each endpoint allows this many requests per minute:
| Method | Endpoint | Per minute |
|---|---|---|
| GET | /contacts | 150 |
| POST | /contacts | 150 |
| GET | /contacts/{username_or_id} | 300 |
| GET | /contacts/{username_or_id}/tags | 300 |
| POST | /contacts/{username_or_id}/notes | 300 |
| PATCH | /contacts/{username_or_id}/status | 300 |
| PATCH | /contacts/{username_or_id}/pipeline_stage | 300 |
| POST | /contacts/{username_or_id}/follow-up | 150 |
| DEL | /contacts/{username_or_id} | 150 |
| GET | /contacts/tags | 300 |
| POST | /contacts/tags | 300 |
| GET | /conversations | 150 |
| GET | /conversations/{username_or_id} | 300 |
| GET | /follow-ups/counts | 1 |
| GET | /follow-ups/stages | 150 |
| GET | /pipeline/stages | 300 |
Every response carries these headers:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed in the current minute. |
X-RateLimit-Remaining | Requests left in the current minute. |
X-RateLimit-Reset | When the limit resets, in Unix seconds. |
Over a limit you get 429 with a Retry-After header that says how many seconds to wait. Wait that long, then retry. The code is rate_limit_exceeded, or rate_limit_exceeded_global in the rare case the API as a whole is busy. If the rate limiter itself is unavailable you get 503 service_unavailable, also with Retry-After.