Rate Limits
AgentInbox uses rate limits to ensure fair usage and platform stability. Understand your limits and how to handle them.
Plan Limits
Rate limits are applied per API key and vary by your subscription plan.
API Rate Limits
Rate limits are applied per API key. Limits vary by plan and reset on a sliding window.
Free
60 requests per minute
Pro
300 requests per minute
Enterprise
Custom limits, contact sales
Response Headers
Every API response includes headers indicating your current rate limit status.
HTTP Response Headers
X-RateLimit-Limit: 60X-RateLimit-Remaining: 45X-RateLimit-Reset: 1718191200Header Definitions
- X-RateLimit-Limit — Maximum requests allowed in the window
- X-RateLimit-Remaining — Requests remaining in the current window
- X-RateLimit-Reset — Unix timestamp when the window resets
Handling 429 Errors
When you exceed the rate limit, the API returns a 429 status code. Use exponential backoff to retry.
typescript
async function withRetry<T>(fn: () => Promise<T>, retries = 3): Promise<T> { try { return await fn(); } catch (err: any) { if (err.status === 429 && retries > 0) { const delay = Math.pow(2, 3 - retries) * 1000; await new Promise((r) => setTimeout(r, delay)); return withRetry(fn, retries - 1); } throw err; }}python
import time def with_retry(fn, retries=3): try: return fn() except Exception as e: if e.status == 429 and retries > 0: delay = 2 ** (3 - retries) time.sleep(delay) return with_retry(fn, retries - 1) raiseRespect Retry-After
The API may include a
Retry-After header. If present, wait at least that many seconds before retrying.Inbox Quotas
In addition to rate limits, there are quotas on the number of active inboxes you can maintain.
Free
10 active inboxes
Pro
100 active inboxes
Enterprise
Unlimited active inboxes
Best Practices
- Use webhooks instead of polling when possible
- Cache inbox metadata locally to avoid repeated GET requests
- Implement exponential backoff for all API calls
- Batch operations where the API supports it
- Monitor your usage in the dashboard