Skip to content
Automation
Skill

/openrouter

OpenRouter API - Unified access to 400+ AI models through one API

From plugin
benai-skills
61152 skills17 agents1 hook4 MCP
Install
$ npx -y skills add naveedharri/benai-skills --skill openrouter --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/openrouter

Context preview

The summary Claude sees to decide when to auto-load this skill.

OpenRouter API - Unified access to 400+ AI models through one API

SKILL.md

openrouter.SKILL.md
name: openrouter
description: OpenRouter API - Unified access to 400+ AI models through one API

OpenRouter Skill

Comprehensive assistance with OpenRouter API development, providing unified access to hundreds of AI models through a single endpoint with intelligent routing, automatic fallbacks, and standardized interfaces.

When to Use This Skill

This skill should be triggered when:

  • Making API calls to multiple AI model providers through a unified interface
  • Implementing model fallback strategies or auto-routing
  • Working with OpenAI-compatible SDKs but targeting multiple providers
  • Configuring advanced sampling parameters (temperature, top_p, penalties)
  • Setting up streaming responses or structured JSON outputs
  • Comparing costs across different AI models
  • Building applications that need automatic provider failover
  • Implementing function/tool calling across different models
  • Questions about OpenRouter-specific features (routing, fallbacks, zero completion insurance)

Quick Reference

Basic Chat Completion (Python)

from openai import OpenAI

client = OpenAI(
  base_url="https://openrouter.ai/api/v1",
  api_key="<OPENROUTER_API_KEY>",
)

completion = client.chat.completions.create(
  model="openai/gpt-4o",
  messages=[{"role": "user", "content": "What is the meaning of life?"}]
)
print(completion.choices[0].message.content)

Basic Chat Completion (JavaScript/TypeScript)

import OpenAI from 'openai';

const openai = new OpenAI({
  baseURL: 'https://openrouter.ai/api/v1',
  apiKey: '<OPENROUTER_API_KEY>',
});

const completion = await openai.chat.completions.create({
  model: 'openai/gpt-4o',
  messages: [{"role": 'user', "content": 'What is the meaning of life?'}],
});
console.log(completion.choices[0].message);

cURL Request

curl https://openrouter.ai/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -d '{
    "model": "openai/gpt-4o",
    "messages": [{"role": "user", "content": "What is the meaning of life?"}]
  }'

Model Fallback Configuration (Python)

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    extra_body={
        "models": ["anthropic/claude-3.5-sonnet", "gryphe/mythomax-l2-13b"],
    },
    messages=[{"role": "user", "content": "Your prompt here"}]
)

Model Fallback Configuration (TypeScript)

const completion = await client.chat.completions.create({
    model: 'openai/gpt-4o',
    models: ['anthropic/claude-3.5-sonnet', 'gryphe/mythomax-l2-13b'],
    messages: [{ role: 'user', content: 'Your prompt here' }],
});

Auto Router (Dynamic Model Selection)

completion = client.chat.completions.create(
    model="openrouter/auto",  # Automatically selects best model for the prompt
    messages=[{"role": "user", "content": "Your prompt here"}]
)

Advanced Parameters Example

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Write a creative story"}],
    temperature=0.8,           # Higher for creativity (0.0-2.0)
    max_tokens=500,            # Limit response length
    top_p=0.9,                 # Nucleus sampling (0.0-1.0)
    frequency_penalty=0.5,     # Reduce repetition (-2.0-2.0)
    presence_penalty=0.3       # Encourage topic diversity (-2.0-2.0)
)

Streaming Response

stream = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end='')

JSON Mode (Structured Output)

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{
        "role": "user",
        "content": "Extract person's name, age, and city from: John is 30 and lives in NYC"
    }],
    response_format={"type": "json_object"}
)

Deterministic Output with Seed

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Generate a random number"}],
    seed=42,            # Same seed = same output (when supported)
    temperature=0.0     # Deterministic sampling
)

Key Concepts

Model Routing

OpenRouter provides intelligent routing capabilities:

  • **Auto Router** (`openrouter/auto`): Automatically selects the best model based on your prompt using NotDiamond
  • **Fallback Models**: Specify multiple models that automatically retry if primary fails
  • **Provider Routing**: Automatically routes across providers for reliability

Authentication

  • Uses Bearer token authentication with API keys
  • API keys can be managed programmatically
  • Compatible with OpenAI SDK authentication patterns

Model Naming Convention

Models use the format `provider/model-name`:

  • `openai/gpt-4o` - OpenAI's GPT-4 Optimized
  • `anthropic/claude-3.5-sonnet` - Anthropic's Claude 3.5 Sonnet
  • `google/gemini-2.0-flash-exp:free` - Google's free Gemini model
  • `openrouter/auto` - Auto-routing system

Sampling Parameters

**Temperature** (0.0-2.0, default: 1.0)

  • Lower = more predictable, focused responses
  • Higher = more creative, diverse responses
  • Use low (0.0-0.3) for factual tasks, high (0.8-1.5) for creative work

**Top P** (0.0-1.0, default: 1.0)

  • Limits choices to percentage of likely tokens
  • Dynamic filtering of improbable options
  • Balance between consistency and variety

**Frequency/Presence Penalties** (-2.0-2.0, default: 0.0)

  • Frequency: Discourages repeating tokens proportional to use
  • Presence: Simpler penalty not scaled by count
  • Positive values reduce repetition, negative encourage reuse

**Max Tokens** (integer)

  • Sets maximum response length
  • Cannot exceed context length minus prompt length
  • Use to control costs and enforce concise replies

Response Formats

  • **Standard
Read more
Ships withbenai-skills

Expert automation skills for Claude Code, organized by department.

Get the whole plugin

Other skills on benai-skills.