Skip to main content

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

PlanRate limit
Free200 requests/min
Pro1,000 requests/min
Business10,000 requests/min
EnterpriseCustom
Anonymous / utility30 requests/min
MCP tools100 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.

Rate limit response headers

When rate limiting is active, Evalgate includes the following headers in every response:
HeaderDescription
X-RateLimit-LimitYour plan’s maximum requests per minute
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix 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.
ResourceLimit
Traces/month10,000
Projects3
Traces per project250
Evaluations per project25
Annotations/month25
Team membersUnlimited

Overage pricing

Pro and Business plans support automatic overage so your pipelines never stop when you exceed included usage.
ResourceOverage 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.