Appearance
Rate Limits
Rate limits protect the platform and ensure fair usage.
API Weights
Different APIs consume your quota at different rates based on their weight. This allows us to offer premium, higher-value APIs while keeping pricing simple and predictable.
How Weights Work
- Weight 1.0 (Standard): 1 API call = 1 request from your quota
- Weight > 1.0 (Premium): 1 API call = multiple requests from your quota
- Weight < 1.0 (Lightweight): Multiple API calls = 1 request from your quota
Current API Weights
| API | Weight | Example |
|---|---|---|
| Geolocation | 1.0× | 100 calls = 100 requests |
| Currency | 1.0× | 100 calls = 100 requests |
| Weather | 1.5× | 100 calls = 150 requests |
| UUID Generator | 0.5× | 100 calls = 50 requests |
Dashboard Usage Breakdown
Your dashboard shows both raw API calls and weighted usage, so you can always see exactly how your quota is being consumed.
Example
If you have a 15,000 request quota and make:
- 5,000 Geo calls (1.0×) → 5,000 requests consumed
- 2,000 Currency calls (1.0×) → 2,000 requests consumed
- 450 Weather calls (1.5×) → 675 requests consumed
Total: 7,650 API calls → 7,675 requests consumed
Limits by Plan
| Plan | Per Second | Per Minute |
|---|---|---|
| Free | 5 | 300 |
| Starter | 25 | 1,500 |
| Pro | 50 | 3,000 |
| Elite | 250 | 15,000 |
| Enterprise | Custom | Custom |
Response Headers
Every response includes:
http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1704067200| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests per second |
X-RateLimit-Remaining | Requests left in window |
X-RateLimit-Reset | Unix timestamp of reset |
Rate Limit Exceeded
HTTP 429 response:
json
{
"success": false,
"data": null,
"error": true,
"error_code": 30001,
"error_message": "Rate limit exceeded"
}Handle it:
javascript
async function fetchWithRetry(url, options, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}Monthly Quotas
Separate from rate limits:
| Plan | Monthly Quota |
|---|---|
| Free | 2,000 (lifetime) |
| Starter | 15K–50K |
| Pro | 60K–250K |
| Elite | 275K–2M |
| Enterprise | Unlimited |
Quota Headers
http
X-Quota-Limit: 50000
X-Quota-Used: 12345
X-Quota-Reset: 2024-02-01T00:00:00ZQuota Exceeded
json
{
"success": false,
"data": null,
"error": true,
"error_code": 30002,
"error_message": "Quota exceeded"
}Upgrade your plan to continue.