Rate Limits
KlayrAI enforces rate limits to ensure fair usage and platform stability. Limits are applied per API key.Default limits
| Operation type | Limit | Window |
|---|---|---|
| Read requests (GET) | 120 requests | Per minute |
| Write requests (POST, PUT, DELETE) | 10 requests | Per minute |
| Diagnostic runs | 10 runs | Per minute |
| Report generations | 5 generations | Per minute |
These limits apply to the Agency plan API. Dashboard usage has separate, more generous limits that are not publicly documented.
Rate limit information
Example response with rate limit info
Handling rate limits
When you exceed the rate limit, the API returns a429 Too Many Requests response:
Recommended retry strategy
Implement exponential backoff with jitter:Best practices
Monitor remaining requests
Monitor remaining requests
Check the
meta.remaining_requests field in each JSON response. When it drops below 10% of the limit, slow down your request rate proactively rather than waiting for a 429.Batch where possible
Batch where possible
Instead of making individual requests for each campaign, use list endpoints with filters to fetch multiple records in a single request.
Cache responses
Cache responses
Campaign and account data changes infrequently. Cache GET responses for 60-300 seconds to reduce unnecessary API calls.
Use polling intervals for async operations
Use polling intervals for async operations
When waiting for a diagnostic or report to complete, poll
GET /v1/diagnostics/{id} at reasonable intervals (every 2-3 seconds) rather than sending rapid requests. Diagnostics typically complete within 5-10 seconds.Spread requests over time
Spread requests over time
If you need to run diagnostics on 50 campaigns, don’t fire all 50 at once. Spread them over 5 minutes (10 per minute) to stay within limits.
Rate limit increases
If your use case requires higher limits, contact us at support@klayrai.com with:- Your workspace ID
- Current usage patterns
- Requested limits with justification
- Expected request volume

