---
title: ComputePrices API
url: /docs/api
type: reference
version: v1
base_url: https://computeprices.com/api/v1
summary: Stable JSON API for cloud GPU and LLM inference pricing. Free keys are instant — 750 requests/day with a 7-day trend window. Pro extends history to 90 days and 3,000 requests/day.
related:
  - /llms.txt
  - /docs/api.md
  - /api/v1/openapi.json
  - /api/v1/providers
---

# ComputePrices API

Cloud GPU and LLM inference pricing, catalog, daily trends, and weekly movers — all under `/api/v1/*` as stable JSON.

## Quickstart

Every endpoint needs an API key. A free one takes about 30 seconds: sign in with any email at [computeprices.com/account/api-keys](https://computeprices.com/account/api-keys) (magic link, no password), create a key, then:

```bash
curl -H "Authorization: Bearer cp_live_..." \
  https://computeprices.com/api/v1/gpu-prices
```

Free keys get 750 requests/day, latest prices, the full catalog, weekly movers, and a 7-day window on trends and raw price history. Deeper history — 90 days of both — starts at [Pro](#pro).

Three things if you're running an agent or automated tool:

- Send a descriptive `User-Agent` header.
- Respect `Retry-After` on `429` responses.
- Read `meta.upgrade_hint` — it names the next-tier features, not just throughput.

A raw markdown copy of this page is at [`/docs/api.md`](/docs/api.md) — curl it directly. The full machine-readable schema lives at [`/api/v1/openapi.json`](/api/v1/openapi.json) (OpenAPI 3.1) — feed it to your client generator, agent framework, or MCP server. For broader site discovery, see [`llms.txt`](https://computeprices.com/llms.txt).

## Tiers

What you get at each tier:

| Capability | Free | Pro | Enterprise |
|---|---|---|---|
| Rate limit | 750 / day | 3,000 / day | custom |
| Active API keys | 1 | 3 | 3 |
| Latest GPU + LLM prices | ✓ | ✓ | ✓ |
| Filters (`provider`, `gpu`/`model`, `pricing_type`) | ✓ | ✓ | ✓ |
| GPU / LLM / provider catalog | ✓ | ✓ | ✓ |
| Weekly movers | ✓ | ✓ | ✓ |
| Trends window cap | 7 days | 90 days | 365 days |
| Price indices (weekly) | — | v1.1 | v1.1 |
| Provider comparison | — | v1.1 | v1.1 |
| Cheapest-per-model aggregates | — | v1.1 | v1.1 |
| Raw price history window (GPU) | 7 days | 90 days | 365 days |
| Raw price history (LLM) | — | v1.1 | v1.1 |
| Export formats (CSV, NDJSON) | — | v1.1 | v1.1 |
| LLM benchmarks (throughput, TTFT) | — | v1.2 | v1.2 |
| Provider data-health | — | — | v1.2 |
| Webhooks on price change | — | roadmap | roadmap |
| SLA | — | best-effort | 99.9% |

`v1.1` = coming in the next release. `roadmap` = planned, no date.

Free and Pro limits are daily sliding windows, keyed per API key — a once-a-day batch job can burst its whole quota in one run. The quotas are deliberately modest — pricing data refreshes hourly at most, so a legitimate integration needs at most a few dozen calls a day. Tiers differ on *data depth*, not throughput: latest prices are free, deeper history starts at Pro.

### Pro

Pro is a flat subscription — **$299/month or $2,499/year**. It raises the limit to 3,000 requests/day and unlocks deeper historical data:

- Daily price trends (`/trends/gpu/{slug}`, `/trends/llm/{slug}`) with a 90-day window (free: 7 days).
- Raw GPU price history (`/gpu-prices/history`) with a 90-day window (free: 7 days).
- The v1.1 endpoints as they ship: price indices, provider comparison, cheapest-per-model aggregates, LLM raw price history, CSV/NDJSON export.
- Up to 3 active API keys (free accounts get 1) — useful for per-environment keys or zero-downtime rotation.

Upgrade self-serve from the [API keys dashboard](https://computeprices.com/account/api-keys) — all keys on your account move to Pro immediately, and new keys you create inherit it.

Cancelling is self-serve from the same page: **Manage billing** opens the Stripe customer portal, where you can cancel, change your card, or download invoices. Cancelling stops the renewal and moves your keys back to the free tier when the paid period ends — the keys themselves keep working.

### Enterprise

Custom throughput, 365-day trend windows, provider data-health metrics (v1.2), and a 99.9% SLA. Not self-serve — email [api@computeprices.com](mailto:api@computeprices.com?subject=Enterprise%20API) to talk it through.

## Authentication

Every request needs a Bearer token:

```bash
curl -H "Authorization: Bearer cp_live_..." \
  https://computeprices.com/api/v1/gpu-prices
```

Requests without a key get a `401` with a pointer to the free signup. (The only exception is [`/api/v1/openapi.json`](https://computeprices.com/api/v1/openapi.json) — the schema itself is open so agents and client generators can discover the API.)

### Getting a free key

Sign in with any email at [computeprices.com/account/api-keys](https://computeprices.com/account/api-keys) — a magic link, no password. Create a key, copy it (it's shown only once), and you're done. Free accounts get 1 active key ([Pro](#pro) raises it to 3); revoke and re-create anytime. Upgrade to Pro from the same dashboard; for [Enterprise](#enterprise), email [api@computeprices.com](mailto:api@computeprices.com?subject=API%20tier%20upgrade).

## Endpoints

All endpoints return `{ data, meta }`. `meta` always includes `version`, `generated_at`, `tier`, and (when rate-limiting is in play) `rate_limit` and `upgrade_hint`.

The examples below omit the required `-H "Authorization: Bearer cp_live_..."` header for brevity.

### Pricing

#### `GET /api/v1/gpu-prices` · all tiers

Latest GPU prices across every tracked provider. One row per (provider, GPU, pricing_type, node size).

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `provider` | slug | Filter to a single provider (e.g. `lambda`, `runpod`). |
| `gpu` | slug | Filter to a single GPU model (e.g. `h100`, `a100-80gb`). |
| `pricing_type` | `on_demand` \| `spot` | Filter by pricing model. |

**Example:**

```bash
curl "https://computeprices.com/api/v1/gpu-prices?gpu=h100&pricing_type=on_demand"
```

Each row carries an `available` field — the provider's own stock signal at collection time. `true` means rentable, `false` means listed but out of capacity, and `null` means the provider publishes no stock signal at all (most catalog-priced providers). Filter on it before treating the cheapest row as the one to buy.

**Response:**

```json
{
  "data": [
    {
      "provider": "Lambda",
      "provider_slug": "lambda",
      "provider_url": "https://lambdalabs.com",
      "gpu": "H100 80GB",
      "gpu_slug": "h100",
      "vram_gb": 80,
      "architecture": "Hopper",
      "gpu_count": 1,
      "max_gpus_per_node": 8,
      "price_per_hour_usd": 2.49,
      "total_hourly_usd": 2.49,
      "pricing_type": "on_demand",
      "commitment_months": null,
      "available": true,
      "currency": "USD",
      "exchange_rate_to_usd": 1,
      "source_url": "https://lambdalabs.com/pricing",
      "last_updated": "2026-04-20T10:15:30Z"
    }
  ],
  "meta": {
    "count": 1,
    "generated_at": "2026-04-20T12:00:00Z",
    "version": "v1",
    "tier": "free",
    "rate_limit": { "limit": 750, "remaining": 693, "reset": 1714827060, "window_seconds": 86400 },
    "upgrade_hint": "Pro raises the limit to 3,000 requests/day and extends price-trend history from 7 to 90 days..."
  }
}
```

#### `GET /api/v1/llm-prices` · all tiers

Latest LLM inference prices. Per-1M-token input/output pricing, modalities, knowledge cutoff.

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `provider` | slug | Filter to a single provider. |
| `model` | slug | Filter to a single model (e.g. `claude-3-5-sonnet`, `gpt-4o`). |
| `pricing_type` | `standard` \| `batch` | Filter by pricing model. |

**Example:**

```bash
curl "https://computeprices.com/api/v1/llm-prices?model=claude-3-5-sonnet"
```

### Catalog

#### `GET /api/v1/gpus` · all tiers

List of every GPU model we track, with specs (VRAM, architecture, TFLOPs, memory bandwidth).

```bash
curl https://computeprices.com/api/v1/gpus
```

#### `GET /api/v1/gpus/{slug}` · all tiers

Single GPU model with full specs.

```bash
curl https://computeprices.com/api/v1/gpus/h100
```

#### `GET /api/v1/llm-models` · all tiers

List of tracked LLM models with creator, context window, modalities, and knowledge cutoff.

```bash
curl https://computeprices.com/api/v1/llm-models
```

#### `GET /api/v1/llm-models/{slug}` · all tiers

Single LLM model detail.

```bash
curl https://computeprices.com/api/v1/llm-models/claude-3-5-sonnet
```

#### `GET /api/v1/providers` · all tiers

List of tracked cloud and inference-API providers (archived providers excluded).

```bash
curl https://computeprices.com/api/v1/providers
```

#### `GET /api/v1/providers/{slug}` · all tiers

Single provider detail.

```bash
curl https://computeprices.com/api/v1/providers/lambda
```

### Trends & movers

Available on every tier; the trends window depth is what varies — free 7 days, [Pro](#pro) 90, Enterprise 365. `meta.tier_cap_days` in every trend response tells you your cap.

#### `GET /api/v1/trends/gpu/{slug}` · all tiers

Daily average price for a GPU across providers. `days` is capped by tier (free 7, pro 90, enterprise 365).

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `days` | integer | Number of days of history. Clamped to your tier cap. |

**Example:**

```bash
curl "https://computeprices.com/api/v1/trends/gpu/h100?days=90"
```

#### `GET /api/v1/trends/llm/{slug}` · all tiers

Daily average input/output token price for an LLM across providers.

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `days` | integer | Number of days of history. Clamped to your tier cap. |

**Example:**

```bash
curl "https://computeprices.com/api/v1/trends/llm/claude-3-5-sonnet?days=30"
```

#### `GET /api/v1/movers` · all tiers

Biggest week-over-week price changes (up or down) for a (provider, GPU/LLM) pair.

Each mover compares like against like: GPU movers are keyed on (provider, GPU, variant, region, `pricing_type`, GPU count, commitment term) and LLM movers on (provider, model, `pricing_type`), so a spot rate is never diffed against an on-demand one, nor a batch rate against standard. Every row carries the `pricing_type` it applies to — check it before presenting a change as a headline price move.

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `scope` | `gpu` \| `llm` | Required. Which price universe to query. |
| `limit` | integer | Max results (default 10, max 100). |

**Example:**

```bash
curl "https://computeprices.com/api/v1/movers?scope=gpu&limit=10"
```

### Raw price history

Raw price observations as collected — one row per collection run, not a daily aggregate — including the normalization audit trail: `original_price` (the value as published by the provider) and `normalization_method` (how it was converted to a per-GPU hourly USD price). The window depth is capped by tier: free 7 days, [Pro](#pro) 90, Enterprise 365.

#### `GET /api/v1/gpu-prices/history` · all tiers

Rows are ordered oldest first and paginated. When a page is full, `meta.next_cursor` carries an opaque cursor — pass it back as `cursor` to fetch the next page; it is `null` on the last page.

**Query parameters:**

| Name | Type | Description |
|---|---|---|
| `gpu` | string | Filter to a single GPU model slug (e.g. `h100`). |
| `provider` | string | Filter by provider slug (e.g. `lambda`). |
| `pricing_type` | `on_demand` \| `spot` \| `reserved` | Filter by pricing model. |
| `days` | integer | Number of days of history. Clamped to your tier cap. |
| `limit` | integer | Rows per page (default and max 1000). |
| `cursor` | string | `meta.next_cursor` from the previous page. |

**Example:**

```bash
curl "https://computeprices.com/api/v1/gpu-prices/history?gpu=h100&days=90"
```

### Pro — coming in v1.1

- `GET /api/v1/indexes` — weekly compute price index, 100-baseline, separate series per GPU / LLM.
- `GET /api/v1/compare` — side-by-side provider comparison with price differences and shared-GPU coverage.
- `GET /api/v1/cheapest` — cheapest provider per LLM model for input and output tokens.
- `GET /api/v1/llm-prices/history` — raw LLM price history, mirroring the GPU history endpoint.

### Enterprise — coming in v1.2

- `GET /api/v1/llm-benchmarks` — LLM throughput, time-to-first-token, p95 latency from Artificial Analysis.
- `GET /api/v1/providers/{slug}/health` — per-provider data-collection health, staleness, and price confidence metrics.

## Rate limits

Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (Unix epoch seconds). `429 Too Many Requests` additionally sets `Retry-After` in seconds.

Limits are keyed by API key. Free and Pro use daily sliding windows (750 and 3,000 requests/day), so a once-a-day batch job can burst its whole quota in one run and a request made now frees its slot 24 hours later.

A note on how we read usage: pricing data changes at most hourly, so no honest integration needs to sit at its ceiling around the clock. Sustained near-ceiling usage — especially from accounts we can't identify — is treated as an abuse signal and may be throttled or blocked rather than granted a higher limit. If you genuinely need more throughput, [talk to us](#enterprise).

## Errors

Standard HTTP status codes. Error bodies share a small envelope.

### `401 Unauthorized`

Missing, malformed, or invalid/revoked/expired key. A missing key gets a `signup_url` in the body and a `Link: <...>; rel="help"` header pointing at the free key signup:

```json
{
  "error": "Authentication required",
  "hint": "All /api/v1 endpoints require an API key. A free key takes 30 seconds and includes 750 requests/day: https://computeprices.com/account/api-keys",
  "signup_url": "https://computeprices.com/account/api-keys"
}
```

### `404 Not Found`

Unknown slug or resource.

### `429 Too Many Requests`

Over your tier's rate budget. Wait `Retry-After` seconds.

### `500 Internal Server Error`

Upstream failure. Try again; if persistent, ping us.

## Terms of use

Short version: use the API to build things, don't use it to become us or to relicense our dataset.

**Permitted** — using the API to power your own applications, dashboards, agents, internal tooling, and research, on any tier. Public display of the data requires attribution with a link to [computeprices.com](https://computeprices.com).

**Prohibited**, on every tier:

- **Reselling or redistributing the raw feed.** You may not resell, sublicense, or bulk-republish the dataset (or a substantial portion of it) as a data product, whether as an API, a file dump, or a mirror.
- **Building a direct competitor.** You may not use the API to build or operate a cloud GPU or LLM pricing comparison service that competes with ComputePrices.
- **Circumventing limits or tier gates.** No key sharing, multi-account key farming, IP rotation, or systematically archiving responses to reconstruct the historical dataset from a tier that doesn't include it.

Keys and IPs violating these terms may be throttled, suspended, or revoked without notice. Want to license the raw feed or do something these terms don't cover? Email [api@computeprices.com](mailto:api@computeprices.com?subject=Data%20licensing) — we're easy to talk to.

## Versioning & stability

All endpoints live under `/api/v1/*` and guarantee additive, non-breaking changes at this version. Breaking changes will ship under a new version prefix and the old version will stay available for at least 6 months.

Fields added to response bodies are non-breaking. Fields are never renamed or removed at the same version. `meta.version` is always `"v1"`.

## Roadmap

Near-term (explicit target):

- **v1.1:** price indices, provider comparison, cheapest-per-model, historical prices with date ranges, CSV & NDJSON export.
- **v1.2:** LLM benchmarks (throughput, TTFT, p95), per-provider scrape-health and data-confidence metrics.

No-date items:

- Webhooks on price change.
- Per-key scopes (restrict a key to specific endpoints).
- Public SLA page.

## Next steps

- Start with [`/api/v1/providers`](https://computeprices.com/api/v1/providers) to see what's tracked.
- Grab the OpenAPI 3.1 schema for client generation: [`/api/v1/openapi.json`](https://computeprices.com/api/v1/openapi.json).
- Grab raw markdown for your agent: [`/docs/api.md`](https://computeprices.com/docs/api.md) (`text/markdown`).
- Site-wide resource map: [`llms.txt`](https://computeprices.com/llms.txt).
- Get a free key (or upgrade to [Pro](#pro)): [computeprices.com/account/api-keys](https://computeprices.com/account/api-keys).
- Feedback or enterprise inquiries: [api@computeprices.com](mailto:api@computeprices.com).
