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

# Reference data

> GPU models, families, regions and reference prices — the vocabulary the catalog filters speak.

Four small endpoints supply the values that `/offers` filters expect. All require
`catalog:read`, none are paginated — each returns a bounded set in full — and all
change on the order of days.

<Tip>
  Fetch these once at startup and cache them. Re-reading `/regions` on every user
  keystroke is the easiest way to spend a rate limit on data that has not changed
  since Tuesday.
</Tip>

## GPU families

```bash theme={null}
curl -s https://api.gpuoutlet.ai/v1/gpu-families \
  -H "Authorization: Bearer $GPUOUTLET_API_KEY"
```

```json theme={null}
{
  "data": [
    {
      "gpu_family": "h100-80gb",
      "gpu_name": "NVIDIA H100",
      "gpu_arch": "Hopper",
      "vram_gb": 80,
      "currency": "usd",
      "availability": {
        "available": true,
        "offer_count": 14,
        "from_price_per_hour_cents": 249
      }
    }
  ]
}
```

This one endpoint answers *"is there H100 capacity right now, and from what
price"* — which is why there is no separate availability resource. It is the
right call for a landing page, a capacity dashboard, or the first screen of a
picker.

<ResponseField name="availability.offer_count" type="integer">
  How many offers currently exist in this family.
</ResponseField>

<ResponseField name="availability.from_price_per_hour_cents" type="integer | null">
  The cheapest live offer — or, when nothing is live, the **reference price**, so
  the figure stays meaningful when the family is sold out. Read it together with
  `available` if that distinction matters to you.
</ResponseField>

Use `/offers?available=true` when you need the individual offers rather than the
summary.

## GPU models

```json theme={null}
{
  "data": [
    { "gpu_model": "h100-sxm-80gb", "gpu_name": "NVIDIA H100 SXM", "vram_gb": 80, "gpu_family": "h100-80gb" },
    { "gpu_model": "h100-pcie-80gb", "gpu_name": "NVIDIA H100 PCIe", "vram_gb": 80, "gpu_family": "h100-80gb" }
  ]
}
```

Every model that appears in the catalog. A model is a specific SKU; a family
groups the variants of a card. The example above is the distinction in one place:
two models, one family, different interconnects.

Filter by `gpu_model` when the form factor genuinely matters — NVLink bandwidth
between SXM boards, say. Filter by `gpu_family` otherwise.

## Regions

```json theme={null}
{
  "data": [
    { "region": "us-east-1", "region_name": "US East", "geo": "us" },
    { "region": "eu-central-1", "region_name": "EU Central", "geo": "eu" }
  ]
}
```

<ResponseField name="region" type="string" required>
  The code to pass to `/offers?region=…`.
</ResponseField>

<ResponseField name="region_name" type="string" required>
  For display. Do not parse it — it is prose and we will reword it.
</ResponseField>

<ResponseField name="geo" type="string | null">
  `us` · `eu` · `asia` · `other`. The bucket `/offers?geo=…` filters on.
</ResponseField>

Regions describe where the machine physically is, which is what matters for both
latency to your data and for where that data comes to rest.

## Reference prices

```json theme={null}
{
  "data": [
    {
      "gpu_model": "h100-sxm-80gb",
      "gpu_name": "NVIDIA H100 SXM",
      "vram_gb": 80,
      "currency": "usd",
      "on_demand_price_per_hour_cents": 289,
      "updated_at": "2026-07-21T09:00:00.000Z"
    }
  ]
}
```

Curated reference pricing, **independent of live inventory**. It exists to answer
"what does an H100 cost" when nothing is listed at that moment — for a pricing
page, a budget estimate, or a cost model for capacity you plan to need next month.

<Warning>
  A reference price is not an offer and cannot be rented. Never quote one to a user
  as the price they will pay: use [`/offers`](/api/offers) for what is actually
  rentable, and [`/rental-quotes`](/api/renting#quote-first) for what a specific
  rental will cost.
</Warning>

`updated_at` tells you how fresh the figure is. If it is weeks old and the family
has live offers, prefer the live price.

## How they fit together

```
/gpu-families    → "is there H100 capacity, from what price"   → pick a family
/offers          → the individual rentable offers               → pick an offer
/rental-quotes   → what THIS rental costs at THIS size          → show the user
/rentals         → start it
```

`/gpu-models` and `/regions` supply the vocabulary for the filters at step two;
`/prices` covers the case where step one comes back empty.
