> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Query Usage-based Billing

## Request Headers

<ParamField header="Content-Type" type="string" required={true}>
  Enum: `application/json`
</ParamField>

<ParamField header="Authorization" type="string" required={true}>
  Bearer authentication format, for example: Bearer \{\{API Key}}.
</ParamField>

## Query Parameters

<ParamField query="cycleType" type="string" required={true}>
  Billing cycle granularity. Options: `Hour`, `Day`, `Week`, `Month`.
</ParamField>

<ParamField query="productCategory" type="string" required={true}>
  Product type. Common values:

  * `summary` (Summary bill)
  * `gpu` (GPU instance)
  * `llm` (LLM API)
  * `serverless` (Serverless Endpoint)
  * `cloud_storage` (Storage resources)
  * `gen_api` (Image/Video/Audio generation)
  * `cloud_sandbox` (Agent Sandbox)
  * `llm_dedicated_endpoint` (LLM Dedicated Endpoint)
  * `web_search` (Web Search)
  * `bare_metal` (Bare Metal)
</ParamField>

<ParamField query="productName" type="string" required={false}>
  Product name. Supports fuzzy matching.
</ParamField>

<ParamField query="category" type="string" required={false}>
  Product subcategory.
</ParamField>

<ParamField query="startTime" type="integer" required={false}>
  Start time of the billing period to query, Unix timestamp in seconds (int64).
</ParamField>

<ParamField query="endTime" type="integer" required={false}>
  End time of the billing period to query, Unix timestamp in seconds (int64).
</ParamField>

<ParamField query="ownerId" type="string" required={false}>
  Resource instance ID.
</ParamField>

<Info>
  This endpoint does not support pagination. Keep each query range within 31 days. For longer ranges, split requests by calendar month or calendar week.
</Info>

## Response Parameters

<ResponseField name="bills" type="object[]" required={true}>
  Pay-as-you-go bill list.

  <Expandable title="properties" defaultOpen={true}>
    <ResponseField name="userId" type="string" required={true}>
      User account ID.
    </ResponseField>

    <ResponseField name="startTime" type="string" required={true}>
      Bill start time, Unix timestamp in seconds.
    </ResponseField>

    <ResponseField name="endTime" type="string" required={true}>
      Bill end time, Unix timestamp in seconds.
    </ResponseField>

    <ResponseField name="billingMethod" type="int32" required={true}>
      Billing method: `1` (pay-as-you-go), `2` (subscription).
    </ResponseField>

    <ResponseField name="productName" type="string" required={true}>
      Product name.
    </ResponseField>

    <ResponseField name="category" type="string" required={true}>
      Product type or subcategory.
    </ResponseField>

    <ResponseField name="ownerID" type="string" required={true}>
      Resource instance ID.
    </ResponseField>

    <ResponseField name="productId" type="string" required={true}>
      Product ID.
    </ResponseField>

    <ResponseField name="billNum0" type="string" required={true}>
      Usage field 0. Meaning varies by product type:

      * `llm`: input tokens.
      * `gpu`: number of cards × billing duration.
      * `cloud_storage`: storage capacity × billing duration.
      * `serverless`: sum of worker count × duration.
    </ResponseField>

    <ResponseField name="billNum1" type="string" required={true}>
      Usage field 1. For `llm`, this usually means output tokens.
    </ResponseField>

    <ResponseField name="billNum2" type="string" required={true}>
      Usage field 2. For `llm`, this usually means read cache tokens.
    </ResponseField>

    <ResponseField name="billNum3" type="string" required={true}>
      Usage field 3. For `llm`, this usually means write 5-minute cache tokens.
    </ResponseField>

    <ResponseField name="billNum4" type="string" required={true}>
      Usage field 4. For `llm`, this usually means output reasoning tokens. Currently not supported.
    </ResponseField>

    <ResponseField name="billNum5" type="string" required={true}>
      Usage field 5. For `llm`, this usually means write 1-hour cache tokens.
    </ResponseField>

    <ResponseField name="billNum6" type="string" required={false}>
      Usage field 6.
    </ResponseField>

    <ResponseField name="billNum7" type="string" required={false}>
      Usage field 7.
    </ResponseField>

    <ResponseField name="billNum8" type="string" required={false}>
      Usage field 8.
    </ResponseField>

    <ResponseField name="billNum9" type="string" required={false}>
      Usage field 9.
    </ResponseField>

    <ResponseField name="billNum10" type="string" required={false}>
      Usage field 10.
    </ResponseField>

    <ResponseField name="billNum11" type="string" required={false}>
      Usage field 11.
    </ResponseField>

    <ResponseField name="billNum12" type="string" required={false}>
      Usage field 12.
    </ResponseField>

    <ResponseField name="billNum13" type="string" required={false}>
      Usage field 13.
    </ResponseField>

    <ResponseField name="billNum14" type="string" required={false}>
      Usage field 14.
    </ResponseField>

    <ResponseField name="billNum15" type="string" required={false}>
      Usage field 15.
    </ResponseField>

    <ResponseField name="basePrice0" type="string" required={true}>
      Original price field 0.

      * `llm`: input price per 1M tokens.
      * `gpu`: price per card per hour.
      * `cloud_storage`: price per GB per day.
    </ResponseField>

    <ResponseField name="basePrice1" type="string" required={true}>
      Original price field 1. For `llm`, this usually means the output price per 1M tokens.
    </ResponseField>

    <ResponseField name="basePrice2" type="string" required={true}>
      Original price field 2. For `llm`, this usually means the read cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="basePrice3" type="string" required={true}>
      Original price field 3. For `llm`, this usually means the write 5-minute cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="basePrice4" type="string" required={true}>
      Original price field 4. For `llm`, this usually means the reasoning token price per 1M tokens.
    </ResponseField>

    <ResponseField name="basePrice5" type="string" required={true}>
      Original price field 5. For `llm`, this usually means the write 1-hour cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="discountPrice0" type="string" required={true}>
      Discounted price field 0.

      * `llm`: discounted input price per 1M tokens.
      * `gpu`: discounted price per card per hour.
      * `cloud_storage`: discounted price per GB per day.
    </ResponseField>

    <ResponseField name="discountPrice1" type="string" required={true}>
      Discounted price field 1. For `llm`, this usually means the discounted output price per 1M tokens.
    </ResponseField>

    <ResponseField name="discountPrice2" type="string" required={true}>
      Discounted price field 2. For `llm`, this usually means the discounted read cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="discountPrice3" type="string" required={true}>
      Discounted price field 3. For `llm`, this usually means the discounted write 5-minute cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="discountPrice4" type="string" required={true}>
      Discounted price field 4. For `llm`, this usually means the discounted reasoning token price per 1M tokens.
    </ResponseField>

    <ResponseField name="discountPrice5" type="string" required={true}>
      Discounted price field 5. For `llm`, this usually means the discounted write 1-hour cache price per 1M tokens.
    </ResponseField>

    <ResponseField name="amount" type="string" required={true}>
      Total amount, unit is 1/10000 USD.
    </ResponseField>

    <ResponseField name="voucherAmount" type="string" required={true}>
      Amount deducted by vouchers, unit is 1/10000 USD.
    </ResponseField>

    <ResponseField name="payAmount" type="string" required={true}>
      Cash payment amount, unit is 1/10000 USD.
    </ResponseField>

    <ResponseField name="payAmountDisplay" type="float" required={true}>
      Display value of cash payment amount, in USD.
    </ResponseField>

    <ResponseField name="pricePrecision" type="int32" required={true}>
      Price precision. Unit price (USD) = unit price / 10000 / `pricePrecision`.
    </ResponseField>

    <ResponseField name="llmSeries" type="string" required={false}>
      LLM series.
    </ResponseField>

    <ResponseField name="requestCount" type="string" required={false}>
      Request count.
    </ResponseField>

    <ResponseField name="multimodalPricing" type="object" required={false}>
      Multimodal model billing details.
    </ResponseField>

    <ResponseField name="tieredConfig" type="object" required={false}>
      Tiered billing configuration.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash theme={"system"}
  curl --request GET \
    --url 'https://api.novita.ai/openapi/v1/billing/bill/list?cycleType=Day&productCategory=llm&startTime=1764547200&endTime=1767225599' \
    --header 'Authorization: Bearer <API_KEY>'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"system"}
  {
    "bills": [
      {
        "userId": "<string>",
        "startTime": "1764547200",
        "endTime": "1764633599",
        "billingMethod": 1,
        "productName": "<string>",
        "category": "llm",
        "ownerID": "<string>",
        "billNum0": "1000",
        "billNum1": "500",
        "basePrice0": "0",
        "basePrice1": "0",
        "discountPrice0": "0",
        "discountPrice1": "0",
        "amount": "10000",
        "voucherAmount": "0",
        "payAmount": "10000",
        "payAmountDisplay": 1,
        "pricePrecision": 1,
        "productId": "<string>"
      }
    ]
  }
  ```
</ResponseExample>
