DEV Community

Alex Spinov
Alex Spinov

Posted on

OpenRouter Has a Free API — Here's How to Access 100+ AI Models with One API Key

A developer was using OpenAI for GPT-4, Anthropic for Claude, Google for Gemini. Three API keys, three billing dashboards, three SDK versions. Then he found OpenRouter — one API, one key, 100+ models.

What OpenRouter Offers

OpenRouter:

  • Free models available — Llama 3, Gemma, Mistral (free tiers)
  • 100+ models — GPT-4, Claude, Gemini, Llama, Mistral, and more
  • One API key — access all providers
  • OpenAI-compatible — drop-in replacement for OpenAI SDK
  • Fallback routing — if one provider is down, auto-switch
  • Pay-per-token — only pay for what you use
  • No minimums — add $5 credit and start

Quick Start

# Use OpenAI SDK with OpenRouter
npm install openai
Enter fullscreen mode Exit fullscreen mode
import OpenAI from 'openai';

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

// Use any model with the same API
const completion = await openai.chat.completions.create({
  model: 'anthropic/claude-3.5-sonnet', // or 'openai/gpt-4o', 'google/gemini-pro', etc.
  messages: [{ role: 'user', content: 'Explain quantum computing' }]
});

console.log(completion.choices[0].message.content);
Enter fullscreen mode Exit fullscreen mode

Free Models

// These models are FREE on OpenRouter:
const freeModels = [
  'meta-llama/llama-3-8b-instruct:free',
  'google/gemma-7b-it:free',
  'mistralai/mistral-7b-instruct:free',
  'huggingfaceh4/zephyr-7b-beta:free'
];

// Use any free model
const response = await openai.chat.completions.create({
  model: 'meta-llama/llama-3-8b-instruct:free',
  messages: [{ role: 'user', content: 'Write a haiku about programming' }]
});
Enter fullscreen mode Exit fullscreen mode

REST API

# Chat completion
curl 'https://openrouter.ai/api/v1/chat/completions' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "anthropic/claude-3.5-sonnet",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

# Streaming
curl 'https://openrouter.ai/api/v1/chat/completions' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai/gpt-4o",
    "messages": [{"role": "user", "content": "Tell me a story"}],
    "stream": true
  }'

# List available models
curl 'https://openrouter.ai/api/v1/models'

# Check your credits
curl 'https://openrouter.ai/api/v1/auth/key' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Enter fullscreen mode Exit fullscreen mode

Model Routing (Fallback)

// Auto-fallback: if Claude is down, use GPT-4
const response = await openai.chat.completions.create({
  model: 'anthropic/claude-3.5-sonnet',
  messages: [{ role: 'user', content: 'Hello' }],
  // OpenRouter automatically falls back to available providers
});

// Or specify fallback chain
const response2 = await fetch('https://openrouter.ai/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.OPENROUTER_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'anthropic/claude-3.5-sonnet',
    route: 'fallback',
    models: ['anthropic/claude-3.5-sonnet', 'openai/gpt-4o', 'google/gemini-pro'],
    messages: [{ role: 'user', content: 'Hello' }]
  })
});
Enter fullscreen mode Exit fullscreen mode

Compare Models

// Test the same prompt across models
const models = [
  'openai/gpt-4o',
  'anthropic/claude-3.5-sonnet',
  'google/gemini-pro',
  'meta-llama/llama-3-70b-instruct'
];

const results = await Promise.all(
  models.map(async (model) => {
    const start = Date.now();
    const res = await openai.chat.completions.create({
      model,
      messages: [{ role: 'user', content: 'Explain recursion in one sentence' }],
      max_tokens: 100
    });
    return {
      model,
      response: res.choices[0].message.content,
      latency: Date.now() - start,
      tokens: res.usage?.total_tokens
    };
  })
);

console.table(results);
Enter fullscreen mode Exit fullscreen mode

Why OpenRouter

OpenRouter Direct APIs
1 API key 5+ API keys
1 billing dashboard 5+ dashboards
Auto-fallback Manual error handling
Free models included Each provider's free tier
OpenAI SDK compatible Different SDKs per provider

Need AI-powered data extraction? Check out my web scraping actors on Apify.

Need AI integration? Email me at spinov001@gmail.com.

Top comments (0)