Available Models


SolRouter routes requests to hundreds of models across all major AI providers. This page explains how models are identified, how to browse and filter them, and covers pricing and modality details.


Browsing the model catalogue

The full, up-to-date model list is available at solrouter.io/models. The catalogue page lets you:

  • Search by model name, provider, or capability
  • Filter by modality (text, image, audio, video)
  • Filter by cost (free vs paid)
  • Sort by context length, input price, or output price
  • View deprecation dates for models that are being retired

Each model card shows its unique ID, context window size, pricing per million tokens, supported input/output modalities, and whether a free variant is available.


Model ID format

Every model in SolRouter follows a consistent provider/model-name identifier format. This is the value you pass in the model field of every API request.

provider/model-name

Examples:

ProviderModel ID
OpenAIopenai/gpt-4o
OpenAIopenai/gpt-4.1
OpenAIopenai/o3
Anthropicanthropic/claude-opus-4
Anthropicanthropic/claude-sonnet-4
Googlegoogle/gemini-2.5-pro
Googlegoogle/gemini-2.5-flash
Metameta-llama/llama-4-maverick
Metameta-llama/llama-3.3-70b-instruct
Mistralmistralai/mistral-large
Mistralmistralai/codestral
DeepSeekdeepseek/deepseek-r1
DeepSeekdeepseek/deepseek-chat-v3-0324
xAIx-ai/grok-3
xAIx-ai/grok-3-mini
Coherecohere/command-r-plus
Perplexityperplexity/sonar-pro

Some models have special suffix modifiers that select a specific variant:

  • :free — the free-tier variant of a model (e.g. arcee-ai/trinity-mini:free)
  • :thinking — the extended reasoning / chain-of-thought variant (e.g. anthropic/claude-3.7-sonnet:thinking)

Specifying a model in requests

Pass the model ID in the model field of your request body. The format is identical to the OpenAI API — only the value changes.

TypeScript / JavaScript (OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.solrouter.io/ai",
  apiKey: process.env.SOLROUTER_API_KEY,
});

const completion = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-4",  // ← provider/model-name
  messages: [{ role: "user", content: "Explain quantum entanglement." }],
});

console.log(completion.choices[0].message.content);

Python (OpenAI SDK)

from openai import OpenAI
import os

client = OpenAI(
    base_url="https://api.solrouter.io/ai",
    api_key=os.environ["SOLROUTER_API_KEY"],
)

completion = client.chat.completions.create(
    model="google/gemini-2.5-pro",  # ← provider/model-name
    messages=[{"role": "user", "content": "Explain quantum entanglement."}],
)

print(completion.choices[0].message.content)

curl

curl https://api.solrouter.io/ai/chat/completions \
  -H "Authorization: Bearer $SOLROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/llama-4-maverick",
    "messages": [{"role": "user", "content": "Explain quantum entanglement."}]
  }'

Popular models reference

The table below lists frequently used models with their context windows and approximate pricing. Prices are per million tokens and are passed through directly from the provider with no markup.

Model IDContextInput ($/M)Output ($/M)Notes
openai/gpt-4o128k$2.50$10.00Vision, function calling
openai/gpt-4o-mini128k$0.15$0.60Fast, cost-effective
openai/gpt-4.11M$2.00$8.00Largest context OpenAI
openai/gpt-4.1-mini1M$0.40$1.60Long-context budget option
openai/o3200k$10.00$40.00Reasoning model
openai/o4-mini200k$1.10$4.40Fast reasoning
anthropic/claude-opus-4200k$15.00$75.00Most capable Claude
anthropic/claude-sonnet-4200k$3.00$15.00Balanced performance
anthropic/claude-3.7-sonnet:thinking200k$3.00$15.00Extended reasoning
anthropic/claude-haiku-3.5200k$0.80$4.00Fastest Claude
google/gemini-2.5-pro1M$1.25$10.00Long-context reasoning
google/gemini-2.5-flash1M$0.15$0.60Fast, multimodal
google/gemini-2.0-flash1M$0.10$0.40Budget multimodal
meta-llama/llama-4-maverick128k$0.19$0.49Open weights, vision
meta-llama/llama-3.3-70b-instruct128k$0.12$0.30Strong open model
mistralai/mistral-large128k$2.00$6.00Mistral flagship
mistralai/codestral256k$0.30$0.90Code-specialised
deepseek/deepseek-r1164k$0.55$2.19Reasoning, open weights
deepseek/deepseek-chat-v3-0324164k$0.27$1.10Fast chat
x-ai/grok-3131k$3.00$15.00xAI flagship
x-ai/grok-3-mini131k$0.30$0.50Fast, reasoning traces
cohere/command-r-plus128k$2.50$10.00RAG-optimised
perplexity/sonar-pro200k$3.00$15.00Web search grounding
arcee-ai/trinity-mini:free32kFreeFreeFree tier

Prices shown are approximate and subject to change. Always check the Models page or the pricing field in the model details API for the current rates used in billing.


Free models

Some models are available at no cost. Free models are identified by:

  • IsFree: true in the model metadata
  • A :free suffix appended to the model ID
arcee-ai/trinity-mini:free
meta-llama/llama-3.1-8b-instruct:free
mistralai/mistral-7b-instruct:free
google/gemma-3-27b-it:free

Free models are fully functional and go through the same request pipeline as paid models. They are subject to rate limits that are more restrictive than paid models, and availability may vary based on provider capacity.

Using a free model

const completion = await client.chat.completions.create({
  model: "arcee-ai/trinity-mini:free",
  messages: [{ role: "user", content: "Summarise this paragraph." }],
});

Filtering free models on the catalogue

On the Models page, toggle the Free filter to show only models with IsFree: true. In the API, free models can be identified programmatically by checking the pricing.prompt and pricing.completion fields — both are "0" for free models.


Modalities

Not every model supports every input or output type. SolRouter exposes the modalities field on each model so you can match the right model to your task.

Input modalities

ModalityDescriptionExample models
textPlain text or structured messagesAll models
imageStatic images (JPEG, PNG, WebP, GIF)openai/gpt-4o, anthropic/claude-sonnet-4, google/gemini-2.5-pro
audioSpeech or audio clipsopenai/gpt-4o-audio-preview
videoVideo frames or clipsgoogle/gemini-2.5-pro, google/gemini-2.5-flash
filePDFs, documentsanthropic/claude-opus-4, google/gemini-2.5-pro

Output modalities

ModalityDescriptionExample models
textNatural language responsesAll models
imageGenerated imagesopenai/dall-e-3
audioSynthesised speechopenai/gpt-4o-audio-preview

Sending an image alongside text

const completion = await client.chat.completions.create({
  model: "openai/gpt-4o",
  messages: [
    {
      role: "user",
      content: [
        { type: "text", text: "What is shown in this image?" },
        {
          type: "image_url",
          image_url: {
            url: "https://example.com/chart.png",
          },
        },
      ],
    },
  ],
});

Filtering by modality on the catalogue

The Models page includes modality filter chips (Text, Image, Audio, Video). Select one or more to narrow the list to models that support those input types. Models that support a given modality display a badge next to their name.


Deprecated and expiring models

Providers occasionally retire older model versions. SolRouter surfaces this through an ExpirationDate field on the model object. When a model has a set expiration date, the catalogue page shows a warning badge and the date after which the model will stop accepting new requests.

How to handle expiring models

  • Check the catalogue regularly — the Models page flags models with upcoming expiration dates with a warning icon
  • Update your model field to a current model before the expiration date
  • Use model fallback — configure a fallback chain so your application automatically switches to an updated model without downtime (see Model Fallback)

Example: migrating from a deprecated model

// Before — deprecated model
const completion = await client.chat.completions.create({
  model: "openai/gpt-4-turbo",  // expiring
  messages: [{ role: "user", content: "Hello!" }],
});

// After — current replacement
const completion = await client.chat.completions.create({
  model: "openai/gpt-4.1",  // current
  messages: [{ role: "user", content: "Hello!" }],
});

When a model reaches its ExpirationDate, requests that specify it will receive a 404 error with a message indicating the model is no longer available.


Next steps