Rate Limits
Understand request quotas, response headers, and how to handle rate-limited responses.
Default limits
Rate limits are applied per API key using a sliding window. Each key has a general requests-per-minute (RPM) limit, plus tighter caps on expensive operations.
| Limiter | Applies to | Default |
|---|---|---|
| General | All endpoints | 60 RPM |
| DealMap generation | POST /dealmap/generate | 5 RPM |
| Outreach | POST /outreach | 10 RPM |
The general RPM limit may vary by plan; 60 requests per minute is the default per key. The DealMap generation (5 RPM) and outreach (10 RPM) caps are hard limits applied to all API keys.
Response headers
Every API response includes rate-limit headers so you can track your remaining quota:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the current window. |
X-RateLimit-Remaining | Requests remaining in the current window. |
X-RateLimit-Reset | Seconds until the window resets. |
HTTP/1.1 200 OK
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 42
Content-Type: application/jsonHandling 429 responses
When you exceed the rate limit, the API returns 429 Too Many Requests. Use the X-RateLimit-Reset header to determine when to retry.
{
"error": "Rate limit exceeded. Try again in 18 seconds."
}Retry strategy
Read X-RateLimit-Reset and wait that many seconds before retrying. If the header is missing, use exponential backoff starting at 1 second.