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

# Index History

<Info>
  The Intraday Index is available to authorized clients. Your API token must have the required permissions added — contact [david@compute-index.com](mailto:david@compute-index.com) to request access.
</Info>

## Example

Daily-resolution B200 series since January 2026:

```bash theme={null}
curl -H "Authorization: Bearer $TOKEN" \
  "https://data-api.compute-index.com/v1/custom-index/history?index_id=b200-us&resolution=1d&start=2026-01-01"
```


## OpenAPI

````yaml pricing/openapi.json GET /v1/custom-index/history
openapi: 3.1.0
info:
  title: GPU Pricing API
  description: |2-

        **GPU Pricing API** provides real-time and historical pricing data
        for GPU compute across 50+ cloud providers and GPU marketplaces.

        ## Features
        - Search current prices across vendors
        - Historical price trends
        - GPU transaction data
        - **Informational Price Index** — EWMA-smoothed composite indices by GPU family, region, and contract type
        - **Transaction Price Index** — smoothed indices derived from verified GPU transactions
        - **Custom Index** — EWMA-smoothed H100 sub-model indices by region, contract type, and vendor category
        - Global region coverage (US, EU, APAC)
        - GPU availability tracking
        - Scope-based API key access control

        ## Authentication
        Send your token as a Bearer token in the `Authorization` header on every request:
        ```
        Authorization: Bearer YOUR_TOKEN
        ```
        Example:
        ```bash
        curl -H "Authorization: Bearer $TOKEN" "https://data-api.compute-index.com/v1/vendors"
        ```
        Tokens are issued by Compute Index (david@compute-index.com); long-lived, treat as secrets.

        > The legacy `X-API-Key` header is deprecated — use the `Authorization: Bearer` header above.

        ## Rate Limits
        - **Free tier**: 100 requests/minute, 10,000/day
        - **Pro tier**: 1,000 requests/minute, 100,000/day
        - **Enterprise**: Custom limits

        ## Data Coverage
        - 50+ vendors (AWS, Azure, GCP, Oracle, CoreWeave, Lambda, RunPod, Vast.AI, FluidStack, Vultr, etc.)
        - 30M+ historical pricing records
        - Updated multiple times daily

        ## Support
        - Support: david@compute-index.com
        
  contact:
    name: API Support
    email: david@compute-index.com
  license:
    name: Commercial License
    url: https://compute-desk.com/license
  version: 1.0.0
servers:
  - url: https://data-api.compute-index.com
security: []
paths:
  /v1/custom-index/history:
    get:
      tags:
        - Custom Index
      summary: Get Custom Index History
      operationId: get_custom_index_history_v1_custom_index_history_get
      parameters:
        - name: index_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Index id (e.g. h100-us). Defaults to your sole index.
            title: Index Id
          description: Index id (e.g. h100-us). Defaults to your sole index.
        - name: region_group
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Region Group
        - name: contract_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Contract Type
        - name: vendor_category
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Vendor Category
        - name: start
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: 'Start (UTC): YYYY-MM-DD or ISO-8601 datetime.'
            title: Start
          description: 'Start (UTC): YYYY-MM-DD or ISO-8601 datetime.'
        - name: end
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: 'End (UTC): YYYY-MM-DD or ISO-8601 datetime. Default: now.'
            title: End
          description: 'End (UTC): YYYY-MM-DD or ISO-8601 datetime. Default: now.'
        - name: resolution
          in: query
          required: false
          schema:
            type: string
            description: 'Sampling resolution: 30m (default), 1h, 1d.'
            default: 30m
            title: Resolution
          description: 'Sampling resolution: 30m (default), 1h, 1d.'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 10000
            minimum: 1
            description: Max points per page (<= 10000).
            default: 1000
            title: Limit
          description: Max points per page (<= 10000).
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: Pagination offset (points to skip).
            default: 0
            title: Offset
          description: Pagination offset (points to skip).
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomIndexHistoryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    CustomIndexHistoryResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/CustomIndexDataPoint'
          type: array
          title: Data
        index_name:
          type: string
          title: Index Name
        resolution:
          type: string
          title: Resolution
          description: 'Sampling resolution: 30m, 1h, or 1d'
        total_count:
          type: integer
          title: Total Count
          description: Total points in range at this resolution (across all pages)
        returned_count:
          type: integer
          title: Returned Count
          description: Points returned in this page
        limit:
          type: integer
          title: Limit
        offset:
          type: integer
          title: Offset
        has_more:
          type: boolean
          title: Has More
          description: True if more points exist beyond this page
        next_offset:
          anyOf:
            - type: integer
            - type: 'null'
          title: Next Offset
          description: Offset to pass for the next page, or null if none
        filters:
          additionalProperties: true
          type: object
          title: Filters
      type: object
      required:
        - data
        - index_name
        - resolution
        - total_count
        - returned_count
        - limit
        - offset
        - has_more
        - filters
      title: CustomIndexHistoryResponse
      description: Response for custom index history time series (paginated).
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CustomIndexDataPoint:
      properties:
        timestamp:
          type: string
          title: Timestamp
          description: >-
            Interval start, UTC ISO-8601 (30-min grid), e.g.
            2026-06-01T12:30:00+00:00
        index_id:
          type: string
          title: Index Id
          description: Index identifier (e.g., h100-us)
        index_name:
          type: string
          title: Index Name
          description: Index name (e.g., h100)
        gpu_family:
          type: string
          title: Gpu Family
          description: GPU family (hopper)
        gpu_model:
          type: string
          title: Gpu Model
          description: GPU group (h100)
        region_group:
          type: string
          title: Region Group
          description: Region group
        contract_type:
          type: string
          title: Contract Type
          description: Contract type
        vendor_category:
          type: string
          title: Vendor Category
          description: Vendor category
        index_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Index Value
          description: EWMA-smoothed blended index ($/GPU-hr); the headline
        blended_value:
          anyOf:
            - type: number
            - type: 'null'
          title: Blended Value
          description: Raw (unsmoothed) blended index ($/GPU-hr)
        index_units:
          type: string
          title: Index Units
          description: Units of the index value
          default: usd_per_gpu_per_hr
        p5:
          anyOf:
            - type: number
            - type: 'null'
          title: P5
          description: Blended envelope 5th percentile (unsmoothed)
        p95:
          anyOf:
            - type: number
            - type: 'null'
          title: P95
          description: Blended envelope 95th percentile (unsmoothed)
      type: object
      required:
        - timestamp
        - index_id
        - index_name
        - gpu_family
        - gpu_model
        - region_group
        - contract_type
        - vendor_category
      title: CustomIndexDataPoint
      description: >-
        Single data point from a custom intraday blended index.


        The publication target is the blended index: `index_value` is the

        EWMA-smoothed blended value (headline), `blended_value` is the raw

        (unsmoothed) blended value, and `p5`/`p95` are the (unsmoothed) envelope
        band.

        Timestamps are UTC ISO-8601 on a 30-minute grid.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````