Skip to main content

API rate limits and evaluation usage

EvalGate bills completed evaluation results. API rate limits are separate operational safeguards and do not change the price.

Evaluation usage plans

Choose the monthly allowance that fits your evaluation volume: Organizations above 5 million monthly results, rolling EvalGate out across multiple organizations, or requiring procurement and centralized invoicing can use a Strategic Enterprise agreement with a custom annual commitment and negotiated volume schedule. Every plan continues beyond its included allowance at $1 per 1,000 additional results. Paid usage is uncapped by default: there is no fixed dollar or result ceiling. Users, projects, datasets, and runs are unlimited on every plan. Model inference is bring-your-own-key (BYOK). Your model provider bills its own tokens and requests directly; EvalGate does not add an inference markup.

What counts as one result

One result is one persisted test-case outcome from an evaluation run.
  • A passed case counts once.
  • An evaluated failure counts once.
  • Multiple scorers on the same case do not multiply usage.
  • A retry of the same evaluation run reuses the run billing key and does not create a second usage event.
  • An empty run, a human-review placeholder, or an infrastructure failure before a result is persisted counts as zero.
Developer does not require a payment method for its included allowance. A payment method is required to continue beyond that allowance or to subscribe to Team, Scale, or Business. Every tier uses the same uncapped $1 per 1,000 overage rate.

API rate limits

Rate limits protect the service from runaway request loops. They are independent of monthly evaluation-result billing. Authenticated requests are keyed by organization and user, or by API key when available. EvalGate uses Upstash Redis in production and an in-memory fallback in local development unless fail-closed mode is explicitly enabled.

Rate limit response headers

Every limited response includes: RateLimit-Policy and RateLimit follow the current IETF HTTPAPI structured field draft. The X-RateLimit-* fields remain available for compatibility with existing clients. These quota hints are operational controls, not an SLA or a guarantee that a later request will be served. When a request exceeds its limit, the API returns HTTP 429:
Use exponential backoff and respect Retry-After, the t parameter in RateLimit, or X-RateLimit-Reset before retrying. Retry-After takes precedence when it is present.
View current evaluation-result usage or add a payment method from Settings → Billing.