Status: Available in the production partner preview atThe SDK contract is tenant scoped:https://api.praxa.io/v1/usagefor tenant API keys withusage:read.
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
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 immutableapi_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_microusdsettlement; - API-key attribution requires immutable
task_runs.api_key_id; toolCallsremains zero until a trustworthy per-task public tool-call source exists.