Материал редакции Зерокодера. Ключ OpenRouter стоит в нашем рабочем контуре генерации, поэтому каталог, лимиты и поведение бесплатного роутера в тексте сняты собственным запросом к API. Чужие обзоры стоят здесь только как названные источники. Обновлено: сентябрь 2026.

OpenRouter — это единый шлюз к языковым моделям разных разработчиков: один аккаунт, один ключ и один адрес запроса вместо отдельного договора с каждым поставщиком. Формат запроса совпадает с OpenAI, поэтому готовый код переезжает подменой адреса. В каталоге на 9 сентября 2026 года 431 модель от 105 провайдеров, часть из них с нулевой ценой.

Главное:

  • Адрес API — https://openrouter.ai/api/v1, чат-эндпоинт /chat/completions, клиент OpenAI работает прямой заменой.
  • Ключ создаётся на openrouter.ai/keys, и каждому ключу можно поставить свой потолок расхода.
  • Бесплатные модели помечены суффиксом :free: 20 запросов в минуту и 50 в сутки, после покупки кредитов на 10 $ — 1000 в сутки.
  • Пополнение принимает карты, AliPay и USDC; комиссия 5,5 % через Stripe и 5 % на крипте, на сам инференс наценки нет.
  • Российская карта не проходит, а по доступу с российского IP-адреса источники противоречат друг другу: статус своего адреса проверяется собственным запросом к API.

Что такое OpenRouter простыми словами

OpenRouter — это посредник между вашим кодом и десятками поставщиков моделей. Вы заводите один аккаунт на openrouter.ai, кладёте на баланс кредиты и обращаетесь к любой модели каталога через один и тот же адрес: OpenRouter сам направляет запрос нужному провайдеру, считает деньги и переключается на запасного, когда основной отдаёт ошибку.

Масштаб каталога стоит смотреть числом, потому что обзоры годами переписывают друг у друга вендорскую формулировку «400+ моделей и 70+ провайдеров» — так пишет, например, разбор на vc.ru от 2026 года. Запрос к открытым эндпоинтам /api/v1/models и /api/v1/providers 9 сентября 2026 года даёт другую картину.

Что считали Обзоры в выдаче Наш срез каталога 09.09.2026
Моделей в каталоге «400+» 431
Провайдеров «70+» 105
Моделей с суффиксом :free «25+» 18
Моделей с нулевой ценой входа и выхода не приводится 21

Расхождение по бесплатным моделям принципиальное: их почти вдвое меньше обещанного, и состав списка меняется неделями. Отдельная выгода OpenRouter — единый формат счёта: цена любой модели видна в каталоге до запроса, и OpenRouter, по собственной документации, не накручивает наценку поверх цены провайдера.

Мини-вывод: OpenRouter снимает не задачу выбора модели, а задачу договориться с каждым поставщиком отдельно.

Аккаунт, вход и API-ключ OpenRouter

Аккаунт OpenRouter заводится на openrouter.ai, дальше работа идёт в трёх разделах кабинета. Ключи лежат на странице openrouter.ai/settings/keys, баланс и пополнение — на openrouter.ai/settings/credits, расход — на openrouter.ai/activity. Про последний раздел OpenRouter в анонсе панели активности пишет, что наверху выводятся пять метрик — расход, запросы, объём токенов, доля попаданий в кэш и усреднённая цена за миллион токенов, — а группировать их можно по модели, провайдеру, ключу и приложению.

Ключ создаётся кнопкой на openrouter.ai/keys. Документация OpenRouter по авторизации прямо говорит две вещи, которые экономят деньги и нервы. Первая: ключу при создании можно задать лимит расхода — «you can optionally set a credit limit». Второе правило там же сформулировано жёстче: «You must protect your API keys and never commit them to public repositories», то есть ключ живёт в переменной окружения, а в репозиторий уезжает только её имя.

Практический приём из этого: заводите отдельный ключ на каждый проект и ставьте ему потолок. Утёкший ключ с лимитом 5 $ стоит 5 $, утёкший ключ без лимита стоит столько, сколько успеют потратить. Как выглядит та же связка «ключ, лимиты, цены» у прямого API одного поставщика, разбирали в материале про Claude Code API.

Мини-вывод: аккаунт OpenRouter один, а ключей стоит держать столько, сколько у вас проектов.

Base URL OpenRouter и первый запрос

Базовый адрес API OpenRouter — https://openrouter.ai/api/v1, запросы к чат-моделям уходят на https://openrouter.ai/api/v1/chat/completions. Авторизация — заголовок Authorization: Bearer <ключ>.

Главная техническая особенность OpenRouter в том, что отдельная библиотека не нужна. Быстрый старт в документации сервиса формулирует это дословно: «You can also use the OpenAI SDK pointed at OpenRouter as a drop-in replacement». На практике переезд занимает две строки:

from openai import OpenAI client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key="<OPENROUTER_API_KEY>", ) resp = client.chat.completions.create( model="deepseek/deepseek-v3.2", messages=[{"role": "user", "content": "Привет"}], )

Тот же адрес подставляется в поле «Base URL» любого инструмента, который умеет говорить с OpenAI: узла в n8n, плагина в редакторе, десктопного клиента. Разницу между работой через чат и работой через API разбирали отдельно — ChatGPT и ChatGPT API, а сборку сценария на узле — в материале про автоматизацию в n8n.

Мини-вывод: подключение OpenRouter сводится к подмене base URL и ключа в уже написанном коде.

Бесплатные модели OpenRouter и их лимиты

Бесплатные модели OpenRouter опознаются суффиксом :free в идентификаторе — например google/gemma-4-31b-it:free. Есть и служебный маршрутизатор openrouter/free: в каталоге он описан как «The simplest way to get free inference» и выбирает бесплатную модель случайным образом. На 9 сентября 2026 года в каталоге 18 идентификаторов с суффиксом :free.

Лимиты у бесплатного контура жёсткие и завязаны на сумму, которую вы когда-либо клали на баланс.

Условие Запросов в минуту Запросов в сутки
Пожизненных кредитов меньше 10 $ 20 50
Пожизненных кредитов 10 $ и больше 20 1000

Два поведения, о которых стоит знать заранее. Превышение частоты возвращает HTTP 429 с текстом «Rate limit exceeded», и документация просит повторять запрос с нарастающей паузой и учитывать заголовок Retry-After. Второе злее: при отрицательном балансе аккаунта сервис отдаёт 402 «including for free models» — уход баланса в минус выключает и бесплатные модели тоже.

Мини-вывод: бесплатный контур OpenRouter годится для проб и учебных проектов, а 10 $ на балансе поднимают суточный лимит в двадцать раз.

Сколько стоит OpenRouter: цены моделей и комиссии

Абонентской платы у OpenRouter нет, платёж один — кредиты на баланс, которые списываются по цене модели за токены. Цены видны в каталоге до запроса. Вот срез на 9 сентября 2026 года, снятый разбором ответа /api/v1/models, в долларах за миллион токенов.

Модель Вход Выход
openai/gpt-5.4 2,50 15,00
anthropic/claude-sonnet-5 2,00 10,00
google/gemini-3.8-flash 0,75 3,75
deepseek/deepseek-v3.2 0,269 0,40
openai/gpt-5-nano 0,05 0,40

Деньги OpenRouter берёт на входе: комиссия сидит в пополнении баланса, сам инференс идёт по цене провайдера. По его FAQ, пополнение принимает «all major credit cards, AliPay and cryptocurrency payments in USDC», комиссия составляет 5,5 % при минимуме 0,80 $ через Stripe и 5 % при оплате криптовалютой. Там же два условия, которые обычно пропускают: неиспользованные кредиты сервис оставляет за собой право аннулировать через год после покупки, а при работе со своими ключами провайдеров (BYOK) первые 25 000 $ месячной стоимости инференса идут без комиссии и только сверх этого берётся 5 %.

Отдельный пункт для корпоративных данных: по умолчанию, как сказано в том же FAQ, «prompt and completion are not logged», а добровольное логирование включается в обмен на скидку 1 % от стоимости использования.

Мини-вывод: считать бюджет OpenRouter нужно по цене выбранной модели плюс 5–5,5 % на пополнение.

Как пополнить баланс OpenRouter из России

Пополнение баланса OpenRouter из России упирается в платёжный контур, а сам сервис здесь ни при чём: карты российских банков платёжный провайдер отклоняет. Разбор provod.AI на vc.ru формулирует итог коротко: «Пополнить баланс OpenRouter можно только иностранной картой или криптой», и добавляет вторую половину проблемы для юрлица — «OpenRouter — американская компания. Она не выставит вам счёт на ООО в рублях».

Отсюда три рабочих направления. Первое — зарубежная карта, своя или выпущенная банком дружественной юрисдикции; деньги уходят напрямую в биллинг OpenRouter, комиссия та самая, 5,5 %. Второе — криптовалюта: USDC поддерживается штатно, комиссия 5 %, счёт на ООО по-прежнему невозможен. Третье — посредники, которые продают доступ к тем же моделям за рубли; они добавляют свою маржу и свои условия хранения ключа, поэтому выбор посредника — отдельное решение, и подробнее оно разобрано у соседей: чем заменить OpenRouter.

Похожая развилка с оплатой зарубежной подписки из России разобрана в материале как оплатить ChatGPT — механика там та же, отличаются суммы.

Мини-вывод: платёж решается зарубежной картой или USDC, а бухгалтерский документ на российское юрлицо в этой схеме не появляется.

Работает ли OpenRouter в России

Доступ и оплата — два разных вопроса, и по доступу источники прямо противоречат друг другу. Разбор OpenRouter на Хабре утверждает: «OpenRouter не блокирует российских пользователей по IP-адресу, поэтому доступ к платформе открыт». Блог botman.one в публикации от 8 июля 2026 года утверждает обратное: запросы с российских адресов получают 403 «Not available in your region», ограничения введены в мае 2026 года, и VPN помогает не всегда.

Собственные условия использования OpenRouter третьего мнения не добавляют: в пункте 5.7 региональные ограничения описаны как ограничения владельцев моделей — «certain Model Providers do not authorize users … who are located in certain countries or regions, to access their Models». Своего списка стран сервис в этом пункте не приводит.

Вывод из противоречия практический: чужое утверждение о доступности здесь бесполезно, потому что ответ зависит от вашего адреса, провайдера и даты. Что происходит, когда доступ действительно закрывается, и какие признаки у этого состояния, разобрано у соседа — когда OpenRouter блокирует.

Мини-вывод: статус доступа к OpenRouter проверяется своим запросом со своего адреса, и занимает это один запуск.

Скрипт проверки OpenRouter и найденная им ловушка

Чтобы не гадать, редакция написала openrouter_check.py — один файл без зависимостей, который за один запуск отвечает на четыре вопроса: жив ли ключ, каков его потолок, сколько сейчас моделей в каталоге и отвечает ли бесплатная модель. Коды 401, 402 и 429 он переводит в причину человеческими словами.

# -*- coding: utf-8 -*- """openrouter_check.py — проверка доступа к OpenRouter одним запуском. Запуск: OPENROUTER_API_KEY=sk-or-v1-... python openrouter_check.py """ import os, json, sys, urllib.request, urllib.error BASE = "https://openrouter.ai/api/v1" KEY = os.environ.get("OPENROUTER_API_KEY", "") HEAD = {"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"} ERRORS = { 401: "ключ не принят: проверьте OPENROUTER_API_KEY и что он не отозван на /settings/keys", 402: "баланс ушёл в минус: 402 прилетает и на бесплатные модели, пополните до плюса", 429: "упёрлись в лимит запросов: повторите с паузой, читайте заголовок Retry-After", } def call(path, payload=None): req = urllib.request.Request(BASE + path, headers=HEAD, data=json.dumps(payload).encode() if payload else None) try: with urllib.request.urlopen(req, timeout=90) as r: return json.loads(r.read().decode()) except urllib.error.HTTPError as e: print(f" HTTP {e.code}: {ERRORS.get(e.code, e.read().decode()[:200])}") return None def main(): if not KEY: sys.exit("нет OPENROUTER_API_KEY в окружении") print("1. Ключ") k = (call("/key") or {}).get("data", {}) if k: lim = k.get("limit") print(f" потрачено: ${k.get('usage', 0):.4f} | " f"лимит ключа: {'без лимита' if lim is None else '$%.2f' % lim} | " f"бесплатный тариф: {'да' if k.get('is_free_tier') else 'нет'}") print("2. Каталог") models = (call("/models") or {}).get("data", []) providers = (call("/providers") or {}).get("data", []) free = [m["id"] for m in models if m["id"].endswith(":free")] print(f" моделей: {len(models)} | провайдеров: {len(providers)} | " f"с суффиксом :free — {len(free)}") print("3. Пробный запрос через роутер бесплатных моделей") r = call("/chat/completions", {"model": "openrouter/free", "max_tokens": 200, "messages": [{"role": "user", "content": "Ответь одним словом: работает?"}]}) if r: txt = (r["choices"][0]["message"].get("content") or "").strip() print(f" ответила {r.get('model')} | цена запроса: ${r['usage']['cost']}") print(f" текст: {txt[:80] if txt else 'ПУСТО — весь max_tokens ушёл в рассуждение'}") if __name__ == "__main__": main()

Наш прогон 9 сентября 2026 года на Python 3.14.4 дал каталог из 431 модели и 105 провайдеров, 18 бесплатных идентификаторов и ответ от nvidia/nemotron-3.5-content-safety:free ценой 0 $. Повтор с заведомо неверным ключом показал полезную деталь: шаги 1 и 3 вернули HTTP 401, а шаг 2 отработал — значит каталог моделей и цены читаются вообще без ключа, обычным GET-запросом.

Этот же скрипт нашёл дефект, о котором обзоры молчат. Роутер openrouter/free при max_tokens=40 вернул пустое поле content в пяти попытках из пяти: finish_reason=length, весь бюджет съело внутреннее рассуждение модели (40–56 reasoning-токенов), и каждый раз роутер выбирал другую бесплатную модель — cohere/north-mini-code:free, nvidia/nemotron-3.5-content-safety:free, poolside/laguna-xs-2.1:free, dots-studio/dots-3-note-preview:free. Ответ появляется от 120 токенов бюджета. Совет «просто вызовите openrouter/free» без этой оговорки приводит новичка к пустому ответу и мысли, что сломан ключ.

Мини-вывод: держите max_tokens для бесплатного роутера от 200, иначе получите пустую строку вместо текста.

Чек-лист старта на OpenRouter

  • Заведите аккаунт на openrouter.ai и создайте отдельный ключ на openrouter.ai/keys, сразу поставив ему лимит расхода.
  • Пропишите https://openrouter.ai/api/v1 в base URL своего клиента OpenAI и оставьте остальной код как есть.
  • Для проб берите модели с суффиксом :free, помня про 20 запросов в минуту и 50 в сутки.
  • Положите 10 $, если бесплатных 50 запросов в сутки мало: лимит вырастет до 1000.
  • Планируя бюджет, закладывайте комиссию 5,5 % на пополнение картой или 5 % на USDC.
  • Следите за балансом: минус на счёте отключает и бесплатные модели ошибкой 402.
  • Перед разбором доступа с российского адреса прогоните openrouter_check.py и посмотрите на реальный код ответа.