✨ Świeża dostawa•nowe kody na kinetyka.pl: Gemini Pro 18 mies. 170 zł•Cursor, ElevenLabs, Lovable i więcej, roczne plany AI w ułamku ceny Zobacz →
Przejdź do treści
Artykuły

OpenRouter: jeden klucz do wszystkich modeli AI - przewodnik

Przewodnik po OpenRouter: konto i klucz z limitem, opłaty, darmowe modele, prywatność danych, przydatne pola w kodzie i test, jak wybór dostawcy zmienia cenę i szybkość tego samego modelu.

10 min czytania
Oficjalny znak OpenRouter i napis OpenRouter - jeden klucz do 466 modeli AI

👁 112 przeczytań

OpenRouter to pośrednik, który daje jeden klucz API i jedno saldo do ponad 460 modeli AI: OpenAI, Anthropic, Google, DeepSeek, Mistrala, Kimi i dziesiątek modeli otwartych. Ceny modeli są takie same jak u dostawców, a OpenRouter zarabia na prowizji 5,5% od doładowania. Kod piszesz w bibliotece OpenAI, zmieniasz tylko adres. Na OpenRouterze przetestowałem wszystkie skrypty ze ścieżki API AI od zera, więc poniżej opisuję go z praktyki: jak zacząć, ile kosztuje, które modele są darmowe, co z prywatnością i jak sterować wyborem dostawcy.

Stan na 4 października 2026

  • Modele: 466 w katalogu API, w tym 17 darmowych (z dopiskiem :free).
  • Opłaty: ceny modeli bez narzutu, prowizja od doładowania kartą 5,5% (minimum 0,80 USD), kryptowalutami 5%.
  • Darmowe modele: 20 zapytań na minutę, 50 dziennie; po zakupie co najmniej 10 USD kredytów 1000 dziennie.
  • Właściciel: od sierpnia 2026 Stripe (transakcja za ponad 7 mld USD, opisałem ją tutaj).

Co to jest OpenRouter i jak działa

OpenRouter sam nie trenuje ani nie uruchamia modeli. Przyjmuje Twoje zapytanie w formacie OpenAI (Chat Completions), sprawdza, którzy dostawcy obsługują wybrany model, i przekazuje zapytanie jednemu z nich. Przy modelach zamkniętych dostawca jest zwykle jeden (Claude obsługuje Anthropic, a także Google Vertex i Amazon Bedrock), przy otwartych może ich być kilkadziesiąt. 4 października model gpt-oss-120b hostowało 23 dostawców, a GLM-5.3 aż 41.

Co z tego masz:

  • Jeden klucz i jedno saldo zamiast pięciu kont z osobnymi kartami, limitami i fakturami.
  • Zmiana modelu jednym napisem: openai/gpt-6.1-sol na anthropic/claude-sonnet-5.5 bez zmiany kodu.
  • Automatyczne przełączanie, gdy dostawca ma awarię.
  • Koszt w każdej odpowiedzi: pole usage.cost w dolarach, co bardzo ułatwia liczenie.

Czego nie masz: umowy bezpośrednio z OpenAI czy Anthropic, niektórych funkcji specyficznych dla dostawcy (np. części narzędzi serwerowych) i najwyższych limitów, które dostajesz po latach płacenia u źródła.

Jak zacząć: konto, klucz, limit

  1. Zaloguj się na openrouter.ai kontem Google, GitHub albo mailem.
  2. W Settings → Keys utwórz klucz (sk-or-v1-...) i od razu ustaw Credit limit, np. 2 USD z odnowieniem miesięcznym. Limit może się odnawiać codziennie, co tydzień albo co miesiąc.
  3. Jeśli chcesz płatnych modeli, w Settings → Credits doładuj konto. Przy 10 USD zapłacisz 10,80 USD (5,5% to 0,55 USD, ale obowiązuje minimum 0,80 USD), przy 20 USD - 21,10 USD.
  4. Zapisz klucz w pliku .env (instrukcja w tekście Klucz API: jak go zdobyć i jak go nie spalić).
  5. Uruchom pierwszy skrypt.
"""Pierwsze zapytanie do modelu AI przez OpenRouter (SDK openai)."""
import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()  # wczytuje zmienne z pliku .env w bieżącym katalogu

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

odpowiedz = client.chat.completions.create(
    model=os.getenv("MODEL", "openai/gpt-6-luna"),
    messages=[
        {"role": "system", "content": "Odpowiadasz po polsku, krótko i konkretnie."},
        {"role": "user", "content": "Wyjaśnij w dwóch zdaniach, czym jest API."},
    ],
)

print(odpowiedz.choices[0].message.content)
print("---")
print("model:", odpowiedz.model)
print("tokeny wejścia:", odpowiedz.usage.prompt_tokens)
print("tokeny wyjścia:", odpowiedz.usage.completion_tokens)
szczegoly = odpowiedz.usage.completion_tokens_details
if szczegoly and szczegoly.reasoning_tokens:
    print("  w tym tokeny myślenia:", szczegoly.reasoning_tokens)
koszt = getattr(odpowiedz.usage, "cost", None)  # OpenRouter dokłada koszt w USD
if koszt is not None:
    print(f"koszt: {koszt:.6f} USD")
API to zestaw reguł i narzędzi, dzięki którym różne programy mogą się ze sobą komunikować. Określa, jak wysyłać żądania i odbierać dane lub funkcje od innego systemu.
---
model: openai/gpt-6-luna
tokeny wejścia: 40
tokeny wyjścia: 58
koszt: 0.000033 USD

Pełne omówienie kodu, streamingu i obsługi błędów jest w tekście Pierwsze zapytanie do API AI w Pythonie, a wersja z curl w tekście Co to jest API.

Ceny i opłaty

PozycjaIleUwagi
Cena modelijak u dostawcy, bez narzutuprzy modelach otwartych każdy dostawca ma własną stawkę
Doładowanie kartą (Stripe)5,5%, minimum 0,80 USDprowizja bezzwrotna
Doładowanie kryptowalutą5%bez możliwości zwrotu
Własne klucze dostawców (BYOK)bez opłaty do progu miesięcznego, potem 5% ceny modeluFAQ z 4.10 podaje próg 25 000 USD miesięcznie
Zwrot niewykorzystanych kredytówtylko w ciągu 24 godzin od zakupubez prowizji
Ważność kredytówmogą wygasnąć po rokuwg regulaminu
Rabat za zgodę na zapisywanie zapytań1%domyślnie wyłączone

Stawki popularnych modeli i kalkulator kosztu miesięcznego znajdziesz w tekście Tokeny AI: co to jest i ile kosztują. Uwaga na jedną pułapkę: przy modelach otwartych karta modelu pokazuje jedną cenę, a zapytanie może trafić do dostawcy, który liczy kilka razy więcej. Sprawdziłem to na 15 modelach w tekście Cena na OpenRouter to nie cena, którą płacisz.

Mój test: ten sam model, czterech dostawców

Żeby pokazać, jak działa wybór dostawcy, wysłałem to samo pytanie do modelu gpt-oss-120b cztery razy, za każdym razem z innym ustawieniem pola provider:

"""OpenRouter: ten sam model u różnych dostawców. Kto obsłużył zapytanie, ile to trwało i ile kosztowało."""
import os, time
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"])
MODEL = "openai/gpt-oss-120b"   # model otwarty, 4.10.2026 hostowało go 23 dostawców
PYTANIE = [{"role": "user", "content": "Napisz po polsku 3 zdania o tym, czym jest OpenRouter."}]

warianty = {
    "domyślnie": {},
    "najtaniej (sort=price)": {"provider": {"sort": "price"}},
    "najszybciej (sort=throughput)": {"provider": {"sort": "throughput"}},
    "bez zapisu danych (data_collection=deny, zdr)": {"provider": {"data_collection": "deny", "zdr": True}},
}

for nazwa, extra in warianty.items():
    start = time.time()
    r = client.chat.completions.create(model=MODEL, messages=PYTANIE, max_tokens=200, extra_body=extra)
    czas = time.time() - start
    dostawca = getattr(r, "provider", "?")  # OpenRouter dokłada nazwę dostawcy do odpowiedzi
    print(f"{nazwa:46} dostawca: {dostawca:12} {czas:4.1f} s  "
          f"{r.usage.completion_tokens:3} tokenów  {r.usage.cost:.6f} USD")
domyślnie                                      dostawca: SambaNova     1.0 s  178 tokenów  0.000181 USD
najtaniej (sort=price)                         dostawca: CoreWeave     6.2 s  175 tokenów  0.000032 USD
najszybciej (sort=throughput)                  dostawca: Cerebras      0.4 s  200 tokenów  0.000180 USD
bez zapisu danych (data_collection=deny, zdr)  dostawca: Crusoe        0.8 s  152 tokenów  0.000042 USD

Wyniki z 4 października:

  • Domyślnie zapytanie trafiło do SambaNovy: szybko (1,0 s), ale za 0,000181 USD.
  • Sortowanie po cenie wybrało CoreWeave: 5,6 razy taniej, ale odpowiedź trwała 6,2 s.
  • Sortowanie po przepustowości wybrało Cerebras: 0,4 s, cena jak domyślnie.
  • Bez zapisu danych (dostawcy, którzy nie przechowują zapytań) trafiło do Crusoe: 0,8 s i tylko o 30% drożej niż najtańszy wariant.

Przy jednym zapytaniu to ułamki centa. Przy automacie, który wysyła 10 tysięcy zapytań dziennie, różnica między wariantem domyślnym a sortowaniem po cenie to kilkadziesiąt dolarów miesięcznie. Dlatego w kodzie produkcyjnym zawsze ustawiam pole provider świadomie. Skróty działają też w nazwie modelu: :floor sortuje po cenie, :nitro po szybkości (np. openai/gpt-oss-120b:nitro).

Darmowe modele

Modele z dopiskiem :free kosztują 0 USD i nie wymagają doładowania. Listę pobierzesz bez klucza, a mój skrypt od razu testuje jeden z nich:

"""Lista darmowych modeli w OpenRouter (lista modeli nie wymaga klucza) i test jednego z nich."""
import os, sys, json, urllib.request
from dotenv import load_dotenv
from openai import OpenAI

with urllib.request.urlopen("https://openrouter.ai/api/v1/models") as f:
    modele = json.load(f)["data"]

darmowe = [m for m in modele if m["id"].endswith(":free")]
print(f"Wszystkich modeli: {len(modele)}, darmowych: {len(darmowe)}\n")
for m in sorted(darmowe, key=lambda m: -m["context_length"]):
    print(f"{m['id']:52} kontekst {m['context_length']:>9}")

load_dotenv()
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"])
model = sys.argv[1] if len(sys.argv) > 1 else "google/gemma-4-31b-it:free"
r = client.chat.completions.create(model=model, messages=[{"role": "user", "content": "Napisz po polsku jedno zdanie o jesieni."}])
print(f"\n{model}: {r.choices[0].message.content.strip()}")
print(f"koszt: {r.usage.cost} USD")
Wszystkich modeli: 466, darmowych: 17

thinkingmachines/inkling-small:free                  kontekst   1048576
thinkingmachines/inkling:free                        kontekst   1048576
nvidia/nemotron-3.5-lightning:free                   kontekst   1000000
nvidia/nemotron-3-ultra-550b-a55b:free               kontekst   1000000
dots-studio/dots-3-note-preview:free                 kontekst    512000
apodex/apodex-1.1-mini:free                          kontekst    262144
inclusionai/ling-3.0-flash-sante:free                kontekst    262144
qwen/qwen3.8-27b:free                                kontekst    262144
poolside/laguna-s-2.1:free                           kontekst    262144
poolside/laguna-xs-2.1:free                          kontekst    262144
google/gemma-4-26b-a4b-it:free                       kontekst    262144
google/gemma-4-31b-it:free                           kontekst    262144
nvidia/nemotron-3-super-120b-a12b:free               kontekst    262144
cohere/north-mini-code:free                          kontekst    256000
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free   kontekst    256000
nvidia/nemotron-3.5-content-safety:free              kontekst    128000
liquid/lfm-2.5-2.6b:free                             kontekst     65536

google/gemma-4-31b-it:free: Jesień to czas, kiedy liście mienią się złotem i czerwienią, a powietrze staje się rześkie i chłodne.
koszt: 0 USD

Ograniczenia darmowych modeli:

  • Limity: 20 zapytań na minutę i 50 dziennie łącznie dla wszystkich darmowych modeli; po zakupie co najmniej 10 USD kredytów (kiedykolwiek) 1000 dziennie.
  • Dostępność: darmowe warianty bywają przeciążone (błąd 429) i znikają z katalogu bez zapowiedzi. Lista z 4 października nie musi być aktualna za miesiąc.
  • Prywatność: część darmowych endpointów działa tylko po włączeniu w ustawieniach prywatności zgody na trenowanie na Twoich danych. Do danych klientów darmowych modeli nie używam.
  • Polski: Gemma 4 31B odpowiedziała poprawną polszczyzną, ale mniejsze darmowe modele (np. 2,6B) radzą sobie z polskim słabo.

Prywatność i dane

Mam to spisane w całości

Zebrałem te rzeczy w ebookach, które możesz pobrać za darmo - bez zapisu na listę, bez haczyka.

Pobierz ebooki

Według FAQ OpenRouter domyślnie nie zapisuje treści zapytań ani odpowiedzi, nawet przy błędach, a zapisuje tylko metadane (czas, model, liczba tokenów). Treść trafia jednak do dostawcy modelu i to jego zasady decydują, co się z nią dzieje. Masz trzy narzędzia:

  1. Ustawienia prywatności konta - czy dopuszczasz dostawców, którzy mogą trenować na danych.
  2. "data_collection": "deny" w polu provider - tylko dostawcy, którzy nie przechowują danych.
  3. "zdr": true - tylko endpointy z zerowym przechowywaniem danych (Zero Data Retention).

Do danych osobowych i firmowych i tak potrzebujesz umowy powierzenia przetwarzania. OpenRouter to dodatkowy podmiot w łańcuchu, więc przy RODO sprawdź, czy jego warunki Ci wystarczą, albo idź bezpośrednio do dostawcy.

Przydatne funkcje w kodzie

Lista zapasowych modeli: gdy pierwszy nie odpowie, OpenRouter sam spróbuje kolejnego. Składnię sprawdziłem (zapytanie przeszło i obsłużył je pierwszy model z listy), awarii nie symulowałem:

r = client.chat.completions.create(
    model="anthropic/claude-haiku-4.5",
    messages=[{"role": "user", "content": "Powiedz OK."}],
    extra_body={"models": ["anthropic/claude-haiku-4.5", "openai/gpt-6-luna", "google/gemini-3.8-flash"]},
)
print(r.model)  # który model faktycznie odpowiedział

Inne pola, których używam:

  • "provider": {"require_parameters": true} - tylko dostawcy, którzy obsługują wszystkie parametry zapytania. Bez tego OpenRouter po cichu pomija nieobsługiwane, np. temperaturę w GPT-6 (sprawdziłem w tekście o parametrach API).
  • "provider": {"order": ["Cerebras"], "allow_fallbacks": false} - tylko wskazany dostawca.
  • "provider": {"max_price": {"completion": 1.0}} - górny limit stawki za milion tokenów wyjścia.
  • Aliasy z tyldą, np. ~anthropic/claude-sonnet-latest albo ~openai/gpt-sol-latest - zawsze najnowsza wersja z rodziny. Wygodne, ale w produkcji wolę stałą nazwę, żeby model nie zmienił się bez mojej wiedzy.

OpenRouter czy bezpośrednio u dostawcy

OpenRouterBezpośrednio (OpenAI, Anthropic, Google)
Liczba modeli466 na jednym kluczutylko modele danej firmy
Cena tokenówtaka samataka sama
Dodatkowy koszt5,5% od doładowaniabrak
Darmowy start17 darmowych modeli, 50 zapytań dziennieGoogle: darmowy poziom Gemini; Anthropic: niewielkie kredyty na start; OpenAI: brak
Limity zapytańwysokie, zależne od saldarosną z historią płatności
Nowe funkcje dostawcyczasem z opóźnieniemod pierwszego dnia
Umowa i fakturaz OpenRouterz dostawcą

Moja zasada: OpenRouter do nauki, prototypów i porównywania modeli; bezpośrednio u dostawcy, gdy produkcja stoi na jednym modelu i liczy się każdy procent kosztu albo umowa. Alternatywą z abonamentem zamiast tokenów jest Poe, a lokalnie, bez żadnych opłat za tokeny, Ollama.

Najczęstsze pytania

Czy OpenRouter jest darmowy?

Konto i klucz są darmowe, 17 modeli z dopiskiem :free też (50 zapytań dziennie). Za pozostałe modele płacisz z doładowanego salda, a przy doładowaniu prowizję 5,5%.

Czy OpenRouter jest bezpieczny?

To duża, legalna firma (od sierpnia 2026 część Stripe) i według FAQ domyślnie nie zapisuje treści zapytań. Ryzyko leży raczej u dostawców modeli, do których trafia treść, i w wycieku Twojego klucza. Ustaw limit na kluczu i wybierz dostawców bez przechowywania danych.

Czy OpenRouter jest droższy niż API OpenAI?

Ceny tokenów są te same. Płacisz dodatkowo 5,5% przy doładowaniu, czyli przy 100 USD około 5,50 USD.

Jak sprawdzić saldo przez API?

Zapytanie GET na https://openrouter.ai/api/v1/key z kluczem w nagłówku zwraca zużycie i limit danego klucza, a /api/v1/credits stan całego konta.

Czy mogę płacić w złotówkach?

Nie, rozliczenia są w dolarach. Karta przeliczy kwotę po kursie Twojego banku.

Co znaczy błąd 402 w OpenRouter?

Brak środków na koncie albo wyczerpany limit klucza. Doładuj saldo albo podnieś Credit limit w ustawieniach klucza.

Google · Twoje źródłaPromptowy wyżej w Twoim Google - jednym kliknięciemDodaj do preferowanych źródeł →

Źródła i data sprawdzenia

Sprawdzone i przetestowane 4 października 2026 na Windows 11, Python 3.13.15, openai 3.24.0. Koszt testów z tego tekstu: poniżej 0,001 USD.

// Newsletter

Cały tydzień w AI, w jednym mailu

Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.

Zapisz się za darmo →
Za darmo. Wypisujesz się jednym kliknięciem.
// czytaj też

Podobne tematy na Promptowym

Piotr Olszewski

Piotr Olszewski

AUTOR I WYDAWCA

Piotr Olszewski - twórca i autor Promptowego, polskiego serwisu o sztucznej inteligencji. Codziennie śledzi premiery modeli, narzędzia i regulacje AI, i tłumaczy je prostym, konkretnym językiem.

// mapa strony

🛒 Sklep Kinetyka Google AI Gemini Pro 170 zł CapCut Pro 460 zł/rok Lovable Pro 400 zł/rok Zobacz wszystko →
promptowy w liczbach 0tekstów w archiwum0newsów z ostatnich 7 dni0modeli wideo w obserwatorium0zagadek w grach
× ‹ powiększenie ›