Skip to main content

Quotas

The Quotas screen lets you set spend and token limits per tenant, project, agent, user, model or provider, and follow how much of each limit is already consumed. Portal path: /finops/quotas (menu FinOps > Quotas). FinOps analysts and tenant administrators manage the quotas; auditors read them.

What the screen shows​

AreaContent
Current consumptionOne gauge per quota: name, used / limit, unit (currency of a cost quota, or tokens) and percentage. The bar turns amber from 80 % and red at 100 %. Paginated. No quota consumption yet when nothing was consumed.
Quotas tableColumns: Name, Scope type, Scope value, Cost limit, Token limit, Period, Enforcement (hard or soft), Enabled.
Empty stateNo quota: limit spend or tokens per tenant, project or agent.

A hard quota (Hard) refuses the call that would exceed it (error quota_exceeded, HTTP 429); a soft quota (Soft) lets it through. Every quota raises quota alerts when its consumption crosses the thresholds (50, 80 and 100 % by default, setting EAI_FINOPS_ALERT_THRESHOLDS).

Actions​

Button or actionWhat it doesAPI callRoles
New quotaOpens the form: Name (required), Scope type (required: tenant, project, agent, user, model, provider), Scope value, Period (required: month, day, run), Cost limit (for example 500.00), Token limit, Currency (default EUR), Enforcement (required: hard, soft), Enabled. Create sends it.POST /v1/quotasfinops, tenant_admin, platform_admin
Edit (row menu)Opens the same form filled with the quota and saves it.PUT /v1/quotas/{quota_id}finops, tenant_admin, platform_admin
Delete (row menu)Opens Confirm a destructive action: impacted resources, risks, permissions; you type the resource name, then Confirm.DELETE /v1/quotas/{quota_id} (impact read with GET /v1/lineage/graph)finops, tenant_admin, platform_admin
Refresh (round arrow icon)Reloads the list of quotas.GET /v1/quotasReaders of the FinOps section
GaugesLoaded with the screen.GET /v1/quotas/usageReaders of the FinOps section

Roles​

RoleAccess
finops, tenant_adminCreate, edit and delete the quotas (ADMIN_ROLES of services/control-plane/src/eai/domains/finops/__init__.py).
platform_adminSame rights, inside a tenant (tenant_required otherwise).
auditorReads the quotas and the gauges; the buttons are hidden.
developer, viewer, security_officerAllowed to read by the API, but the FinOps section of the portal menu does not open for them.

Typical tasks​

Cap the monthly spend of a project​

  1. Open the form. Click New quota. Expected result: the form opens on the right. If it fails: if the button is missing, ask for the finops role.
  2. Describe the scope. Choose project in Scope type and enter the project id in Scope value, so the limit applies to that project only. Expected result: the fields are filled. If it fails: the server refuses a Scope value with the type tenant, and an empty one with any other type.
  3. Set the limit. Choose month in Period, enter the Cost limit, choose hard in Enforcement to block the calls beyond it, then click Create. Expected result: the toast Created appears and the quota is listed. If it fails: validation_error with limit means neither Cost limit nor Token limit is set.
  4. Check the gauge. The gauge appears in Current consumption once the project consumes. Expected result: the gauge shows used / limit and the percentage. If it fails: click Refresh or reload the page.

Relax a quota temporarily​

  1. Edit the quota. Open the row menu and choose Edit. Expected result: the form opens with the current values. If it fails: quota_not_found means the quota was deleted meanwhile.
  2. Switch to soft. Choose soft in Enforcement and click Edit. A soft quota lets the calls through but still raises the quota alerts. Expected result: the toast Done appears and the Enforcement column shows soft. If it fails: check the error panel of the form.

Troubleshooting​

SymptomCauseFix
Error validation_error (HTTP 422) with limitNeither Cost limit nor Token limit is filled.Fill at least one limit.
Error validation_error (HTTP 422) with scope_valueScope value set with tenant, or missing with another scope type.Empty it for tenant, fill it for the other types.
Error quota_not_found (HTTP 404): "Quota not found."The quota no longer exists.Click Refresh.
Calls refused with quota_exceeded (HTTP 429): "Quota exceeded: ..."A hard quota is reached for its period.Raise the limit, switch to soft, or wait for the next period.
Confirm stays disabled in the delete dialogThe name typed does not match the resource.Type the exact name shown in the dialog.