DocsOrganizations
Spend controls
Control estimated provider spend with INFRO organization, project, member and key budgets, alert thresholds and blocking behavior independent of subscriptions.
INFRO is in private early access. Running these examples requires an early-access account, an active trial or subscription entitlement, and your own provider connection. Self-serve purchasing is not generally open. See Early access.
INFRO budgets control estimated spend on your own provider accounts. They do not prepay for inference or represent a wallet balance. Your AI providers bill you directly, while your INFRO plan is a separate software subscription.
Budget scopes
- Organization: a monthly budget shared by its workloads.
- Project: a separate budget for an application or environment.
- Member: a budget associated with a member's activity.
- Key: a spend limit that resets daily, weekly or monthly, or a lifetime ceiling that never resets. Key limits always block.
Every applicable blocking limit must allow the request. Organization, project and member budgets follow the organization's budget cycle day. A key's daily window starts at midnight UTC, its weekly window at midnight UTC on Monday, and its monthly window on the budget cycle day; a lifetime limit never resets. Subscription request allowances reset on the first of the calendar month (UTC), a separate clock. Owners, admins and finance members set budgets and limits; only the owner can set the organization-wide limit.
Alert and block behavior
Configure monthly limits in the console with alert or block behavior and threshold fractions. Alert-only budgets notify without stopping traffic. A blocking budget, and a key's lifetime limit, admit a request only if its worst-case estimated cost fits the room left, counting recorded spend plus the worst case of every request still in flight across all of INFRO's infrastructure. When the request finishes, its recorded estimate replaces the reservation.
The worst case covers the whole request body a provider bills, including tool definitions, schemas and every requested choice, at the most expensive input rate the model could apply (such as a prompt-cache write), and the most expensive model and provider the request could fall back to. It is an upper bound on INFRO's estimate, not on the provider's invoice. Admission under a blocking budget adds one database round trip to the request.
When a blocking budget applies and a chat request sets no max_tokens, the worst case assumes the model's maximum output (32,768 tokens where the catalog lists no maximum), and INFRO sends that ceiling to the provider, so the response cannot run past what the budget set aside; output beyond it ends with finish_reason: "length". Set max_tokens yourself to reserve less and fit more concurrent requests under the budget. A request keeps its reservation for as long as it is running, including a long stream.
Response cache hits
A request answered from the response cache takes no reservation and adds nothing to recorded spend, and it is served even at a blocking cap: budgets limit what your provider can bill you, and a hit never reaches your provider. Everything checked before the cache — authentication, allowlists, input guardrails, the subscription — still applies.
Refused requests
A budget refusal returns HTTP 402 with error.type: "budget_exceeded" and a code naming the ceiling: organization_budget, project_budget, member_budget, key_budget, key_lifetime_limit, end_user_budget or unpriced_model_under_budget. The message names the scope and, for a key window, when it resets. An end_user_budget refusal also carries scope: "end_user", end_user_id, period and resets_at beside the code; see End-customer caps. Raise or remove the relevant ceiling before retrying. subscription_required and trial_payment_failed codes also use 402 but concern software access rather than a spend budget.
Estimate limits
Budgets use the prices available to INFRO and are not a guarantee of the final provider invoice. Provider-side charges INFRO cannot observe, such as a timed-out attempt the provider still billed or a built-in tool surcharge, are outside the estimate. Use provider quotas and billing controls as well; see Billing.
When a blocking budget applies and a request could be served by a model with no price, INFRO refuses it with 402 and code unpriced_model_under_budget by default, because its cost cannot be held against the budget. Enter your rate for the model under Prices, or have the owner choose under Budgets to allow unpriced traffic, which blocking budgets then do not govern.
Manage policies in the console. The previously documented /v1/org/spend-limits management endpoints are not implemented.