Skip to main content
The FOCUS Billing Export API lets you pull your CoreWeave usage data in FinOps Open Cost and Usage Specification (FOCUS) 1.2 format. Use it to load CoreWeave usage into a data warehouse or FinOps tool alongside exports from other cloud providers. This page shows you how to make a request, set query parameters, and interpret the JSON or CSV response. The API returns the same billable usage you see in Billing insights, at hourly grain, as JSON or CSV.
The FOCUS Billing Export API is in public preview. Schema details and behavior may change before general availability. If you receive unexpected values, numbers that don’t reconcile with Billing insights, errors, or slow responses, contact Support.

Scope

This public preview includes the following:
  • Usage quantities at hourly grain (for example, GPU-hours, GiB-hours, and IP-hours)
  • Filters for time range, product family, cluster, and zone
  • JSON and CSV response formats
  • Pagination for large results
This public preview doesn’t include the following:
  • Cost or dollar amounts. This release returns usage quantities only. Cost fields such as billed or effective cost are planned for a later release on the same schema.
  • Project-level attribution or resource tags.
  • Per-resource or per-node rows. Usage is aggregated. See Data grain.
The following FOCUS fields are blank in this release: BillingAccountName, ChargeClass, ChargeDescription, RegionName, and ResourceType.

Prerequisites

Before you call the API, make sure you have the following: The token is scoped to your organization, so you don’t pass an organization identifier in the request. The API returns results for the account associated with the token.

Make your first request

The export endpoint is:
To confirm access and inspect the response shape, send a request to the export endpoint. This default example without any parameters returns the last seven days of usage grouped by location, as JSON. In the Authorization header, pass your token. Replace [API-ACCESS-TOKEN] with your CoreWeave API access token:
The following example requests a specific month, groups by capacity plan, and saves CSV output to a file:
A successful request returns FOCUS usage rows for the window you requested.

Query parameters

All parameters are optional. Times use ISO 8601 in UTC. The following constraints apply:
  • The time range can’t exceed 90 days per request.
  • Historical data is available from January 1, 2026 onward. Requests for earlier periods return no data for that portion of the range.

Response

A successful response includes metadata and usage rows as JSON. When you set format=csv, the response is a CSV file. The following sections describe the JSON envelope, the row schema, data grain, and pagination.

JSON envelope

A successful JSON response has this shape:

Row schema (FOCUS 1.2)

Each row is one hourly usage bucket. Columns follow FOCUS 1.2 naming. CoreWeave-specific columns use the x_ prefix per the FOCUS convention. If source metadata isn’t available, some fields may be null during the public preview. If a field you need is empty, contact Support.

Data grain

The API offers the following mutually exclusive views. Use group_by to select one:
  • group_by=location (default): one row per (hour, zone, cluster, SKU). Location is a physical property of the usage. x_CapacityPlan and PricingCategory are null in this view.
  • group_by=capacity_plan: one row per (hour, SKU, capacity plan). Capacity plan (On-Demand, Reservation, Spot, or Flex) is a rating-time property of your organization’s usage. It can’t be tied to a specific location, so RegionId, RegionName, x_ClusterId, and x_ClusterName are null in this view.
Every value is a sum across all nodes and resources in the bucket. The API never emits per-node rows. The two views are pivots of the same underlying usage. For any given hour and SKU, the total PricingQuantity is identical across both views.

Pagination

The API paginates results (default 100 rows per page, maximum 1,000). When more data exists, the JSON response includes next_page_token. Pass that value back as page_token until the token is absent. To fetch the next page:
  • Replace [PAGE-TOKEN] with the next_page_token value from the previous response.
For CSV, the pagination metadata is in the response headers instead of the body: X-Next-Page-Token, X-Page-Size, X-FOCUS-Version, and X-Data-As-Of.

CSV format

When you set format=csv, the API returns the following:
  • The response Content-Type is text/csv; charset=utf-8, delivered as a file attachment.
  • The first row is a header that uses exact FOCUS column names. All columns appear in both views. Columns that don’t apply to the active view are left empty (not omitted), so the layout is stable.
  • Fields that contain commas, quotes, or newlines are double-quoted per RFC 4180.
  • Pagination works the same as JSON: one page per request. Use the X-Next-Page-Token header for the next page.

Errors

All error responses use this shape:
For more information about billing usage and API access, see the following resources:
Last modified on September 11, 2026