OpenRouter
View SourceUnified API for hundreds of AI models from multiple providers with intelligent routing and fallback.
Configuration
OPENROUTER_API_KEY=sk-or-...
Provider Options
Passed via :provider_options keyword:
Model Routing
openrouter_models
- Type: List of strings
- Purpose: Specify fallback models for automatic routing
- Example:
provider_options: [ openrouter_models: [ "anthropic/claude-3.5-sonnet", "anthropic/claude-3-haiku", "openai/gpt-4o" ] ]
openrouter_route
- Type: String
- Purpose: Routing strategy (e.g.,
"fallback") - Example:
provider_options: [openrouter_route: "fallback"]
openrouter_provider
- Type: Map
- Purpose: Provider preferences for routing
- Keys:
order: List of preferred providersrequire_parameters: Boolean
- Example:
provider_options: [ openrouter_provider: %{ order: ["Together", "Fireworks"], require_parameters: true } ]
Prompt Transforms
openrouter_transforms
- Type: List of strings
- Purpose: Apply transforms to prompts
- Example:
provider_options: [openrouter_transforms: ["middle-out"]]
Sampling Parameters
openrouter_top_k
- Type: Integer
- Purpose: Top-k sampling
- Note: Not available for all models (e.g., OpenAI models)
- Example:
provider_options: [openrouter_top_k: 40]
openrouter_repetition_penalty
- Type: Float
- Purpose: Reduce repetitive text
- Example:
provider_options: [openrouter_repetition_penalty: 1.1]
openrouter_min_p
- Type: Float
- Purpose: Minimum probability threshold for sampling
- Example:
provider_options: [openrouter_min_p: 0.05]
openrouter_top_a
- Type: Float
- Purpose: Top-a sampling parameter
- Example:
provider_options: [openrouter_top_a: 0.1]
openrouter_top_logprobs
- Type: Integer
- Purpose: Number of top log probabilities to return
- Example:
provider_options: [openrouter_top_logprobs: 5]
App Attribution
app_referer
- Type: String
- Purpose: HTTP-Referer header for app identification
- Benefit: App discoverability in OpenRouter rankings
- Example:
provider_options: [app_referer: "https://myapp.com"]
app_title
- Type: String
- Purpose: X-Title header for app title
- Benefit: App ranking in OpenRouter
- Example:
provider_options: [app_title: "My Awesome App"]
Model Discovery
Browse available models:
- OpenRouter Models
mix req_llm.model_sync openrouter
Pricing
Dynamic pricing based on underlying provider. Check response usage:
{:ok, response} = ReqLLM.generate_text("openrouter:model", "Hello")
IO.puts("Cost: $#{response.usage.total_cost}")Key Benefits
- Single API for multiple providers
- Automatic fallback routing
- Cost optimization through model selection
- No vendor lock-in