Browse documentation

Billing · Launch preview. EvaEsi has not launched.

Limits and credit

One request at a time per room, spend limits and tiers, and usage history, exposed through live headers and the limits endpoints.

On this page

Request limits#

A room works on one request at a time; further requests queue, and the meter says so. Limits apply per key and per room, and the live /api/v1/limits route returns the current envelope: requests_per_minute, rungs_per_minute and the period's spend limit.

Public bearer access draws on prepaid credit, with automatic recharge and spend limits you set, or on the Developer plan's £5 of credit a month. Spend tiers start at £100 a month and rise with payment history and account age; the number of rooms an account may create rises with its tier.

Limits response#

JSONLimits response
{
  "tier": "developer",
  "requests_per_minute": 300,
  "rungs_per_minute": 5000000,
  "monthly_allowance": 10000000,
  "monthly_used": 128400
}

Usage in the period#

Current-period usage is returned by /api/v1/usage, historical periods by /api/v1/usage/history, and the live envelope by /api/v1/limits. Usage is counted in rungs at the level each request ran at, and priced at that level: output per 1M rungs, input at 30% of it.

The usage response includes allowance and remaining, the room's spend limit for the period in rungs, and estimated_cost_pence.

For the exact JSON contract of those endpoints, use Usage API.

JSONMonthly usage
{
  "period_start": "2026-04-01T00:00:00+00:00",
  "period_end": "2026-05-01T00:00:00+00:00",
  "input_rungs": 48100,
  "output_rungs": 80300,
  "total_rungs": 128400,
  "request_count": 93,
  "allowance": 10000000,
  "remaining": 9871600,
  "estimated_cost_pence": 0
}

Rate limit headers#

Successful non-stream responses emit live rate headers plus rung-usage headers. Rate-limit failures also emit the same envelope with remaining set to zero.

HeaderDescription
x-ratelimit-limitRequests-per-minute ceiling
x-ratelimit-remainingRemaining requests in the current minute
x-evaesi-input-rungsInput rungs billed for the request
x-evaesi-output-rungsOutput rungs billed for the request, at the level that ran
x-evaesi-total-rungsTotal rungs billed for the request
retry-afterReturned on 429 responses; currently 60 seconds

Example headers#

Response headersExample headers
x-ratelimit-limit: 60
x-ratelimit-remaining: 42
x-evaesi-input-rungs: 29
x-evaesi-output-rungs: 118
x-evaesi-total-rungs: 147

Limit handling#

At a limit you receive a 429 RATE_LIMITED response with retry-after and x-ratelimit-remaining: 0. If a request would pass the room's spend limit or your credit, the platform returns 402 BUDGET_EXCEEDED before inference is dispatched. See Error Codes for retry guidance.

Tip: Monitor both the live rate headers and the API portal so you can see queueing, spend against the limit and credit running low before requests fail.