Usage & Credits
Informer meters platform activity against a tenant-wide credit pool. Metered activity spans AI calls, agent runs, app and job compute, and storage; each resource type is charged at the rate its tenant's plan carries, and a type the rate card prices at zero is metered without drawing credits. Credits are purchased through Subscriptions; this section covers how usage is governed, enforced, and reported.
Core concepts
Credit pool
The credit pool is the tenant's balance of spendable credits, synced from the License Manager and cached locally in AiEntitlementCache. The normalized pool exposed in API responses looks like:
{
"included": 50000,
"used": 12340,
"remaining": 37660,
"overageRate": 1.0,
"legacyDollars": 0,
"paygRate": null
}
Resource types
Every metered activity is attributed to a canonical resource type. Types are defined in code (not editable) and metered in one of two modes:
| Mode | Meaning | Examples |
|---|---|---|
event | Accumulates per occurrence; credits computed at capture time from the synced rate card, or the raw measurement is reported for the License Manager to price when no trusted rate is available | ai, agent_run, app_compute, job_compute |
gauge | Point-in-time measurement reported directly to the License Manager (cloud only) | app_storage, workspace_storage, file_storage, es_index_count |
See Usage Reporting → Resource Types for the full registry.
Usage profiles
A usage profile governs who can use what, and how much:
allowedModelTiers— which AI model tiers the profile may use (everyday,advanced,strategic)creditCapPerMonth— a per-actor monthly AI credit ceiling (null= unlimited,0= hard stop, positive = capped). Only AI-category usage (ai,agent_run) counts toward it; compute charged to the actor (job_compute,app_compute) does not
Profiles are assigned to teams (and agents). A user's effective profile is resolved from their team memberships — when a user belongs to multiple teams, the profiles are merged into the most permissive result (union of tiers, highest cap). When no team assignment exists, the tenant's default profile applies.
Entity budgets
An optional entity budget caps monthly credit spend for a specific app or dataset, independent of the per-actor profile cap.
Enforcement flow
Before a metered AI operation runs, the enforcer evaluates the request in order. The first failing check throws 402 Payment Required with a machine-readable code:
| Order | Check | Denial code |
|---|---|---|
| 1 | Entitlement present (License Manager JWT cached) | NOT_CONFIGURED |
| 2 | Requested model tier allowed by effective profile | TIER_NOT_ALLOWED |
| 3 | Actor's month-to-date AI usage (ai, agent_run) below creditCapPerMonth | CREDIT_LIMIT |
| 4 | Entity (app/dataset) budget not exhausted | BUDGET_EXHAUSTED |
| 5 | Credit pool has balance (slush → auto-replenish → grace window → cutoff) | HARD_CUTOFF |
{
"statusCode": 402,
"error": "Payment Required",
"message": "Monthly credit limit reached",
"code": "CREDIT_LIMIT",
"profileRemaining": 0,
"poolRemaining": 37660
}
BYOK
When a tenant supplies its own provider API keys (BYOK), AI calls do not draw from the credit pool: the profile cap, entity budget, and pool-balance checks are skipped for ai usage. Tier and entitlement checks still apply, and the other resource types (agent runs, compute, storage) still consume pool credits.
Permissions
| Permission | Grants |
|---|---|
tenant.superuser | Read usage profiles, resource types, and entity budgets |
usage.write | Create/update/delete profiles; set entity budgets |
billing.manage | Usage reporting (/api/usage*) and subscription management |
In this section
- Usage Profiles — define and assign profiles that govern tier access and credit caps
- Entity Budgets — cap per-app / per-dataset monthly spend
- Usage Reporting — credit usage summaries, monthly trends, and top consumers