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:
| Endpoint | Method | Limit |
|---|
/api/investigate | POST | 10 req / 60s |
/api/investigate/stream | POST | 10 req / 60s |
/api/analyze | POST | 10 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.
When a 429 Too Many Requests response is returned, the following headers are included:
| Header | Type | Description |
|---|
Retry-After | Integer | Number of seconds to wait before retrying. |
X-RateLimit-Limit | Integer | Maximum number of requests permitted in the current window. |
X-RateLimit-Remaining | Integer | Number of requests remaining in the current window. |
X-RateLimit-Reset | Unix timestamp | Time 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