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.

LimiterApplies toDefault
GeneralAll endpoints60 RPM
DealMap generationPOST /dealmap/generate20 RPM
OutreachPOST /outreach10 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:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetSeconds 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/json

Handling 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.

Rate Limits | DealSurface Docs