Currently, we don't enforce strict request-per-second limits. However, fair usage is expected to maintain service quality for everyone.
Current approach
Instead of hard limits, we encourage responsible use:
Space out your requests reasonably
Implement exponential backoff when errors occur
Cache responses to avoid redundant calls
Contact us if you anticipate high traffic volumes
Best practices
Cache aggressively:
Store search results for common queries
Keep media metadata locally after retrieval
Don't call
/confirmmultiple times for the same user/resource
Batch your operations:
Group related requests together
Add small delays between batches
Limit concurrent connections (10-20 is reasonable)
Handle errors gracefully:
Implement retry logic with exponential backoff
Don't retry immediately on failure
Log errors for monitoring
Expected response times
/resources search: 200-500ms typically
/resource details: Under 100ms
/confirm licensing: 300-800ms
Set your client timeout to at least 30 seconds to handle occasional slower responses.
If you hit limits
You'll receive a 429 Too Many Requests error. When this happens:
// Implement exponential backoff
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url, options);
if (response.status === 429) {
const waitTime = Math.pow(2, i) * 1000; // 1s, 2s, 4s
await new Promise(resolve => setTimeout(resolve, waitTime));
continue;
}
return response;
} catch (error) {
if (i === maxRetries - 1) throw error;
}
}
}
Monitor your usage
Track API activity in Settings → API:
View total requests made
Check active licenses
Review usage trends
Monitor for unusual patterns
Need higher limits?
If your legitimate use case requires high request volumes (>1M requests/month), contact our team to discuss:
Your application and traffic patterns
Expected request volume
Guaranteed rate limits if needed