Rate limits
How many requests a minute, and how to back off properly.
The API is rate limited per minute. Normal integrations never notice; bulk loads do, so it’s worth knowing the shape before you write the loop.
The limits
- Authenticated requests: 120 a minute, counted across your whole account.
- Failed-authentication requests: 60 a minute, per IP address.
Counted per account, not per key
Minting a second key gets you nothing — both draw on the same budget. Per-key limits would isolate your integrations from each other but would also be a trivial bypass.
The failed-auth budget is separate on purpose: a broken client hammering with a bad key can’t consume the allowance your working integration depends on.
When you're limited
You get 429 with headers telling you what to do:
HTTP/1.1 429 Too Many Requests
Retry-After: 23
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1735689600Wait exactly Retry-After seconds and try again. That header is what makes a limit usable rather than merely punitive — you don’t have to guess, and an exponential backoff that ignores it will be slower than necessary.
The headers currently appear on 429 responses only, not on successful ones, so you can’t watch your remaining budget in advance. Pace by the published limit instead.
Loading a lot of contacts
With no bulk endpoint, 120 a minute is your import speed — roughly 7,000 an hour, so ten thousand contacts is about 85 minutes.
For a one-off migration, use a CSV import instead. It handles the whole file in one go, validates every address, and costs nothing in API budget. The API is the right tool for a continuous trickle of new signups, not for moving an existing audience.
Common issues
429s in a tight loop
Add a small delay between requests — roughly half a second keeps you under the limit — and honour Retry-After when it does happen.
429 on requests that were failing anyway
You’ve hit the failed-auth budget. Fix the key rather than retrying — a bad key will never start working.
Two integrations are starving each other
Expected: the budget is per account. Stagger them, or move the bulk one to a CSV import.
FAQs
Can the limit be raised?+
Get in touch and describe the workload. If the real need is bulk loading, a bulk endpoint is the right fix rather than a higher ceiling on one-at-a-time requests.
Do 429s count against me?+
No. They’re not an error you’re penalised for — they’re a signal to slow down.

