Skip to main content

Rate Limits

Only AI-powered endpoints are rate limited. All other Consumer Signals API endpoints — including CPIx, signals, alerts, and views — are unrestricted.

Rate-Limited Endpoints

The following endpoints enforce a shared rate limit of 10 requests per 60-second window per authenticated user:
EndpointMethodLimit
/api/investigatePOST10 req / 60s
/api/investigate/streamPOST10 req / 60s
/api/analyzePOST10 req / 60s
These limits apply uniformly across all plan tiers (Professional, Team, and Enterprise). If you require higher throughput for AI endpoints, contact your account manager.

Rate Limit Headers

When a 429 Too Many Requests response is returned, the following headers are included:
HeaderTypeDescription
Retry-AfterIntegerNumber of seconds to wait before retrying.
X-RateLimit-LimitIntegerMaximum number of requests permitted in the current window.
X-RateLimit-RemainingIntegerNumber of requests remaining in the current window.
X-RateLimit-ResetUnix timestampTime at which the current rate limit window resets.

Example 429 response

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 38
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743552000
{
  "ok": false,
  "error": "Rate limit exceeded. Retry after 38 seconds."
}

Retry Strategy

Implement exponential backoff with jitter when retrying rate-limited requests. A simple approach: wait for the number of seconds in the Retry-After header, then add a random delay of 0—2 seconds to avoid thundering herd effects.

Unrestricted Endpoints

All endpoints not listed above are unrestricted and do not enforce per-user rate limits. This includes:
  • GET /api/cpix
  • GET /api/signals
  • GET /api/alerts
  • POST /api/alerts
  • GET /api/views
  • All other data and configuration endpoints