Concepts

Budgets & rate limits

Spend budgets and request-rate limits are enforced inline on the hot path, with truthful headers back.

Virtual keys can carry spend budgets and request-rate limits, enforced inline on the hot path. When a key is limit-configured, successful responses carry advisory x-ratelimit-* headers so clients can self-pace.

StatusWhenHeaders
402Budget exhausted (routeplane_budget_exceeded).Retry-After, x-routeplane-limit-*
429Rate limit exceeded (routeplane_rate_limit_exceeded).x-ratelimit-*, Retry-After

Both responses use the OpenAI error envelope with truthful, non-advisory header values, the Retry-After reflects the real window.