Skip to main content
The API limits the number of requests per company, in fixed one-minute windows. All of the company’s tokens share the same limit, so creating a second token does not increase the number of calls allowed.
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

The response is 429 and includes one more header:
integer
Seconds to wait before trying again. It matches the time left until the window ends.
Respect the Retry-After. If you repeat the call right away, you only use up the next window and the integration keeps getting 429. The company’s other integrations are affected too, because they share the same limit.

How to handle the 429

How to stay away from the limit

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.
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.
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.
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.