429 errors in production.
Default Limit
CloudTalk enforces a limit of 60 requests per minute per company on the core API. This quota is shared across all API keys in your account — if you have multiple services or background workers issuing API calls, their requests all count toward the same 60 req/min ceiling.The Dialer partner API has its own budget. Requests to
https://api.cloudtalk.io/v1/dialer/* are limited per company in a dedicated 60 req/min budget, so they do not consume the core 60 req/min quota. Dialer 429 responses do carry the same three X-CloudTalkAPI-* headers described below, but the body follows the Dialer error shape: { "statusCode": 429, "message": "Too Many Requests", "error": "Too Many Requests", "correlationId": "YevPQs" }.Rate-Limit Headers
When a request is rate limited, the API returns a429 along with three headers describing your quota. Read them from the 429 response to decide when to resume:
Reading Headers with cURL
Use-D - to dump the response headers to stdout, and -o /dev/null to discard the body. Avoid -I: it issues a HEAD request rather than the documented GET.
cURL — inspect response headers
Sample 429 response headers
X-CloudTalkAPI-ResetTime from Unix timestamp to a human-readable time with date -r 1712150460 (macOS) or date -d @1712150460 (Linux).
Implementing Retry Logic
The recommended strategy for handling429 responses is exponential backoff with jitter. Wait for a short delay after the first failure, double the delay on each subsequent failure, and add a small random jitter to prevent multiple workers from retrying in lockstep.
Python — exponential backoff on 429
Requesting a Higher Limit
If your use case genuinely requires more than 60 requests per minute — for example, a real-time dashboard polling dozens of agents simultaneously — contact CloudTalk Support and include:- A description of your integration and why the current limit is insufficient.
- The approximate sustained request rate you need (e.g. “~200 req/min during business hours”).
- Your account identifier or API key prefix.
Best Practices
Following these practices will help you stay well within the rate limit even as your integration scales.Use the Bulk Endpoint
Contact actions packs up to 10 contact add/edit/delete operations into a single request — one unit of quota instead of ten.
Cache Read Results
Data like agent lists, phone numbers, and groups changes infrequently. Cache responses locally for a few minutes rather than fetching on every page load.
Narrow Result Sets with Filters
Apply the filters an endpoint documents —
date_from, date_to and contact_id on call history, for instance. Smaller result sets require fewer pages and fewer total requests to export.