Rate Limits & Usage Guidelines
Understand how API request quotas work, how to handle throttling, and best practices for optimal performance.
๐ Overview
Dictionary enforces rate limits to ensure fair usage, maintain service stability, and prevent abuse. Limits are applied per API key and vary based on your subscription tier.
When a limit is reached, the API will respond with HTTP status code 429 Too Many Requests along with a Retry-After header indicating how many seconds to wait before making another request.
๐ Tiered Rate Limits
| Limit Type | Free | Pro | Enterprise |
|---|---|---|---|
| Requests / Minute | 60 | 1,000 | Custom (up to 10,000+) |
| Daily Quota | 1,000 | 50,000 | Unlimited |
| Burst Allowance | 10 / sec | 50 / sec | Custom |
| Concurrent Requests | 2 | 20 | Unlimited |
| Response Payload Limit | 1 MB | 5 MB | 10 MB |
Need higher limits or custom configurations? Enterprise plans include dedicated throughput guarantees and SLA-backed performance.
โ ๏ธ What Happens When You Exceed Limits?
When your application exceeds the allowed request rate, Dictionary will return a 429 Too Many Requests response. The response body includes details about the limit type and retry window.
Sample 429 Response
{
"error": {
"code": 429,
"message": "Rate limit exceeded.",
"retry_after": 12,
"limit_type": "per_minute",
"current_usage": 60,
"limit": 60
}
}
Handling Rate Limits in Code
Implement exponential backoff to gracefully handle throttling:
async function fetchWithRetry(url, retries = 3) {
for (let i = 0; i < retries; i++) {
const res = await fetch(url);
if (res.status === 429) {
const retryAfter = res.headers.get('Retry-After') || Math.pow(2, i);
console.log(`โณ Waiting ${retryAfter}s before retry...`);
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
return res.json();
}
throw new Error('Max retries exceeded');
}
โจ Best Practices
๐ Cache Responses
Store frequent lookups locally. Dictionary data rarely changes; caching can reduce API calls by 80%+.
๐ฆ Batch Requests
Use the `/batch/lookup` endpoint to fetch multiple words in a single request instead of sequential calls.
๐ Monitor Usage
Check your dashboard or use the `X-RateLimit-Remaining` header to track consumption in real-time.
โก Optimize Payloads
Use the `fields` query parameter to request only the data you need (e.g., `?fields=definition,phonetic`).
โ Frequently Asked Questions
How are rate limits calculated?
Rate limits use a sliding window algorithm. For example, a 60 req/min limit means any 60-second window cannot exceed 60 requests, not just fixed minute boundaries.
Can I increase my limits without upgrading?
Temporary spikes can be accommodated with burst allowances. For sustained higher throughput, please upgrade your plan or contact our sales team for Enterprise custom limits.
Are different endpoints rate-limited separately?
Yes. `/search`, `/define`, and `/translate` each have independent quotas. Check the API reference for endpoint-specific limits.
Need Higher Limits?
Upgrade to Pro for 1,000 requests/minute or contact us for Enterprise custom configurations.
View Pricing โ