Rate Limits
Rate Limits
Section titled “Rate Limits”API requests are rate limited to ensure fair usage and platform stability.
Limits by Plan
Section titled “Limits by Plan”| Plan | Requests/minute | Requests/day |
|---|---|---|
| Sandbox | 100 | 10,000 |
| Starter | 500 | 50,000 |
| Growth | 2,000 | 200,000 |
| Enterprise | Custom | Custom |
Rate Limit Headers
Section titled “Rate Limit Headers”Every response includes rate limit information:
X-RateLimit-Limit: 500X-RateLimit-Remaining: 498X-RateLimit-Reset: 1705312800| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window |
X-RateLimit-Remaining | Remaining requests |
X-RateLimit-Reset | Unix timestamp when limit resets |
Rate Limit Response
Section titled “Rate Limit Response”When exceeded, you’ll receive:
HTTP/1.1 429 Too Many RequestsRetry-After: 30{ "error": { "code": "RATE_LIMITED", "message": "Rate limit exceeded. Retry after 30 seconds." }}Best Practices
Section titled “Best Practices”1. Monitor Headers
Section titled “1. Monitor Headers”const response = await iof.contracts.list();
const remaining = response.headers["x-ratelimit-remaining"];if (remaining < 10) { console.warn("Approaching rate limit");}2. Implement Backoff
Section titled “2. Implement Backoff”async function withRetry(fn, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { try { return await fn(); } catch (error) { if (error.code === "RATE_LIMITED") { const delay = Math.pow(2, i) * 1000; await sleep(delay); continue; } throw error; } }}3. Use Batch Operations
Section titled “3. Use Batch Operations”Instead of individual requests:
// Inefficientfor (const id of contractIds) { await iof.contracts.retrieve(id);}
// Efficientconst contracts = await iof.contracts.list({ ids: contractIds,});4. Cache Responses
Section titled “4. Cache Responses”const cache = new Map();
async function getContract(id) { if (cache.has(id)) { return cache.get(id); }
const contract = await iof.contracts.retrieve(id); cache.set(id, contract); return contract;}Endpoint-Specific Limits
Section titled “Endpoint-Specific Limits”Some endpoints have specific limits:
| Endpoint | Limit |
|---|---|
/v1/kyc/verify | 10/minute |
/v1/aml/screen | 50/minute |
/v1/reports/generate | 5/minute |
Increasing Limits
Section titled “Increasing Limits”Contact sales for:
- Higher rate limits
- Dedicated infrastructure
- Custom SLA
Rate Limits by SKU Tier
Section titled “Rate Limits by SKU Tier”Each SKU tier has different rate limit allowances:
| SKU | Calls/Month | Calls/Minute | Burst Capacity |
|---|---|---|---|
| Starter | 10,000 | 167 | 500 |
| Analytics Only | 25,000 | 417 | 1,250 |
| Fintech | 50,000 | 834 | 2,500 |
| Growth | 100,000 | 1,667 | 5,000 |
| Compliance Plus | 75,000 | 1,250 | 3,750 |
| Enterprise | Unlimited | 10,000 | 20,000 |
| Core Banking | Unlimited | 20,000 | 50,000 |
For complete SKU information including features and pricing, see SKU Tiers.
Next Steps
Section titled “Next Steps”- SKU Tiers - Compare pricing and features
- Registries - Platform registries
- Errors Reference - Error handling
- Authentication - API access