Usage & Credits
Informer meters platform activity against a tenant-wide credit pool. Every billable action — AI calls, agent runs, app/job compute, and storage — consumes credits drawn from that pool. 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 locally at capture time | 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 credit ceiling (null= unlimited,0= hard stop, positive = capped)
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 usage 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 non-AI resource types (compute, agent runs, storage) still consume 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