OpenRouter Models
Discover, search, and compare the 300+ AI models available on OpenRouter. Query live data including pricing, context lengths, per-provider latency and uptime, throughput, supported modalities, and supported parameters.
Prerequisites
The
environment variable is optional for most scripts. It is only required for
(provider performance data). Get a key at
https://openrouter.ai/keys
First-Time Setup
bash
cd <skill-path>/scripts && npm install
Decision Tree
Pick the right script based on what the user is asking:
| User wants to... | Script | Example |
|---|
| See all available models | | "What models does OpenRouter have?" |
| Find recently added models | list-models.ts --sort newest
| "What are the newest models?" |
| Find cheapest models | list-models.ts --sort price
| "What's the cheapest model?" |
| Find highest throughput models | list-models.ts --sort throughput
| "Which models have the most output capacity?" |
| Find models in a category | list-models.ts --category X
| "Best programming models?" |
| Search by name | | "Do they have Claude?" |
| Resolve an informal model name | | "Use the nano banana 2.0 model" |
| Find image-capable models | search-models.ts --modality image
| "Which models accept images?" |
| Compare specific models | | "Compare Claude vs GPT-4o" |
| Compare by throughput | compare-models.ts A B --sort throughput
| "Which has higher throughput, Claude or GPT-4o?" |
| Check provider performance | get-endpoints.ts "model-id"
| "Which provider is fastest for Claude?" |
| Find fastest provider | get-endpoints.ts "model-id" --sort throughput
| "Fastest provider for Claude Sonnet?" |
| Find lowest-latency provider | get-endpoints.ts "model-id" --sort latency
| "Lowest latency provider for GPT-4o?" |
| Check model availability | get-endpoints.ts "model-id"
| "Is Claude Sonnet 4 up right now?" |
Resolve Model
Resolve an informal or vague model name to an exact OpenRouter model ID using fuzzy matching:
bash
cd <skill-path>/scripts && npx tsx resolve-model.ts "claude sonnet"
cd <skill-path>/scripts && npx tsx resolve-model.ts "gpt 4o mini"
cd <skill-path>/scripts && npx tsx resolve-model.ts "llama 3.1"
Results include a
level and
:
| Confidence | Score | Action |
|---|
| (≥0.85) | Use the model directly — the match is unambiguous | |
| (≥0.55) | Confirm with the user before proceeding | |
| (≥0.30) | Suggest the matches and ask the user to clarify | |
Two-step workflow: First resolve the informal name with
, then feed the resolved
into other scripts (
,
, etc.).
List Models
bash
cd <skill-path>/scripts && npx tsx list-models.ts
Filter by Category
Server-side category filtering:
bash
cd <skill-path>/scripts && npx tsx list-models.ts --category programming
Categories:
,
,
,
,
,
,
,
,
,
,
,
Sort Results
bash
cd <skill-path>/scripts && npx tsx list-models.ts --sort newest # Recently added first
cd <skill-path>/scripts && npx tsx list-models.ts --sort price # Cheapest first
cd <skill-path>/scripts && npx tsx list-models.ts --sort context # Largest context first
cd <skill-path>/scripts && npx tsx list-models.ts --sort throughput # Most output tokens first
Models with upcoming
values trigger a stderr warning.
Search Models
bash
cd <skill-path>/scripts && npx tsx search-models.ts "claude"
cd <skill-path>/scripts && npx tsx search-models.ts --modality image
cd <skill-path>/scripts && npx tsx search-models.ts "gpt" --modality text
Compare Models
Compare two or more models side-by-side with pricing in per-million-tokens format. Uses exact ID matching —
matches only that model, not variants like
.
bash
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o"
cd <skill-path>/scripts && npx tsx compare-models.ts "anthropic/claude-sonnet-4" "openai/gpt-4o" "google/gemini-2.5-pro" --sort price
Sort options:
(cheapest first),
(largest first),
/
(most output tokens first)
Provider Performance (Endpoints)
Get per-provider latency, uptime, and throughput for any model:
bash
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4"
cd <skill-path>/scripts && npx tsx get-endpoints.ts "anthropic/claude-sonnet-4" --sort throughput
cd <skill-path>/scripts && npx tsx get-endpoints.ts "openai/gpt-4o" --sort latency
Sort options:
(fastest tokens/sec first),
(lowest p50 ms first),
(most reliable first),
(cheapest first)
Returns for each provider:
- Latency (p50/p75/p90/p99 in ms) — median to worst-case response times
- Throughput (p50/p75/p90/p99 tokens/sec) — generation speed
- Uptime — percentage over the last 30 minutes
- Status — or
- Provider-specific pricing — some providers offer discounts
- Supported parameters — varies by provider (some don't support all features)
API Response Shapes
returns
. For full field reference, see the
Models reference.
Query parameters (all optional):
| Parameter | Example | Effect |
|---|
| | Server-side category filter |
| ?supported_parameters=tools
| Only models supporting this parameter |
Tips for working with the response:
- To check if a model supports a feature, use
model.supported_parameters
(e.g. ), or filter server-side with ?supported_parameters=tools
.
- To check modalities, use
model.architecture.input_modalities
/ model.architecture.output_modalities
.
- Pricing values are per-token in USD as strings — multiply by 1,000,000 for per-million-token pricing.
- and are date strings or null.
- points to the per-provider endpoints API for that model.
GET /api/v1/models/{author}/{slug}/endpoints
returns { data: { id, name, endpoints: Endpoint[] } }
.
- Endpoint : = operational, non-zero = degraded.
- Endpoint / : percentile objects with , , , .
Script Output Formats
The scripts below reformat the raw API data. When calling the API directly (e.g. via
), refer to the
OpenAPI spec for field names.
list-models.ts / search-models.ts
A subset of the raw API fields — the scripts run
which drops
,
,
,
, and
. If you need those fields, call the API directly.
compare-models.ts
json
{
"id": "anthropic/claude-sonnet-4",
"name": "Anthropic: Claude Sonnet 4",
"context_length": 1000000,
"max_completion_tokens": 64000,
"per_request_limits": null,
"pricing_per_million_tokens": {
"prompt": "$3.00",
"completion": "$15.00",
"cached_input": "$0.30"
},
"modalities": { "input": ["text", "image"], "output": ["text"] },
"supported_parameters": ["max_tokens", "temperature", "..."],
"is_moderated": false
}
get-endpoints.ts
json
{
"model_id": "anthropic/claude-sonnet-4",
"model_name": "Anthropic: Claude Sonnet 4",
"total_providers": 5,
"endpoints": [
{
"provider": "Anthropic",
"tag": "anthropic",
"status": "operational",
"uptime_30m": "100.00%",
"latency_30m_ms": { "p50": 800, "p75": 1200, "p90": 2000, "p99": 5000 },
"throughput_30m_tokens_per_sec": { "p50": 45, "p75": 55, "p90": 65, "p99": 90 },
"context_length": 1000000,
"max_completion_tokens": 64000,
"pricing_per_million_tokens": { "prompt": "$3.00", "completion": "$15.00", "cached_input": "$0.30" },
"supports_implicit_caching": true,
"supported_parameters": ["max_tokens", "temperature", "tools", "..."]
}
]
}
Key Fields
| Field | Meaning |
|---|
| / | Cost per token in USD. Multiply by 1,000,000 for per-million-token pricing |
| Max total tokens (input + output) |
top_provider.max_completion_tokens
| Max output tokens from the best provider |
top_provider.is_moderated
| Whether content moderation is applied |
| Per-request token limits (when non-null) |
| API parameters the model accepts (e.g., , , , ) |
| Unix timestamp — use for sorting by recency |
| Non-null means the model is being deprecated |
| Median response latency over last 30 min |
throughput_30m_tokens_per_sec.p50
| Median generation speed over last 30 min |
| Provider availability percentage over last 30 min |
Presenting Results
- When a user mentions a model by informal name, use first, then feed the resolved into other scripts
- Convert pricing to per-million-tokens format for readability
- When comparing, use a markdown table with models as columns
- For provider endpoints, highlight the fastest (lowest p50 latency) and most reliable (highest uptime) providers
- Call out notable supported parameters: , , ,
- Note cache pricing when available — it can cut input costs 90%+
- Flag models with as deprecated
- When a model has multiple providers at different prices, mention the cheapest option