Documentation Index
Fetch the complete documentation index at: https://evalgate.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
API rate limits and plan quotas
Per-minute rate limits by plan, handling HTTP 429 responses, monthly usage quotas, and overage pricing for traces and annotations.
Evalgate enforces two types of limits: rate limits that control how many API requests you can make per minute, and plan quotas that control how much you can use each month. Both scale with your plan tier. If you exceed a rate limit, requests return HTTP 429. If you exceed a monthly quota, you can continue on overage pricing or upgrade your plan.
Rate limits by plan
| Plan | Rate limit |
|---|
| Free | 200 requests/min |
| Pro | 1,000 requests/min |
| Business | 10,000 requests/min |
| Enterprise | Custom |
| Anonymous / utility | 30 requests/min |
| MCP tools | 100 requests/min |
MCP tool execution (POST /api/mcp/call) uses a separate rate limit tier of 100 requests/min regardless of your plan. This limit applies per IP address or API key.
Rate limits are enforced with Upstash Redis. In local or development environments where Redis is not configured, rate limiting is disabled and all requests are allowed.
When rate limiting is active, Evalgate includes the following headers in every response:
| Header | Description |
|---|
X-RateLimit-Limit | Your plan’s maximum requests per minute |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
When Redis is not configured, all three headers return unlimited / 0.
HTTP 429 Too Many Requests
When you exceed your rate limit, the API returns:
HTTP/1.1 429 Too Many Requests
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the window resets.",
"requestId": "550e8400-e29b-41d4-a716-446655440000"
}
}
Check the X-RateLimit-Reset header to know when your window resets before retrying.
Monthly plan quotas
Each plan includes a monthly allowance of traces, projects, and evaluations. Quotas reset at the start of each billing cycle.
Free — $0/month
Pro — $49/month
Business — $199/month
Enterprise
| Resource | Limit |
|---|
| Traces/month | 10,000 |
| Projects | 3 |
| Traces per project | 250 |
| Evaluations per project | 25 |
| Annotations/month | 25 |
| Team members | Unlimited |
| Resource | Limit |
|---|
| Traces/month | 100,000 |
| Projects | 15 |
| Traces per project | 2,500 |
| Evaluations per project | 100 |
| Annotations/month | 200 |
| Team members | Unlimited |
| Resource | Limit |
|---|
| Traces/month | 1,000,000 |
| Projects | Unlimited |
| Traces per project | Unlimited |
| Evaluations per project | Unlimited |
| Annotations/month | Unlimited |
| Team members | Unlimited |
Custom limits, SLA guarantees, and dedicated support. Contact us to discuss your requirements.
Overage pricing
Pro and Business plans support automatic overage so your pipelines never stop when you exceed included usage.
| Resource | Overage price |
|---|
| Additional traces | $0.10 per 1,000 traces |
| Additional annotations | $0.50 per annotation |
Overage charges apply automatically on Pro and Business plans. Free plan users cannot exceed their monthly limits — upgrade to Pro to enable overage.
Best practices
Handle 429 responses with exponential backoff. When you receive a 429, wait before retrying. Start with a short delay and double it on each subsequent failure:
async function requestWithBackoff(fn: () => Promise<Response>, maxRetries = 5) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fn();
if (response.status !== 429) return response;
const delay = Math.pow(2, attempt) * 100; // 100ms, 200ms, 400ms, ...
await new Promise(resolve => setTimeout(resolve, delay));
}
throw new Error("Rate limit retries exhausted");
}
Use batching to reduce request volume. The Evalgate SDK supports batching for trace and span creation. Enable it with enableBatching: true to group multiple writes into fewer API calls:
import { AIEvalClient } from "@evalgate/sdk";
const client = new AIEvalClient({
apiKey: process.env.EVALGATE_API_KEY,
enableBatching: true
});
Batching is especially effective in CI pipelines where many test cases are submitted in rapid succession. It reduces round-trips and keeps you well within rate limits.
Upgrade your plan
View your current usage and upgrade from Settings → Billing in the dashboard. Pro and Business plans include a 14-day free trial. No credit card is required for the Free plan.
If you need limits higher than Business, contact us for Enterprise pricing.