Claude-code-plugins-plus openrouter-model-catalog
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/openrouter-pack/skills/openrouter-model-catalog" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-openrouter-model-catalog && rm -rf "$T"
manifest:
plugins/saas-packs/openrouter-pack/skills/openrouter-model-catalog/SKILL.mdsource content
OpenRouter Model Catalog
Overview
Query the
GET /api/v1/models endpoint to browse 400+ models, filter by capabilities, compare pricing, and check provider endpoints. No API key required for the models endpoint.
List All Models
# Full catalog (no auth required) curl -s https://openrouter.ai/api/v1/models | jq '.data | length' # → 400+ # Filter to text output models only curl -s "https://openrouter.ai/api/v1/models?supported_parameters=tools" | jq '.data | length'
Model Object Shape
{ "id": "anthropic/claude-3.5-sonnet", "name": "Claude 3.5 Sonnet", "description": "Anthropic's most intelligent model...", "context_length": 200000, "pricing": { "prompt": "0.000003", "completion": "0.000015", "image": "0.0048", "request": "0" }, "top_provider": { "context_length": 200000, "max_completion_tokens": 8192, "is_moderated": false }, "per_request_limits": null, "architecture": { "modality": "text+image->text", "tokenizer": "Claude", "instruct_type": null } }
Key fields:
/pricing.prompt
-- cost per token (not per million; multiply by 1M for readable rates)pricing.completion
-- max input tokenscontext_length
-- max output tokenstop_provider.max_completion_tokens
--architecture.modality
,text->text
, etc.text+image->text
Python: Query and Filter
import requests models = requests.get("https://openrouter.ai/api/v1/models").json()["data"] # Find all free models free_models = [m for m in models if m["pricing"]["prompt"] == "0"] print(f"Free models: {len(free_models)}") # Models with tool calling support # (query with supported_parameters) tool_models = requests.get( "https://openrouter.ai/api/v1/models?supported_parameters=tools" ).json()["data"] print(f"Tool-calling models: {len(tool_models)}") # Sort by prompt price (cheapest first, excluding free) paid = [m for m in models if float(m["pricing"]["prompt"]) > 0] paid.sort(key=lambda m: float(m["pricing"]["prompt"])) for m in paid[:10]: cost_per_m = float(m["pricing"]["prompt"]) * 1_000_000 print(f" ${cost_per_m:.2f}/M tokens — {m['id']} ({m['context_length']//1000}K ctx)") # Filter by context length (128K+) large_ctx = [m for m in models if m["context_length"] >= 128_000] print(f"128K+ context models: {len(large_ctx)}")
List Providers for a Model
# See all providers and their pricing for a specific model curl -s "https://openrouter.ai/api/v1/models/anthropic/claude-3.5-sonnet/endpoints" | jq '.data[] | { provider: .provider_name, price_prompt: .pricing.prompt, price_completion: .pricing.completion, context_length: .context_length, quantization: .quantization }'
Model Variants
Append a suffix to any model ID for variant behavior:
| Suffix | Effect | Example |
|---|---|---|
| Free tier (where available) | |
| Sort providers by throughput (faster) | |
| Sort providers by price (cheapest) | |
| Extended context window | |
| Enable extended reasoning | |
Special Routers
| Model ID | Behavior |
|---|---|
| Auto-selects best model for your prompt (powered by NotDiamond) |
| Routes to free models only |
# Let OpenRouter pick the best model response = client.chat.completions.create( model="openrouter/auto", messages=[{"role": "user", "content": "Write a SQL query to find duplicate emails"}], max_tokens=200, ) print(f"Auto-selected: {response.model}") # Shows which model was chosen
Popular Model Quick Reference
| Model ID | Context | Cost (prompt/completion per 1M) |
|---|---|---|
| 8K | Free |
| 128K | ~$0.06 / $0.06 |
| 200K | $0.25 / $1.25 |
| 128K | $0.15 / $0.60 |
| 200K | $3.00 / $15.00 |
| 128K | $2.50 / $10.00 |
| 200K | $15.00 / $60.00 |
Prices change frequently. Always verify via
./api/v1/models
Error Handling
| Issue | Cause | Fix |
|---|---|---|
| Model ID not found at request time | Model renamed, removed, or typo | Re-query ; use exact ID from catalog |
| Stale pricing | Cached catalog data outdated | Refresh catalog hourly; pricing updates dynamically |
| Empty results with filter | No models match the filter criteria | Broaden the filter; check parameter spelling |
Enterprise Considerations
- Cache the model catalog with 1-hour TTL (model availability changes infrequently)
- Build a model allowlist for your organization to restrict which models teams can use
- Monitor
for deprecation notices and new model additions/api/v1/models - Use
query filter to ensure models support features you need (tools, JSON mode, etc.)supported_parameters - Compare providers via the endpoints API to find the cheapest or fastest provider for each model