OpenRouter API: List models
Lists public OpenRouter models with per-million-token prices, context size, input types, release date and model page. Results can be sorted by newest, input price or popularity.
Unofficial. Not affiliated with or endorsed by OpenRouter.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Sort optional
sort Order of models, such as cheapest for lowest input token price first.
cheapest
One of
newest,cheapest,most_used. Defaultnewest.- Query optional
query Provider name or model keyword, such as Anthropic or vision. Leave blank for all models.
Anthropic
Default
.- Max Results optional
max_results Maximum models to return, such as 50.
5
Whole number from 1 to 500. Default
50.
Input as JSON
{ "sort": "cheapest", "query": "Anthropic", "max_results": 5}Output
{ "models": [ { "provider": "Anthropic", "model_name": "Anthropic: Claude Haiku 5.5 (batch)", "model_slug": "anthropic/claude-haiku-5.5:batch" , "release_date": "2026-10-07", "model_page_link": "https://openrouter.ai/models/anthropic/claude-haiku-5.5:batch" , "supported_inputs": [ "text", "image", "file" ], "context_length_tokens": 1000000, "input_price_usd_per_million_tokens": 0.05, "output_price_usd_per_million_tokens": 0.25 }, { "provider": "Anthropic", "model_name": "Anthropic: Claude Haiku 5.5", "model_slug": "anthropic/claude-haiku-5.5" , "release_date": "2026-10-07", "model_page_link": "https://openrouter.ai/models/anthropic/claude-haiku-5.5" , "supported_inputs": [ "text", "image", "file" ], "context_length_tokens": 1000000, "input_price_usd_per_million_tokens": 0.1, "output_price_usd_per_million_tokens": 0.5 }, { "provider": "Anthropic", "model_name": "Anthropic: Claude Haiku Latest", "model_slug": "~anthropic/claude-haiku-latest" , "release_date": "2026-04-27", "model_page_link": "https://openrouter.ai/models/~anthropic/claude-haiku-latest" , "supported_inputs": [ "text", "image", "file" ], "context_length_tokens": 1000000, "input_price_usd_per_million_tokens": 0.1, "output_price_usd_per_million_tokens": 0.5 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"openrouter.ai/list_models","input":{"sort":"cheapest","query":"Anthropic","max_results":5}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "openrouter.ai/list_models" , "input": { "sort": "cheapest", "query": "Anthropic", "max_results": 5 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "openrouter.ai/list_models" , "input": { "sort": "cheapest", "query": "Anthropic", "max_results": 5 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run openrouter.ai/list_models# with {"sort":"cheapest","query":"Anthropic","max_results":5}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "sort": { "enum": [ "newest", "cheapest", "most_used" ], "type": "string", "default": "newest", "description": "Order of models, such as cheapest for lowest input token price first." }, "query": { "type": "string", "default": "", "description": "Provider name or model keyword, such as Anthropic or vision. Leave blank for all models." }, "max_results": { "type": "integer", "default": 50, "maximum": 500, "minimum": 1, "description": "Maximum models to return, such as 50." } }}Output schema
{ "type": "object", "required": [ "models" ], "properties": { "models": { "type": "array", "items": { "type": "object", "required": [ "model_name", "provider", "input_price_usd_per_million_tokens", "output_price_usd_per_million_tokens", "context_length_tokens", "supported_inputs", "release_date", "model_page_link", "model_slug" ], "properties": { "provider": { "type": "string" }, "model_name": { "type": "string" }, "model_slug": { "type": "string" }, "release_date": { "type": [ "string", "null" ] }, "model_page_link": { "type": "string" }, "supported_inputs": { "type": "array", "items": { "enum": [ "text", "image", "audio", "file" ], "type": "string" } }, "context_length_tokens": { "type": [ "integer", "null" ] }, "input_price_usd_per_million_tokens": { "type": [ "number", "null" ] }, "output_price_usd_per_million_tokens": { "type": [ "number", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
openrouter.ai/list_models- Returns
- model name, provider, input/output price per million tokens, context length, supported inputs, release date, model page link, slug
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method openrouter.ai/list_models with the inputs above.
Ask your agent
- Show me the cheapest vision-capable models with their per-million input prices and context lengths
- Which models from Anthropic are available right now, sorted by release date?
- List the 20 most used LLMs with their output token pricing
- I need a table of recent open-weight models including slugs and links to their model pages on OpenRouter
- Find models that accept image input and have a context window over 100k tokens
See more
All OpenRouter methodsLooks up an OpenRouter model by name, slug or model link and returns its prices, limits, supported inputs, release date and hosting providers.
openrouter.ai/get_modelFinds public Hugging Face models by search words, with an optional task and sort order. License is null when the model does not publish one.
huggingface.co/search_modelsLists Hugging Face models in trending order this week, optionally filtered to one task. Downloads cover the last 30 days.
huggingface.co/list_trending_modelsFinds Rust crates on crates.io by keywords, sorted by relevance, total downloads, recent downloads, or newest creation.
crates.io/search_cratesLists Rotten Tomatoes movies in theaters, coming soon, or at home, by genre and site sort order, with scores, release dates, age ratings, posters and links.
rottentomatoes.com/list_moviesFinds public Hugging Face datasets by name or topic, ordered by downloads, likes, trending score or last update.
huggingface.co/search_datasetsLists public Medium articles for a topic, newest first or popular this week, with author, publication, reading time, claps and membership status.
medium.com/list_topic_articlesSearches AliExpress listings by product words, shipping destination, price range and sort order. Unpriced promotional cards are omitted; free shipping is marked only when the listing explicitly says so.
aliexpress.com/search_products