API

# Model Price Track API

Every price on the board as JSON or CSV, free and without a key: each model's median for its standard job, and each provider's price with who published it, the URL it was read from and the day it was checked. Our tables, medians, rankings and wording are CC BY 4.0: use them for anything, commercial included, with the attribution "Model Price Track (modelpricetrack.com)" and a link. Third-party prices are listed as published by each provider, with a link, and are not relicensed. Arena quality scores stay CC BY 4.0 with Arena's attribution.

Prices as of 17 Oct 2026. Every price links to its source.

[OpenAPI 3.1 document](https://modelpricetrack.com/api/openapi.json) · [Route index (JSON)](https://modelpricetrack.com/api/v2) · [All models as CSV](https://modelpricetrack.com/api/v2/models.csv) · [All prices as text](https://modelpricetrack.com/llms-full.txt)

## Access

No key, no sign-up. Every route is a GET that answers JSON (CSV for models.csv), with CORS open to every origin. Responses carry Cache-Control: max-age=60; the data changes once a day, after the providers are read, so poll at most every few minutes. For a bulk copy, use the CSV or llms-full.txt instead of walking every model.

## Dates and sources

Every response has asOf, the day its prices are for. Every provider price has who published it (source.name), the URL it was read from (source.url) and the day it was last checked (source.checkedAt, also verifiedAt). Quality scores come from the Arena Hugging Face dataset (CC BY 4.0), never from arena.ai, and carry their own attribution, URL, licence and publish date.

## Versions

/api/v2 is the public API: fields may be added, none are removed or renamed without a new version. /v1/prices is the frozen contract MakeJam reads (schemaVersion 1). /api/v1 is legacy, kept for the old board, and not documented here.

## Standard jobs

Every price is for one standard job per category, in US dollars: video is a 720p, 5-second clip (also given per second), images are one 1K image, speech is 1,000 characters, sound effects are 10 seconds, music is a 30-second track, 3D is one mesh. [The methodology](https://modelpricetrack.com/methodology) explains the median and which prices count.

## GET /api/v2

This list of routes, with links to the docs and the OpenAPI document.

Example: [https://modelpricetrack.com/api/v2](https://modelpricetrack.com/api/v2)

```
curl 'https://modelpricetrack.com/api/v2'
```

## GET /api/v2/models

Every model with its median price for the standard job, counted providers and cheapest provider.

Example: [https://modelpricetrack.com/api/v2/models?category=video&sort=price](https://modelpricetrack.com/api/v2/models?category=video&sort=price)

```
curl 'https://modelpricetrack.com/api/v2/models?category=video&sort=price'
```

| Parameter | In | Description |
| --- | --- | --- |
| `category` | query | One category, or \`all\`. One of: video, image, audio, music, 3d, upscale, all. |
| `q` | query | Text search on model names. |
| `provider` | query | Comma-separated provider slugs: models sold by any of them. |
| `maker` | query | Comma-separated maker slugs. |
| `sort` | query | Ranking; \`price\` is the median for the standard job, \`quality\` the Arena rating, \`value\` the price-quality frontier then Elo gap. One of: price, cheapest, providers, name, maker, d1, d7, d30, quality, value. |
| `retired` | query | \`1\` includes retired models. One of: 1. |
| `resolution` | query | Minimum maximum resolution rank (720p is 2, 1080p or 1K is 3, 4K is 5). |
| `duration` | query | Minimum maximum clip length, in seconds. |
| `audio` | query | \`1\` keeps models with native audio. One of: 1. |
| `route` | query | Comma-separated input routes, like \`text-to-video\`. |
| `channel` | query | Sold by: comma-separated channels; the median counts only these. \`official\` is the maker's own API. One of: official, platform, reseller. |

## GET /api/v2/models.csv

The same list as CSV, one row per model, for spreadsheets.

Example: [https://modelpricetrack.com/api/v2/models.csv?category=image](https://modelpricetrack.com/api/v2/models.csv?category=image)

```
curl 'https://modelpricetrack.com/api/v2/models.csv?category=image'
```

| Parameter | In | Description |
| --- | --- | --- |
| `category` | query | One category, or \`all\`. One of: video, image, audio, music, 3d, upscale, all. |
| `q` | query | Text search on model names. |
| `provider` | query | Comma-separated provider slugs: models sold by any of them. |
| `maker` | query | Comma-separated maker slugs. |
| `sort` | query | Ranking; \`price\` is the median for the standard job, \`quality\` the Arena rating, \`value\` the price-quality frontier then Elo gap. One of: price, cheapest, providers, name, maker, d1, d7, d30, quality, value. |
| `retired` | query | \`1\` includes retired models. One of: 1. |
| `resolution` | query | Minimum maximum resolution rank (720p is 2, 1080p or 1K is 3, 4K is 5). |
| `duration` | query | Minimum maximum clip length, in seconds. |
| `audio` | query | \`1\` keeps models with native audio. One of: 1. |
| `route` | query | Comma-separated input routes, like \`text-to-video\`. |
| `channel` | query | Sold by: comma-separated channels; the median counts only these. \`official\` is the maker's own API. One of: official, platform, reseller. |

## GET /api/v2/models/{slug}

One model: every variant's median and every provider's price, with its source and the day it was checked.

Example: [https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5](https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5)

```
curl 'https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5'
```

| Parameter | In | Description |
| --- | --- | --- |
| `slug` | path | Model slug, as in its page URL; it may contain slashes and dots (\`bytedance/seedance-2.5\`). |
| `variant` | query | Variant slug; the standard job when omitted. |
| `duration` | query | Clip length in seconds, for models priced by duration. |
| `megapixels` | query | Image size in megapixels, for models priced by size. |
| `channel` | query | Sold by: comma-separated channels; the median counts only these. \`official\` is the maker's own API. One of: official, platform, reseller. |

## GET /api/v2/models/{slug}/history

Daily median and per-provider prices for one variant.

Example: [https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5/history?range=30d](https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5/history?range=30d)

```
curl 'https://modelpricetrack.com/api/v2/models/bytedance/seedance-2.5/history?range=30d'
```

| Parameter | In | Description |
| --- | --- | --- |
| `slug` | path | Model slug, as in its page URL; it may contain slashes and dots (\`bytedance/seedance-2.5\`). |
| `variant` | query | Variant slug; the standard job when omitted. |
| `duration` | query | Clip length in seconds, for models priced by duration. |
| `range` | query | How far back. One of: 7d, 30d, 90d, 1y, all. |

## GET /api/v2/providers

Every provider with its model count, counted prices and whether its price API answered.

Example: [https://modelpricetrack.com/api/v2/providers](https://modelpricetrack.com/api/v2/providers)

```
curl 'https://modelpricetrack.com/api/v2/providers'
```

## GET /api/v2/providers/{provider}

One provider: its prices by category and every model it sells.

Example: [https://modelpricetrack.com/api/v2/providers/fal](https://modelpricetrack.com/api/v2/providers/fal)

```
curl 'https://modelpricetrack.com/api/v2/providers/fal'
```

| Parameter | In | Description |
| --- | --- | --- |
| `provider` | path | Provider slug. |

## GET /api/v2/providers/{provider}/models/{slug}

One model at one provider: its price for every variant against the median, with sources and history.

Example: [https://modelpricetrack.com/api/v2/providers/krea/models/bytedance/seedance-2.5](https://modelpricetrack.com/api/v2/providers/krea/models/bytedance/seedance-2.5)

```
curl 'https://modelpricetrack.com/api/v2/providers/krea/models/bytedance/seedance-2.5'
```

| Parameter | In | Description |
| --- | --- | --- |
| `provider` | path | Provider slug. |
| `slug` | path | Model slug, as in its page URL; it may contain slashes and dots (\`bytedance/seedance-2.5\`). |

## GET /api/v2/makers

Every model maker with its families and priced model count.

Example: [https://modelpricetrack.com/api/v2/makers](https://modelpricetrack.com/api/v2/makers)

```
curl 'https://modelpricetrack.com/api/v2/makers'
```

## GET /api/v2/makers/{maker}

One maker: its documentation, prices by category and models.

Example: [https://modelpricetrack.com/api/v2/makers/bytedance](https://modelpricetrack.com/api/v2/makers/bytedance)

```
curl 'https://modelpricetrack.com/api/v2/makers/bytedance'
```

| Parameter | In | Description |
| --- | --- | --- |
| `maker` | path | Maker slug. |

## GET /api/v2/quality/{arena}

Arena overall ratings matched to our models, from the Hugging Face dataset (CC BY 4.0). Never scraped from arena.ai.

Example: [https://modelpricetrack.com/api/v2/quality/text\_to\_video](https://modelpricetrack.com/api/v2/quality/text_to_video)

```
curl 'https://modelpricetrack.com/api/v2/quality/text_to_video'
```

| Parameter | In | Description |
| --- | --- | --- |
| `arena` | path | Leaderboard config. One of: text\_to\_video, text\_to\_image. |

## GET /api/v2/coverage

How many models are listed and priced, per day.

Example: [https://modelpricetrack.com/api/v2/coverage?range=30d](https://modelpricetrack.com/api/v2/coverage?range=30d)

```
curl 'https://modelpricetrack.com/api/v2/coverage?range=30d'
```

| Parameter | In | Description |
| --- | --- | --- |
| `range` | query | Days back, like \`30d\`. |
| `scope` | query | \`all\`, \`category:{category}\` or \`provider:{provider}\`. |

## GET /api/v2/pipeline

When each provider was last read and what the last pipeline runs did.

Example: [https://modelpricetrack.com/api/v2/pipeline](https://modelpricetrack.com/api/v2/pipeline)

```
curl 'https://modelpricetrack.com/api/v2/pipeline'
```

## CSV columns

| Column | Meaning |
| --- | --- |
| `slug` | Model slug |
| `name` | Model name |
| `maker` | Maker name |
| `category` | video, image, audio, music, 3d or upscale |
| `standard_job` | The job every price in the row is for |
| `unit` | How the price is quoted on the board |
| `median_usd` | Median US dollars for one standard job, over counted providers |
| `min_usd` | Cheapest counted provider, per job |
| `max_usd` | Most expensive counted provider, per job |
| `median_usd_per_second` | The median per second of output, for video and sound |
| `counted_providers` | Providers whose price counts |
| `total_providers` | Providers that sell the model |
| `approximate` | true when a counted price is approximate or a starting price |
| `cheapest_providers` | Provider slugs at the minimum, separated by spaces |
| `url` | The model page, with every provider price and its source |
| `as_of` | The day the prices are for |
| `quality_rating` | Arena overall Elo rating, or empty when unmatched |
| `quality_rank` | Arena overall rank |
| `quality_published_at` | Arena leaderboard publish date |
| `quality_url` | Hugging Face dataset the rating was read from |
| `quality_license` | Licence of the rating (CC-BY-4.0) |
| `quality_attribution` | Required attribution line |

## License

[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) covers our own work. Our tables, medians, rankings and wording are CC BY 4.0: use them for anything, commercial included, with the attribution "Model Price Track (modelpricetrack.com)" and a link. Third-party prices are listed as published by each provider, with a link, and are not relicensed. Arena quality scores stay CC BY 4.0 with Arena's attribution. Every /api/v2 response carries `license`, `attribution` and `licenseNote`.

## How to cite

"Model Price Track, {page title}, {URL}, retrieved {date}". Prices change daily; quote the date.

For example: "Model Price Track, Seedance 2.5 API pricing, https://modelpricetrack.com/models/bytedance/seedance-2.5, retrieved 17 Oct 2026".

[Models](https://modelpricetrack.com/) · [Providers](https://modelpricetrack.com/providers) · [Makers](https://modelpricetrack.com/makers) · [Compare](https://modelpricetrack.com/compare) · [Methodology](https://modelpricetrack.com/methodology)

[A DIUNE project](https://diune.com/)

---

Page: [AI model price API: JSON, CSV and OpenAPI, no key](https://modelpricetrack.com/api) · Prices as of 17 Oct 2026

Data: CC BY 4.0 for our own work, attribution "Model Price Track (modelpricetrack.com)". CC BY 4.0 covers Model Price Track's own work (normalisation, medians, rankings, editorial text). Third-party prices are listed as published by each provider, with a link, and are not relicensed. Arena quality scores stay CC BY 4.0 with Arena's attribution. Cite as "Model Price Track, AI model price API: JSON, CSV and OpenAPI, no key, https://modelpricetrack.com/api, retrieved 17 Oct 2026".

