Fetch and filter the OpenDunes model catalog programmatically.
The model catalog is publicly accessible — no authentication required. It lists every active model with its DA pricing, supported capabilities, and provider metadata.
const res = await fetch("https://opendunes.com/api/models");
const { data } = await res.json();
for (const model of data) {
console.log(model.slug, model.pricing.input_da_per_million, "DA / M tokens");
}GET /api/models returns a paginated array. Each object includes:
| Field | Description |
|---|---|
slug | provider/model identifier used in chat requests |
name | Display name |
provider | Provider object with name and slug |
context_length | Maximum context window in tokens |
pricing.input_da_per_million | Input price, DA per million tokens |
pricing.output_da_per_million | Output price, DA per million tokens |
capabilities | Array: streaming, vision, tools, json_mode |
free | true for zero-cost models |
| Param | Description |
|---|---|
q | Full-text search across name and slug |
provider | Filter by provider slug, e.g. anthropic |
capability | streaming · tools · vision · json_mode |
modality | Output modality |
input_modality | Input modality |
context_min | Minimum context length (tokens) |
sort | popularity · price · name · context · newest |
order | asc · desc |
// List vision-capable models sorted by context length
const res = await fetch(
"https://opendunes.com/api/models?capability=vision&sort=context&order=desc"
);const res = await fetch("https://opendunes.com/api/models/meta-llama/llama-4-maverick");
const model = await res.json();
console.log(model.context_length); // e.g. 128000Two utility endpoints help build filter UIs without scanning the full catalog:
GET /api/models/facets — returns aggregated filter options (providers, capabilities, modalities) with counts.GET /api/models/stats — returns catalog-wide statistics (total models, free count, newest additions).Explore and compare models visually at /models. The catalog page respects the same filters.