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 | 20 RPM |
| Outreach | POST /outreach | 10 RPM |
The general RPM limit may vary by plan. The DealMap generation and outreach 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. |
Example response headers
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.