API Reference
API Rate Limits
Overview
Rate limits define how many API requests a client can make within a specific time window. They control the frequency of API calls, not the total amount of data processed over time.
When the allowed limit is exceeded, the API responds with an error code of 429 and an error message of Too many requests. Try again after 1 min. until the limit resets.
Why Rate Limits Exist
1. Protect Against Abuse: Prevents malicious or misconfigured clients from overwhelming the system, reducing the risk of service disruptions and DDoS attacks.
2. Ensure Fair Access: Controls resource allocation so one client doesn’t consume a disproportionate amount of resources, maintaining stable performance for all users.
3. Maintain System Stability: Helps smooth traffic patterns and maintain consistent, reliable performance across shared infrastructure.
How Rate Limits Are Enforced
Rate limits are enforced per API key, which means:
- Each API key has its own independent rate limit
- All requests using the same API key count toward the same limit
- Multiple applications/services sharing the same API key share the same quota
- Separate API keys have separate rate limits
The table below shows the limits applied per API key:
| Endpoint | Rate Limit | Time Window |
|---|---|---|
| Upload | 20 | per minute |
| Convert | 100 | per minute |
| Bulk Convert | 100 | per minute |
| Status | 100 | per minute |
| Result | 100 | per minute |
Best Practices
1. Implement Exponential Backoff
When you receive a rate limit error (429):
- Wait for a short time before retrying
- If the retry fails, wait longer and try again
- Keep increasing the delay until success or maximum retries reached
- Add random jitter to prevent synchronized retries
Important: Failed requests still count toward your rate limit, so repeatedly retrying without delay will not solve the problem.
Below is an example solution for Python that uses exponential backoff:
2. Use Separate API Keys
If different applications or services require independent rate limits, generate and use separate API keys to avoid shared throttling.
3. Using Bulk Convert for Higher Throughput
If the Upload endpoint’s rate limit (20 requests/min) is too restrictive for your use case, consider using the Bulk Convert endpoint instead. This endpoint is specifically designed for high-volume workflows and bulk data imports as it accepts up to 30 pre-signed URLs in a single request and is subject to a 100 requests/min rate limit.
4. Monitor Request Patterns
Regularly track your request patterns to identify bottlenecks or spikes. If your use case requires higher limits, contact support to discuss an appropriate rate limit increase.