Skip to content

Usage statistics

Tenant admin

Two read-only endpoints answer “how much GPU did each project use” and “how full were we”, for pulling into a spreadsheet or a BI model such as Power BI. They have no page in the web interface. Both answer only for your own tenant, and only to a tenant admin. Authenticate as for any other call - see REST API - or with an API key.

Terminal window
curl -s "https://app.example.aiqu.ai/api/admin/statistics/gpu_usage?from=2026-01-01&to=2026-09-30&granularity=month" \
-H "Authorization: Bearer aiqu_sk_..."
Parameter
from First day, YYYY-MM-DD. Defaults to the oldest job on record
to Last day, inclusive. Defaults to today
granularity month (default) or day

One row per project and period:

Field
projectid, projectname The project. null for jobs run outside a project
period_start First day of the period. With month, 2026-09-01 means all of September
granularity What the row was aggregated at
jobs Jobs that ran during the period
gpu_hours Hours run times the GPUs the job held
job_hours Hours run, however many GPUs

A run that crosses a period boundary is split: a job from 28 August to 3 September puts its August hours in August and the rest in September. Every run of a restarted job counts, not only the latest.

Terminal window
curl -s "https://app.example.aiqu.ai/api/admin/statistics/gpu_timeline?interval=15" \
-H "Authorization: Bearer aiqu_sk_..."
Parameter
from First day. Defaults to yesterday, so the default window is yesterday and today
to Last day, inclusive. Defaults to today
interval Bucket size in minutes, 1 to 1440. Defaults to 60

One row per bucket, empty buckets included, so the series has no gaps:

Field
ts Start of the bucket, server local time
jobs_running Jobs whose run overlapped the bucket
gpus_allocated GPUs held by those jobs

gpus_allocated is what was booked, not how hard the GPUs worked. A job that holds four GPUs and idles still counts four. For utilisation, use the node metrics.

A request may cover at most 20,000 buckets. A year at one-minute resolution is far over that and is refused with a 400 that says so: widen interval or narrow the window.