Cost query
Grouped and time-series cost breakdown for a period, with optional stacking and dimension filters. With format=csv or format=xlsx the response is a file with one row per leaf group and billing currency, every group included (group_limit and group_offset do not apply), followed by one total row per currency. Amounts are in the currency the spend was billed in. Exports are capped at 50000 rows.
Authorizations
Enter "Bearer {token}"
Headers
Tenant ID
Query Parameters
Cost period; defaults to month_to_date
month_to_date, last_7d, last_30d, calendar_month, custom Closed calendar month in YYYY-MM format; required when period=calendar_month
Window start in RFC3339 format; required when period=custom
Window end in RFC3339 format; required when period=custom
ISO 4217 code to express every amount in, converted at each day's exchange rate; defaults to the currency most of the selected period's spend was billed in, or USD when none dominates
Ordered, comma-separated dimensions to group by; nested into a tree (e.g. provider,region,resource_type). Fixed dimensions: provider, resource_type, service_category, service_subcategory, service, region, availability_zone, resource, sku_id, sku_meter, charge_category, charge_description, pricing_category, pricing_unit, usage_unit, billing_account_id, sub_account, sub_account_type, invoice_id, invoice_issuer, publisher, currency. Tag and virtual-tag keys are also accepted as tag:, and provider extension keys as extension:; those keys are per-tenant or per-provider so they are not enumerable here
Dimension to stack the time series by; accepts any dimension group_by accepts, including tag: and extension:
Cost layer; defaults to billed. ci returns CI runner job rows, including each job's share of a vendor bill.
billed, allocation, ci Maximum groups returned per level of the group tree; defaults to 100. Groups beyond the limit are combined into one final entry per level, marked other=true and carrying the folded group count
Number of top-level groups to skip, for paging past group_limit; deeper levels are not paged. The trailing other entry counts the groups left after this page
Case-insensitive text matched against the values and names of the grouped dimensions; totals, groups and series cover only matching rows, and totals.searchSharePct gives their share of the unsearched total
Response format; defaults to json. csv and xlsx download the full group table as a file
json, csv, xlsx Break every group down by sub-account, returning the top spenders plus a rollup of the rest and, where the group is only partly attributed, the unassigned remainder
Repeated key:value dimension filter, repeat a key to match any of its values, e.g. filter=provider:aws&filter=provider:gcp. Keys are the same dimensions group_by accepts: provider, resource_type, service_category, service_subcategory, service, region, availability_zone, resource, sku_id, sku_meter, charge_category, charge_description, pricing_category, pricing_unit, usage_unit, billing_account_id, sub_account, sub_account_type, invoice_id, invoice_issuer, publisher, currency, plus per-tenant tag and virtual-tag keys as filter=tag:: and provider extension keys as filter=extension::. Prefix a dimension with has: for rows where it resolves at all, e.g. filter=has:tag:owner, filter=has:extension:x_ProjectId or filter=has:region. Prefix a dimension with no: for rows where it does not resolve, e.g. filter=no:tag:owner or filter=no:region. Prefix a dimension with not: to drop the given values, keeping rows where it does not resolve, repeat it to drop several, e.g. filter=not:provider:aws&filter=not:provider:gcp or filter=not:tag:team:platform; it combines with a plain filter on the same dimension. A filter_= query parameter is equivalent