To keep the API fast and reliable for everyone, Chronox limits how many requests each API key can make in a short period. This is called rate limiting.If you stay within the limit, you'll never notice it. If you send too many requests too quickly, the API asks you to wait before trying again.The limit#
| |
|---|
| Limit | 30 requests per minute |
| Counted per | API key |
| Applies to | Every endpoint in this API |
The minute starts with your first request. Once the minute is up, the count starts again from zero.Each API key has its own limit. If your workspace has a higher limit arranged with Chronox, that limit is shared by all the keys in your workspace.Using the Chronox dashboard doesn't count towards your API key's limit. Only requests made with an API key are counted.
What happens if you go over the limit#
When you go over the limit, that request is refused and your key is paused for a short time. While it's paused, every request made with that key is refused.The response has the HTTP status 429 Too Many Requests and looks like this:{
"status": false,
"error": {
"code": 9999,
"message": "API key rate limit exceeded. Please try again later.",
"retry_after_seconds": 200
}
}
retry_after_seconds tells you how many seconds to wait before your key works again.How long you have to wait#
The first pause lasts 200 seconds (just over 3 minutes). If you keep going over the limit soon after a pause ends, each new pause is twice as long as the last one, up to a maximum of 30 minutes.| Time over the limit | Wait |
|---|
| 1st | 200 seconds (about 3 minutes) |
| 2nd | 400 seconds (about 7 minutes) |
| 3rd | 800 seconds (about 13 minutes) |
| 4th | 1,600 seconds (about 27 minutes) |
| 5th and after | 30 minutes |
If your key stays within the limit for a while after a pause, the wait goes back to the shortest time.Sending more requests during a pause won't make the pause longer, but none of them will work. The best thing to do is wait for the number of seconds in retry_after_seconds, then try again.
Keeping track of your usage#
The API doesn't tell you how many requests you have left in the current minute. If your software sends a lot of requests, keep count on your side and slow down before you reach 30 a minute.Handling a 429 response#
If your software might go over the limit, have it check for a 429 response, wait, and then try again. The examples below show one way to do this.Tips for staying within the limit#
Spread requests out. If you need to send many messages, send them at a steady pace rather than all at once.
Save results you use often. The WhatsApp template lookup lists (categories, languages, button types and so on) rarely change. Fetch them once and reuse them instead of asking again for every template.
Don't check for changes too often. If you check the inbox for new messages, a few times a minute is usually enough.
Use separate keys for separate systems. Each key has its own limit, so your website and your CRM won't use up each other's requests, unless your workspace has a shared limit.
Need a higher limit? Contact Chronox support to discuss your usage.
What this page doesn't cover#
WhatsApp's own sending limits. Meta limits how many customers your WhatsApp Business account can message per day, based on your account's quality and history. That limit is set by Meta, not Chronox, and applies no matter how you send messages.
Other errors. See Errors for everything else the API can return.