Overview
Terminal49 API implements rate limiting to ensure fair usage and maintain service quality for all users. The default API limit is 100 requests per minute per API key/account on a rolling 60-second window. Some high-volume or expensive endpoints use their own bucket.Rate limit details
All limits apply per API key/account on a rolling 60-second window.Rate limit response
When you exceed the rate limit, the API will return: HTTP Status Code:429 Too Many Requests
Response Headers:
Retry-After: Number of seconds to wait before making another request against the same rate-limit bucket
Retry-After is the only rate-limit header the API documents. Base your 429 handling on it.
Response Body:
Best practices
1. Use webhooks instead of polling
The most effective way to avoid rate limits is to use webhooks for real-time updates instead of repeatedly polling the API:- Configure webhooks to receive push notifications when shipment data changes
- Eliminates the need for frequent polling
- Provides instant updates without consuming your rate limit
- See the Webhooks section for setup instructions
2. Implement exponential backoff
If you receive a429 response:
- Check the
Retry-Afterheader and, when present, wait at least that many seconds - If
Retry-Afteris missing, back off exponentially (for example 1s, 2s, 4s) and add jitter so retries don’t synchronize - Cap the number of retries and surface an error once the cap is reached
- Don’t retry immediately, as this will consume your limit further
3. Batch your requests
- Use list endpoints with filtering instead of multiple individual requests
- Leverage the
includeparameter to fetch related resources in a single request - Cache responses when appropriate to reduce redundant calls
4. Monitor your usage
- Track your request patterns
- Identify and optimize high-frequency operations
- Consider spreading requests over time rather than bursting
Need a higher limit?
If your use case requires a higher rate limit:- Evaluate webhook usage first - Most polling use cases can be replaced with webhooks
- Contact support at support@terminal49.com
- Provide details about your use case and expected request volume
- Our team will work with you to find an appropriate solution
Example: handling rate limits
Here’s an example of how to properly handle rate limit responses in Python. It honorsRetry-After when the server provides it and falls back to exponential backoff with jitter otherwise:
Tips for high-volume applications
If you’re building a high-volume application:- Design for webhooks from the start: Don’t rely on polling for data updates
- Implement request queuing: Spread your requests evenly across the rate limit window
- Use pagination efficiently: Fetch larger pages less frequently rather than small pages frequently
- Cache aggressively: Store and reuse data that doesn’t change frequently
- Honor
Retry-After: When a429response includesRetry-After, wait at least that many seconds before retrying against the same bucket.