Rate Limiting
1 request/second per API key with a 10-request burst capacity
Rate Limit Policy
- Rate: 1 request/second per API key
- Scope: Applies to all
/e9v3endpoints, including reads - Burst Capacity: 10 requests
- Algorithm: Token bucket
- HTTP Status: 429 Too Many Requests
The 429 response body reports
"rate_limit": "1 order/second"— that literal string is what the server emits and is kept verbatim below; the limit itself counts every request, not just order writes.
How Token Bucket Works
You start with 10 tokens (burst capacity). Each request consumes 1 token. Tokens refill at 1 per second, up to a maximum of 10.
Example Timeline
- t=0s: You have 10 tokens, send 10 requests (burst). You now have 0 tokens.
- t=1s: 1 token refilled. You can send 1 more request. You now have 0 tokens.
- t=2s: 1 token refilled. You can send 1 more request. You now have 0 tokens.
- Continue indefinitely at 1 request/second steady state.
Rate Limited Response (429)
Response Body
{
"error": "rate limit exceeded",
"retry_after": 0.82,
"rate_limit": "1 order/second",
"burst_capacity": 10
}
Response Headers
Retry-After: 1
X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1234567890
| Header | Description |
|---|---|
Retry-After |
Seconds to wait before retrying (rounded up from retry_after in body) |
X-RateLimit-Limit |
Rate limit in requests/second (always 1) |
X-RateLimit-Remaining |
Available tokens right now (0 if rate limited) |
X-RateLimit-Reset |
Unix timestamp when the next token will be available |
Best Practices
- Queue orders serially: Submit one order at a time in a queue
- Limit concurrency: No more than 1-5 concurrent requests
- Respect Retry-After: Wait the full duration specified in the header before retrying
- Cache tokens: Reuse your OAuth token for the full 1-hour lifetime
- Monitor error rate: Alert if 429 responses exceed 5-10% of your traffic
- Use exponential backoff: After hitting the limit, wait 1s, then 2s, then 4s for subsequent retries
Common Scenarios
Small Integration (<10/day)
You create a few orders per day. Rate limiting won’t affect you since you’ll process at well below 1 order/second.
Bulk Import (100+ orders)
Queue orders and process serially:
- Use your 10-token burst for the first 10 orders
- Then process at 1 order/second = ~90 more seconds for remaining 90 orders
- Total: ~100 seconds for 100 orders
Spiky Traffic (Webhooks)
If you receive webhook bursts:
- You can handle 10 concurrent orders immediately (burst capacity)
- Queue additional orders and process at 1/second
- Don’t try to send all at once or you’ll hit the limit
Requesting Higher Limits
Contact api-support@equosnine.com if you need higher limits for high-volume integrations. We may be able to accommodate enterprise-scale workloads.