The default is 120 requests per minute. Companies that need more can have their own limit
set in the plan. If your integration will need more than that, talk to sales before planning it
around the default limit.
The headers
Every response reports the current state of the window. Rely on these headers instead of counting requests on your side, because the count includes the company’s other integrations.integer
The company’s request limit for the current minute.
integer
How many requests still fit in the current window.
integer
Seconds until the window ends and the counter goes back to zero.
When the limit is reached
429 and includes one more header:
integer
Seconds to wait before trying again. It matches the time left until the window ends.
How to handle the 429
How to stay away from the limit
Raise perPage before raising the frequency
Raise perPage before raising the frequency
Reading a list with
perPage=100 costs 1 request every 100 records. With the default of 20,
it costs 5. This is the adjustment that cuts usage the most, and it is also the easiest to
make. See Pagination.Avoid checking too often
Avoid checking too often
Checking
GET /messages/jobs/{jobId} every 200 ms uses up the whole window in a little over
20 seconds. Start with 1-second intervals and increase them gradually.Keep what does not change
Keep what does not change
Queues, tags, wrap-up types, channels and custom fields rarely change. Fetching these lists on
every operation is the most common waste. Read them once and keep a copy on your side.
Spread out the routines
Spread out the routines
If three integrations run a full load at midnight, they compete for the same limit. Spread the
schedules out.
Sending messages and the limit
POST /messages responds 202 right away and sends in the background. The request counts toward
the limit, but the send itself does not. How fast messages go out depends on the channel’s
provider.
You can queue 120 messages in a minute, but they will not all go out in that same minute. For
high-volume sends, use campaigns instead of a loop over
POST /messages. A campaign is built for that pace and lets you pause, resume and follow the
send in the report.
