The Foresight RCM API rate-limits requests per API key. When you exceed your limit, the API returnsDocumentation Index
Fetch the complete documentation index at: https://docs.have-foresight.app/llms.txt
Use this file to discover all available pages before exploring further.
429 Too Many Requests and a Retry-After
header indicating how long to wait before retrying.
Default limits
| Tier | Requests per second | Daily quota | Burst |
|---|---|---|---|
| Sandbox | 10 | 100,000 | 20 (5s sustained) |
| Production base | 50 | 5,000,000 | 100 (5s sustained) |
| Production high | 200 | 25,000,000 | 400 (5s sustained) |
| Enterprise | Negotiated | Negotiated | Negotiated |
Response headers
Every response (success or failure) includes the current limit state:| Header | Meaning |
|---|---|
X-RateLimit-Limit | Your per-second limit. |
X-RateLimit-Remaining | Requests remaining in the current second. |
X-RateLimit-Reset | Unix timestamp when the per-second window resets. |
X-RateLimit-Daily-Limit | Your daily quota. |
X-RateLimit-Daily-Remaining | Requests remaining today (UTC). |
Retry-After | (only on 429) Seconds to wait before retrying. |
429.
Handling 429
Always honorRetry-After. The response body uses the standard error
envelope:
Best practices
- Spread bursts. If you have a batch of 10,000 claims to submit, queue them and submit at a steady rate instead of in parallel.
- Use webhooks instead of polling. Polling list endpoints in tight
loops is the most common cause of
429. Subscribe to the relevant events and let us push state changes to you. - Read the headers. Backing off when
X-RateLimit-Remainingis low is cheaper than getting429d. - One key per workload. Parallel pipelines should use separate keys so one runaway loop doesn’t starve the others.