Every allocation, asset, and cloud cost endpoint needs the
QueryCost permission, which the SysAdmin and GovernanceAdmin roles include.Choose an endpoint
Each endpoint has an
/accumulated variant, such as /api/cost/v2/allocation/summary/accumulated, that combines the window into one set of results.
Set the time window
Every endpoint requireswindow. It accepts:
- A duration:
24his the last 24 hours.1dis today since midnight UTC, and7dis today plus the previous six days. - A named period:
today,yesterday,week, orlastweek. - A start and end time in UTC, separated by a comma:
2026-11-01T00:00:00Z,2026-11-02T00:00:00Z.
/accumulated return one row per group for each calendar day in the window, each with its own window, so window=7d returns seven rows per group and window=24h usually returns two. The /accumulated endpoints return one row per group for the whole window. To split an accumulated result by day or week, set interval to day or week.
Group results
Setaggregate to the field to group by. To group by more than one field, repeat the parameter, for example aggregate=projectName&aggregate=startingUserUsername. A comma-separated list in a single value returns HTTP 400.
- Domino fields:
projectId,projectName,projectOwnerId,projectOwnerUsername,organizationName,startingUserId,startingUserUsername,executionId,workloadId,workloadType,workloadEngine, andbillingTag. - Kubernetes fields:
cluster,node,namespace,controllerKind,pod,container, andservice. - Kubernetes labels:
label:<label-key>, for examplelabel:app. - Label aliases:
department,environment,owner,product, andteamgroup by the labelsdepartment,env,owner,app, andteamby default.
key object with one entry for each aggregate field. Results that don’t fit a group appear under reserved values:
__idle__: node capacity that no workload used.__unallocated__: workloads that have no value for the grouping field, such as a missing label.__unmounted__: persistent volumes and load balancers that no workload mounted.
aggregate. Without it, results are grouped by namespace, but each key names the namespace cluster.
Values that the allocation endpoints reject:
controller,deployment,daemonset,statefulset,job,cronjob,replicaset,pv,pvc, andstorageclassreturn HTTP 400.controllerName,services, and asset or cloud cost fields such asnameandassetTypereturn HTTP 500. To group by Kubernetes service, useservice.
name, category, cluster, project, provider, providerID, account, and service. The cloud cost endpoints group by accountID, category, invoiceEntityID, provider, providerID, and service.
Filter results
Write eachfilter condition as a field, an operator, and a value in double quotes, such as projectName:"churn-model". Unquoted values and values that contain a double quote return HTTP 400; an escaped double quote (\") returns HTTP 500.
The contains operator,
~:, returns HTTP 400.
To match any of several values, separate the quoted values with commas: namespace:"domino-compute","domino-platform". Join conditions with + for “and” or | for “or”, and group them with parentheses: (namespace:"domino-compute"|namespace:"domino-platform")+workloadType:"App".
Filters accept the Domino fields, the label aliases, label[<label-key>], annotation[<annotation-key>], and the Kubernetes fields cluster, node, namespace, controllerKind, controllerName, pod, container, and services. Filters name Kubernetes services services, not service as in aggregate; service in a filter returns HTTP 500.
URL-encode the filter, or + arrives as a space and the request returns HTTP 400. curl --data-urlencode, used in the samples below, encodes it for you.
Share costs
Sharing removes a cost’s own group and spreads the cost across the remaining results, so totals stay the same. OnlyshareCost adds to the total.
- Idle cost: results include idle node capacity as
__idle__. SetshareIdle=trueto spread it across the other results, oridle=falseto leave it out. - Namespaces:
shareNamespaces=kube-system,domino-platformshares the cost of the listed namespaces. - Labels:
shareLabels=app:aggregator,app:cloud-costshares the cost of workloads with any of the listed<label-key>:<label-value>pairs. Repeating the parameter uses only its first value. - Fixed amount:
shareCostadds a monthly amount, prorated to the window.shareCost=30.42adds 1.00 to each day.
shareSplit=weighted is the default; shareSplit=even returns HTTP 500.
Don’t set reconcile=false: the summary endpoints return HTTP 500 for it.
Page through results
Setlimit to the number of results per page and offset to the number of results to skip. Every page also includes the __idle__ result, unless you set shareIdle=true or idle=false.
API samples
Domino recommends using Service Accounts to access the Domino API. The samples read the access token from$TOKEN, your Domino host name from $DOMAIN, and a Project or user ID from $PROJECT_ID or $USER_ID. Group by projectId or startingUserId to find those IDs.
Total cost for the last 7 days, with idle cost shared among allocations
Cost by Project and user for the last 7 days
Cost for one Project yesterday
Daily cost for one user over the last 7 days
Asset costs for yesterday
Cloud costs for the last 7 days, by invoice entity
Query the v1 endpoints
/api/cost/v1/allocation and /api/cost/v1/allocation/summary group only by Domino labels. Set aggregate to label:dominodatalab.com/<label>, and separate several with commas. <label> is one of project-id, project-name, project-owner-id, project-owner-username, organization-name, starting-user-id, starting-user-username, execution-id, workload-id, workload-type, workload-engine, or billing-tag. Any other value returns HTTP 400.
The v1 endpoints pass filter to Kubecost unchanged, so they don’t accept Domino field names, and an unquoted value returns HTTP 500. Use the v2 endpoints for new work.
Next steps
See other ways Domino Cost Center (FinOps) can help you optimize the performance of your Projects while managing cloud expenditures:- Prevent overspending on compute and storage by setting budgets and sending alerts to team members approaching their limits.
- Optimize Dataset storage usage to reduce cloud storage costs.