Главная / Блог / OpenRouter
ENGINEERING_BLOG · 2026.07.24

OpenRouter API 2026: двухуровневая маршрутизация и единый endpoint для 400+ моделей

OPENROUTER · UNIFIED GATEWAY
400+

Один API Key, OpenAI-совместимый протокол, 70+ провайдеров — нулевая стоимость миграции SDK.

Команды, которые одновременно гоняют GPT-4o, Claude 3.5 Sonnet и Gemini 2.5 Pro, обычно тонут в зоопарке ключей, SDK и биллингов. OpenRouter решает это на уровне шлюза: один Authorization: Bearer, один endpoint /v1/chat/completions, а внутри — двухслойная маршрутизация (model + provider) и встроенный Failover. Материал для backend- и ML-инженеров: архитектура routing, сравнение с прямым API, семь шагов интеграции и production-ready payload с route: "fallback". Вывод заранее: для multi-model стека среднего объёма OpenRouter почти не требует переписывания кода; при petabyte-scale, Prompt Caching или data residency — оставайтесь на официальных API.

SECTION 01 Почему multi-LLM стек ломается без единого шлюза

  • Фрагментация credentials: OpenAI, Anthropic, Google, Meta, DeepSeek — отдельные аккаунты, rate limits и rotation keys; DevOps-накладные расходы растут линейно с числом моделей.
  • Отсутствие circuit breaker на периметре: 429/5xx от одного провайдера требуют custom retry + model switch в приложении; без централизованного Failover MTTR растёт.
  • Разрозненный cost observability: пять dashboard — пять источников truth для TTFT, tokens/sec и invoice reconciliation; FinOps не видит картину целиком.
  • Adapter hell при смене модели: переход на DeepSeek V4 GA или сравнение с Kimi K3 open-source превращает каждый эксперимент в отдельный integration branch.

SECTION 02 Архитектура OpenRouter: Model Routing и Provider Routing

Определение: OpenRouter — агрегирующий LLM-шлюз. Клиент шлёт OpenAI Chat Completions payload на https://openrouter.ai/api/v1/chat/completions; шлюз выбирает модель и backend-провайдера, проксирует запрос и возвращает совместимый ответ. Идентификатор модели — vendor/model, например openai/gpt-4o, anthropic/claude-3.5-sonnet, google/gemini-2.5-pro, deepseek/deepseek-chat.

Существующий код на openai Python/JS SDK меняет только base_url и api_key — формат messages, streaming и tool calls остаются прежними.

Два уровня routing внутри OpenRouter
Слой Что решает Поля запроса
Model Routing Какая LLM обрабатывает prompt model или openrouter/auto для автовыбора
Provider Routing Какой backend-узел провайдера обслуживает ту же модель объект provider; по умолчанию — weighted pick по цене (inverse-square)
Failover chain Переключение при rate limit или 5xx массив models + route: "fallback"

Provider Routing особенно важен, когда одна и та же модель доступна у нескольких reseller-ов с разной латентностью и ценой: шлюз балансирует без изменений на стороне клиента. Failover — отдельный контракт: массив models задаёт приоритет; при ошибке primary OpenRouter последовательно пробует следующий ID, не возвращая управление вашему retry-loop.

OpenRouter не заменяет официальные SDK — он централизует transport, billing и routing там, где приложению нужны десятки моделей, а не один petabyte-scale pipeline.

SECTION 03 OpenRouter vs прямой OpenAI / Anthropic API — матрица решений

Сравнение для production-решений
Критерий OpenRouter Прямой API
Credentials Один API Key на весь каталог Key per vendor
SDK migration Смена base_url + api_key Разные SDK и auth-схемы
Failover Встроенный через models[] Custom logic в приложении
Billing Единый dashboard, TTFT-метрики Разрозненные invoice
Token markup Нет; комиссия 5,5% при пополнении Официальные цены
Extra latency +10–80 ms hop через шлюз Минимальный RTT
Vendor-only features Chat Completions subset Batch API, Prompt Caching, Vertex toolchain
Оптимальный кейс Multi-model A/B, agents, средний объём Single-model scale, compliance, ultra-low latency

Когда OpenRouter — не лучший выбор:

  • Один model ID и счёт >$50k/мес — 5,5% deposit fee окупает прямой enterprise-контракт
  • Нужны Anthropic Prompt Caching, OpenAI Batch/Assistants или Google Vertex-native tooling
  • Latency budget <100 ms end-to-end — лишний hop через US-шлюз недопустим
  • Regulated data residency — трафик через US third-party layer запрещён политикой

SECTION 04 Интеграция OpenRouter API: пошаговый pipeline

  1. Регистрация: создайте аккаунт на openrouter.ai (Google, GitHub или email), откройте Dashboard.
  2. Генерация API Key: Keys → Create; сохраните в OPENROUTER_API_KEY, не коммитьте в репозиторий.
  3. Smoke test: выполните curl ниже — проверьте 200 OK и списание credits.
  4. Attribution headers: добавьте HTTP-Referer и X-Title — они влияют на публичный leaderboard и attribution в статистике.
  5. Catalog sync: периодически вызывайте GET /api/v1/models — pricing и availability меняются без changelog в вашем коде.
  6. Production Failover: задайте models + route: "fallback" до деплоя; primary и secondary должны быть семантически совместимы.
  7. Observability: мониторьте Dashboard по TTFT, tokens и cost alerts; настройте auto-recharge порог.
curl_basic.sh
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-3.5-sonnet",
    "messages": [
      { "role": "user", "content": "Объясни квантовые вычисления одним предложением" }
    ]
  }'
openrouter_sdk.py
from openai import OpenAI
import os

client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=os.environ["OPENROUTER_API_KEY"],
)

completion = client.chat.completions.create(
    model="openai/gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}],
    extra_headers={
        "HTTP-Referer": "https://vpsnix.com",
        "X-Title": "VPSNIX Blog Demo",
    },
)
print(completion.choices[0].message.content)
openrouter_stream.mjs
import OpenAI from "openai";

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

const stream = await openai.chat.completions.create({
  model: "anthropic/claude-3.5-sonnet",
  messages: [{ role: "user", content: "Короткое стихотворение об осени" }],
  stream: true,
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content;
  if (content) process.stdout.write(content);
}

Failover payload — routing на уровне шлюза без client-side retry:

fallback_payload.json
{
  "model": "anthropic/claude-3.5-sonnet",
  "models": [
    "anthropic/claude-3.5-sonnet",
    "openai/gpt-4o",
    "google/gemini-2.5-pro"
  ],
  "route": "fallback",
  "messages": [{ "role": "user", "content": "Hello" }]
}
list_models.sh
curl https://openrouter.ai/api/v1/models \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"

SECTION 05 Pricing, free tier и параметры для цитирования

OpenRouter — ключевые числа (2026)
Параметр Значение
Каталог 70+ vendors, 400+ models, endpoint /v1/chat/completions
Token pricing Provider-native, без markup
Deposit fee 5,5% (min $0,80); crypto +5%
Free models 25+; ~50 req/day без депозита
Free tier (deposit ≥$10) 1000 req/day, 20 req/min
BYOK Первые 1M req/мес бесплатно; далее 5%
Gateway latency +10–80 ms к прямому RTT
  • Routing stack: Model Routing (model) + Provider Routing (provider, inverse-square weighting по цене)
  • Failover contract: models[] + route: "fallback" — sequential retry на стороне шлюза
  • Protocol surface: OpenAI Chat Completions; streaming через SSE без vendor-specific adapters
  • Cost model: zero token markup; revenue — deposit fee 5,5% и BYOK service fee после 1M req
  • Free tier ladder: 50 → 1000 req/day после депозита $10; rate cap 20 req/min
  • Observability: единый dashboard для TTFT, throughput и per-model spend

Официальные источники — после публикации перепроверьте актуальность:

OpenRouter Documentation

OpenRouter FAQ — pricing и BYOK

OpenRouter Models — live pricing

Типичный split-stack 2026: OpenRouter закрывает multi-model inference и A/B, а физический M4/M4 Pro узел VPSNIX — Xcode build, Metal profiling и CI для iOS. Облачный LLM не компенсирует 20–40% overhead виртуализированного macOS и EULA-риски Hypervisor; для production, где нужен native Apple Silicon без потерь, root-доступ и elastic billing по дням/неделям/месяцам, физические узлы VPSNIX — обычно более надёжный слой. Тарифы — на странице pricing; если уже гоняете Kimi K3 weights или DeepSeek V4 через OpenRouter для code review, compile chain имеет смысл держать на compliant hardware.

SECTION 06 Часто задаваемые вопросы

OpenRouter платный?

Платные модели — по ценам провайдера; при пополнении Credits комиссия 5,5% (мин. $0,80). 25+ бесплатных моделей: ~50 запросов/день без депозита, 1000/день после пополнения от $10.

Работает ли OpenRouter из РФ/СНГ?

Сервис зарегистрирован за рубежом; доступность зависит от сети. Для production используйте стабильный egress и учитывайте локальные требования к трансграничной передаче данных.

Какие модели доступны?

GPT-4o, Claude 3.5 Sonnet, Gemini 2.5 Pro, DeepSeek, Qwen, Llama и ещё 400+. Актуальный список — GET /api/v1/models.

Как вызвать OpenRouter из Python?

Установите пакет openai, задайте base_url=https://openrouter.ai/api/v1 и api_key из env; в model передайте vendor/model.

OpenRouter или прямой Anthropic API?

Multi-model и быстрые прототипы — OpenRouter; Prompt Caching, batch-scale и data residency — прямой API Anthropic.

Безопасны ли корпоративные данные?

Запрос проходит через US-шлюз. Для regulated workloads — BYOK или прямое подключение без промежуточного агрегатора.

Есть ли наценка на токены?

Нет markup на token pricing. Комиссия только при пополнении баланса — 5,5%.