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

# Get a public daily series

> Daily index series for a public GPU. Without a key, the free tier covers 5 GPUs — `H100 SXM`, `H200`, `B200`, `A100 SXM4`, `RTX 5090` — for the trailing 3 months (the same window charted for free on index.ornn.com); any other GPU (e.g. `RTX PRO 6000 WS`) requires a key. Pass your API key to unlock the full history back to the earliest available data. The response includes `access: "public-3mo" | "full"`. Rate-limited per IP for anonymous callers.


## Overview

Daily index series for a public GPU. Without a key, the free tier covers 5 GPUs - `H100 SXM`, `H200`, `B200`, `A100 SXM4`, `RTX 5090` - for the trailing 3 months (the same window charted for free on index.ornn.com); any other GPU (e.g. `RTX PRO 6000 WS`) requires a key. Pass your API key to unlock the full history back to the earliest available data. The response includes `access: "public-3mo" | "full"`. Rate-limited per IP for anonymous callers.


## OpenAPI

````yaml openapi.yaml GET /api/gpu/{gpuName}/index-history
openapi: 3.1.0
info:
  title: Ornn Data API
  version: 1.0.0
  description: >
    Read-only REST API for GPU and memory market data. The price index is the
    going rate of compute in USD per GPU-hour, a weighted average of all
    verified compute transactions across the market.
servers:
  - url: https://api.ornnai.com
security:
  - bearerAuth: []
tags:
  - name: Current Prices
  - name: Historical Prices
  - name: Analytics
  - name: Memory
  - name: Token Prices
  - name: Workload Cost
  - name: LLM Coding
  - name: Neo-Cloud Sites
  - name: Reference
paths:
  /api/gpu/{gpuName}/index-history:
    get:
      tags:
        - Historical Prices
      summary: Get a public daily series
      description: >
        Daily index series for a public GPU. Without a key, the free tier covers
        5 GPUs — `H100 SXM`, `H200`, `B200`, `A100 SXM4`, `RTX 5090` — for the
        trailing 3 months (the same window charted for free on index.ornn.com);
        any other GPU (e.g. `RTX PRO 6000 WS`) requires a key. Pass your API key
        to unlock the full history back to the earliest available data. The
        response includes `access: "public-3mo" | "full"`. Rate-limited per IP
        for anonymous callers.
      parameters:
        - $ref: '#/components/parameters/gpuName'
        - name: startDate
          in: query
          description: >-
            ISO 8601. Anonymous callers are clamped to 3 months ago; an API key
            lets startDate reach as far back as data exists.
          schema:
            type: string
            example: '2026-05-01'
        - name: endDate
          in: query
          description: ISO 8601. Defaults to now.
          schema:
            type: string
            example: '2026-05-31'
      responses:
        '200':
          description: Daily series.
          content:
            application/json:
              example:
                success: true
                gpu_type: H100 SXM
                access: public-3mo
                data:
                  - timestamp: '2026-01-01T00:00:00.000Z'
                    index_value: 2
                  - timestamp: '2026-01-02T00:00:00.000Z'
                    index_value: 2
        '400':
          $ref: '#/components/responses/BadRequest'
        '429':
          description: Rate limit exceeded. Back off and cache responses.
      security: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >
            curl
            "https://api.ornnai.com/api/gpu/H100%20SXM/index-history?startDate=2026-05-01&endDate=2026-05-31"
        - lang: python
          label: Python
          source: |
            import requests

            resp = requests.get(
                "https://api.ornnai.com/api/gpu/H100 SXM/index-history",
                params={"startDate": "2026-05-01", "endDate": "2026-05-31"},
            )
        - lang: javascript
          label: JavaScript
          source: |
            const res = await fetch(
              "https://api.ornnai.com/api/gpu/H100 SXM/index-history?startDate=2026-05-01&endDate=2026-05-31",
            );
            const data = await res.json();
        - lang: php
          label: PHP
          source: |
            <?php
            $url = "https://api.ornnai.com/api/gpu/" . rawurlencode("H100 SXM")
                . "/index-history?startDate=2026-05-01&endDate=2026-05-31";
            $ch = curl_init($url);
            curl_setopt_array($ch, [
                CURLOPT_RETURNTRANSFER => true,
            ]);
            $data = json_decode(curl_exec($ch), true);
        - lang: go
          label: Go
          source: "package main\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n)\n\nfunc main() {\n\tendpoint := \"https://api.ornnai.com/api/gpu/\" + url.PathEscape(\"H100 SXM\") +\n\t\t\"/index-history?startDate=2026-05-01&endDate=2026-05-31\"\n\treq, _ := http.NewRequest(\"GET\", endpoint, nil)\n\tresp, _ := http.DefaultClient.Do(req)\n\tdefer resp.Body.Close()\n\tbody, _ := io.ReadAll(resp.Body)\n\t_ = body\n}\n"
        - lang: java
          label: Java
          source: >
            import java.net.URI;

            import java.net.http.HttpClient;

            import java.net.http.HttpRequest;

            import java.net.http.HttpResponse;


            HttpClient client = HttpClient.newHttpClient();

            HttpRequest request = HttpRequest.newBuilder(
                    URI.create("https://api.ornnai.com/api/gpu/H100%20SXM/index-history?startDate=2026-05-01&endDate=2026-05-31"))
                .build();
            HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());
        - lang: ruby
          label: Ruby
          source: >
            require "net/http"

            require "json"


            uri =
            URI("https://api.ornnai.com/api/gpu/H100%20SXM/index-history?startDate=2026-05-01&endDate=2026-05-31")

            res = Net::HTTP.get_response(uri)

            data = JSON.parse(res.body)
components:
  parameters:
    gpuName:
      name: gpuName
      in: path
      required: true
      description: A supported GPU model. URL-encode spaces.
      schema:
        type: string
        enum:
          - H100 SXM
          - H200
          - A100 SXM4
          - B200
          - RTX 5090
          - RTX PRO 6000 WS
        example: H100 SXM
  responses:
    BadRequest:
      description: A required parameter is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          example: Bad request
        message:
          type: string
          example: >-
            Invalid GPU type. Allowed: H100 SXM, H200, A100 SXM4, RTX 5090,
            B200, RTX PRO 6000 WS
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token. Create one in the dashboard.

````