Costs
The costs methods read what your organization spends: an overall summary, per-day and per-month series, and a per-service breakdown you can page, sort, filter and export as CSV. Some cover the whole organization. The rest take a provider ID and answer the same questions for one cloud.
Organization-wide
Get cost summary
Returns an overall cost summary: total costs, forecast, savings, and a breakdown by provider.
summary = client.costs.get_summary()List costs
Returns a cost breakdown in one of these formats: table (paginated), chart (aggregated for stacked bar charts), csv (export), or raw (all records). Format scopes some of the parameters below: page and page_size apply to table, granularity to chart.
breakdown = client.costs.list(
format="table",
period="2026-03",
provider_id="aws",
page=1,
page_size=50,
sort_by="cost",
sort_order="desc",
)List costs parameters
| Parameter | Type | Description |
|---|---|---|
format | string | Response format: table, chart, csv, raw |
period | string | Period in YYYY-MM format (defaults to current month) |
provider_id | string | Filter by provider: aws, gcp, azure, k8s |
granularity | string | daily or monthly (for chart format) |
group_by | string | Grouping dimension: provider or account_id |
start | string | Start date (ISO 8601) |
end | string | End date (ISO 8601) |
page | int | Page number (table format only) |
page_size | int | Items per page (table format only) |
sort_by | string | Sort field: cost, service, region, account_id, change_percentage |
sort_order | string | asc or desc |
period defaults to the current month, and the current month is still running. Pass a completed YYYY-MM when the number has to hold still.Get daily costs
Returns costs aggregated per day for a given date range.
daily = client.costs.get_daily_costs(
start="2026-03-01T00:00:00.000Z",
end="2026-03-31T00:00:00.000Z",
)Get monthly costs
Returns costs aggregated per month across all time.
monthly = client.costs.get_monthly_costs()One provider
Each of these takes a provider ID. Providers has the IDs, and what a provider-scoped call returns for one your organization has not connected.
Get provider summary
Returns a per-provider cost summary with monthly costs, forecast, potential savings, and the top 3 services for that provider.
summary = client.costs.get_provider_summary("aws")List by provider
Returns a paginated per-provider cost breakdown. Every row carries its previous-period cost and change percentage, and the response carries per-date totals across all pages, not just the page you asked for.
breakdown = client.costs.list_by_provider(
"aws",
preset="30D",
granularity="daily",
group_by=["service", "region"],
service=["EC2", "RDS"],
region=["us-east-1"],
page=1,
page_size=20,
sort_by="cost",
sort_order="desc",
)List by provider parameters
| Parameter | Type | Description |
|---|---|---|
format | string | table, chart, csv, or raw (defaults to table) |
start | string | Start date (ISO 8601) |
end | string | End date (ISO 8601) |
preset | string | Date preset: 30D, 6M, or 12M (overrides start/end) |
granularity | string | daily or monthly |
page | int | Page number (1-indexed) |
page_size | int | Items per page |
sort_by | string | Sort field: service, environment, region, account_id, cost, previous_cost, change_percentage |
sort_by_date | string | Sort by a specific date column (YYYY-MM-DD or YYYY-MM, overrides sort_by) |
sort_order | string | asc or desc |
group_by | string[] | Multi-dimension grouping: service, account_id, region, tag |
service | string[] | Filter by service |
environment | string[] | Filter by environment |
account_id | string[] | Filter by account ID |
region | string[] | Filter by region |
tag_key | string[] | Filter by tag key (required when group_by includes tag) |
tag_value | string[] | Filter by tag value |
preset overrides start and end. Send all three and the window you get is the preset's, not your dates.Filtering and sorting turns these parameters into ready-to-run recipes, mostly for the l4 CLI, with the SDK equivalents at the end.
Get provider filters
Returns distinct values available for filtering the per-provider cost breakdown (services, regions, accounts, tag keys, tag values) within a date range. Populate an autocomplete with them, or check a user-supplied filter value before you query with it.
filters = client.costs.get_provider_filters(
"aws",
start="2026-01-01T00:00:00.000Z",
end="2026-01-31T00:00:00.000Z",
)Get provider timeline
Returns a per-provider cost timeline at the requested granularity. Plot it as a trend chart of one provider's cost over time.
timeline = client.costs.get_provider_timeline(
"aws",
start="2026-01-01T00:00:00.000Z",
end="2026-03-31T00:00:00.000Z",
granularity="daily",
)Example: export costs to CSV
from levelfour import LevelFour
client = LevelFour()
csv_data = client.costs.list(
format="csv",
start="2026-01-01T00:00:00.000Z",
end="2026-03-31T00:00:00.000Z",
)
print(csv_data)Next
- Providers has the provider IDs and the rest of the provider-scoped surface
- Pagination has the defaults behind
pageandpage_size, and the iterators that page for you - API reference is generated from the schema: every parameter, enum and response field
Providers
Provider-scoped reads for recommendations, savings, and costs on AWS, GCP, Azure, and Kubernetes. A provider you have not connected returns 404.
Recommendations
Every recommendations method in the Python, TypeScript and Go SDKs, with its parameters, the row shape it returns, and a worked example.