Skip to main content
Status: Available in the production partner preview at https://api.praxa.io/v1/usage for tenant API keys with usage:read.
The SDK contract is tenant scoped:
The authenticated developer portal uses the corresponding signed-in route, /api/platform/usage, with workspace=personal and the same snake-case query names. Both routes read the same tenant-scoped evidence projection. The public route accepts the SDK’s groupBy and apiKeyId input properties by encoding them as group_by and api_key_id in the request URL.

Response

Every series item has bucketStart, bucketEnd, and the same usage object. When key-attributed rows exist, byApiKey items have apiKeyId, key name, and the same usage object. The property is omitted when no rows exist.

Evidence boundary

Readback includes only tasks whose immutable api_tenant_id matches the requested tenant and whose owner matches that tenant. Ordinary chat tasks, cross-tenant tasks, and tasks without public-API origin evidence are excluded.
  • token and model-call counts come only from completed provider-call rows;
  • billable amount comes from canonical actual_retail_microusd settlement;
  • API-key attribution requires immutable task_runs.api_key_id;
  • toolCalls remains zero until a trustworthy per-task public tool-call source exists.
This endpoint reports billing evidence. It does not replace reservation, settlement, reconciliation, entitlement, or invoice authority, and it never exposes provider cost or margin.

TypeScript

Last modified on August 14, 2026