BrowseWiz Logo
BrowseWiz on Discord
One API, every model: panel z kodem ustawia base_url na https://openrouter.ai/api/v1 i kieruje jeden endpoint zgodny z API OpenAI do modeli do rozumowania, programowania i analizy obrazu

OpenRouter API i API zgodne z OpenAI: base URL oraz jeden endpoint do modeli Claude, GPT i Mistral

Tom
Tom

Base URL (adres bazowy) OpenRouter API to https://openrouter.ai/api/v1, a endpoint chat completions ma adres https://openrouter.ai/api/v1/chat/completions. OpenRouter przyjmuje żądania w formacie OpenAI Chat Completions, więc oficjalne SDK OpenAI działają z nim, gdy ustawisz ten adres jako base URL, wyślesz klucz OpenRoutera jako token Bearer i podasz model, np. anthropic/claude-sonnet-5. Po zmianie nazwy modelu na openai/gpt-6-sol albo mistralai/mistral-medium-3-5 to samo żądanie trafia do OpenAI albo do Mistrala. Vercel AI Gateway, Portkey i LiteLLM Proxy, uruchamiany na własnym serwerze, też udostępniają modele Anthropic, OpenAI i Mistral pod jednym endpointem zgodnym z API OpenAI. Porównujemy je niżej.

Wszystkie adresy URL, ID modeli i ceny w tym artykule sprawdziliśmy we wrześniu 2026 w dokumentacji i API samych dostawców.

OpenRouter API: base URL i endpoint chat completions

Ustawienie

Wartość

Base URL

https://openrouter.ai/api/v1

Endpoint chat completions

POST https://openrouter.ai/api/v1/chat/completions

Nagłówek uwierzytelniania (wymagany)

Authorization: Bearer <OPENROUTER_API_KEY>

Typ treści

Content-Type: application/json (SDK ustawiają go same)

Nagłówki opcjonalne

HTTP-Referer, X-OpenRouter-Title (działa też X-Title), X-OpenRouter-Categories

Format ID modelu

author/model, np. anthropic/claude-sonnet-5

Klucze API

openrouter.ai/settings/keys

Opcjonalne nagłówki służą tylko do przypisania żądań do twojej aplikacji: HTTP-Referer to adres twojej strony, X-OpenRouter-Title to nazwa widoczna w rankingach OpenRoutera, a X-OpenRouter-Categories przypisuje aplikację do kategorii w marketplace. Bez nich żądania też działają.

Przykład w curl

curl https://openrouter.ai/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [
      {"role": "user", "content": "Explain what an OpenAI-compatible API is in one sentence."}
    ]
  }'

Przykład w Pythonie z oficjalnym SDK openai

Zainstaluj SDK poleceniem pip install openai, ustaw zmienną środowiskową OPENROUTER_API_KEY i uruchom:

import os
from openai import OpenAI

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

completion = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[
        {"role": "user", "content": "Explain what an OpenAI-compatible API is in one sentence."}
    ],
    extra_headers={
        "HTTP-Referer": "https://example.com",  # opcjonalnie: adres twojej strony
        "X-OpenRouter-Title": "My App",          # opcjonalnie: nazwa twojej aplikacji
    },
)

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

Base URL kończy się na /v1. SDK samo dopisuje /chat/completions, więc jeśli wkleisz pełny endpoint jako base_url, żądanie trafi pod .../chat/completions/chat/completions, a OpenRouter odpowie błędem 404.

ID modeli i przełączanie między modelami Claude, GPT i Mistral

ID modeli w OpenRouterze mają postać author/model. Aktualne przykłady to openai/gpt-6-sol, anthropic/claude-sonnet-5 i mistralai/mistral-medium-3-5 (prefiks Mistrala to mistralai/, nie mistral/). Endpoint, klucz i treść żądania się nie zmieniają, więc zmiana dostawcy sprowadza się do pętli po nazwach modeli (z obiektem client z poprzedniego przykładu):

for model in ["openai/gpt-6-sol", "anthropic/claude-sonnet-5", "mistralai/mistral-medium-3-5"]:
    r = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Name one risk of vendor lock-in."}],
    )
    print(f"{r.model}: {r.choices[0].message.content}")

Przy częstym przełączaniu przydają się dwie funkcje OpenRoutera. Aliasy w postaci ~author/family-latest, np. ~anthropic/claude-sonnet-latest, wskazują najnowszy model z danej rodziny, a pole model w odpowiedzi podaje, który model faktycznie obsłużył żądanie. Tablica models to lista modeli zapasowych (fallback), z których OpenRouter korzysta po kolei, gdy pierwszy model zawiedzie z powodu limitów zapytań, niedostępności, długości kontekstu albo flagi moderacji. SDK OpenAI nie ma na nią osobnego argumentu, więc przekazuje się ją jako extra_body={"models": [...]}. Płacisz za model, który udzielił odpowiedzi.

Pełny katalog modeli wraz z parametrami, które obsługuje każdy z nich, zwraca GET https://openrouter.ai/api/v1/models, i to bez klucza. Jeśli dopiero wybierasz, do jakich modeli kierować zapytania, najważniejsze opcje omawiamy w porównaniu najlepszych modeli AI.

Za inferencję OpenRouter nalicza opłaty po cenach dostawców, bez marży. Przy zakupie kredytów kartą dolicza 5,5% prowizji (minimum 0,80 USD), a przy płatności kryptowalutami 5%.

Usługi do przełączania między modelami Anthropic, OpenAI i Mistral przez jedno API

Według stanu na wrzesień 2026 OpenRouter, Vercel AI Gateway, Portkey i LiteLLM Proxy (uruchamiany na własnym serwerze) udostępniają modele Anthropic, OpenAI i Mistral pod jednym endpointem zgodnym z API OpenAI. Aktualny endpoint Cloudflare AI Gateway robi to samo dla Anthropic, OpenAI i Google. Modele Mistrala oferuje jednak tylko w wersjach open-weight (z otwartymi wagami) w Workers AI. Do API samego Mistrala potrzebny jest starszy endpoint /compat, który Cloudflare oznaczył jako przestarzały przy wywołaniach pojedynczego modelu. W każdym przypadku dostawcę zmienia się, podmieniając wartość model. Dostawcy mają też własne endpointy zgodne z API OpenAI. Przydają się, gdy chcesz używać jednej biblioteki klienckiej i nie przeszkadza ci osobny klucz u każdego dostawcy.

Opcja

Typ

Base URL zgodny z OpenAI

Do czego

Rozliczenie

OpenRouter

Hostowany router

https://openrouter.ai/api/v1

Setki modeli, jeden klucz i rachunek, modele zapasowe

Cena dostawcy bez marży; 5,5% prowizji od doładowania kartą

Vercel AI Gateway

Hostowana bramka AI (gateway)

https://ai-gateway.vercel.sh/v1

Aplikacje na Vercelu; budżety na projekt, klucz lub członka zespołu

Cena katalogowa dostawcy bez marży; kredyty przedpłacone

Cloudflare AI Gateway

Hostowana bramka AI

https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1

Cache, limity zapytań i analityka dla OpenAI, Anthropic, Google

Podstawowe funkcje za darmo; 5% prowizji od kredytów

Portkey

Hostowana bramka AI, rdzeń open source

https://api.portkey.ai/v1

Guardrails, ponawianie, równoważenie obciążenia na twoich kluczach

Za darmo do 10 tys. logów/mies.; plan za 49 USD/mies.

LiteLLM Proxy

Proxy na własnym serwerze

http://localhost:4000 (twój serwer)

Brak zewnętrznej bramki po drodze; budżety na klucz

Open source; płacisz dostawcom

Hugging Face Inference Providers

Hostowany router, modele open-weight

https://router.huggingface.co/v1

Otwarte modele serwowane przez Groq, Cerebras, Together i innych

Bez marży na stawkach dostawców; darmowy plan

Together AI

Hosting modeli open-weight

https://api.together.ai/v1

Otwarte modele z narzędziami, obsługą obrazów i structured output

Za 1 mln tokenów

OpenAI

Dostawca

https://api.openai.com/v1

Implementacja referencyjna

Za tokeny

Anthropic

Warstwa zgodności dostawcy

https://api.anthropic.com/v1/

Testowanie Claude na kodzie napisanym pod OpenAI

Za tokeny

Google Gemini

Warstwa zgodności dostawcy (beta)

https://generativelanguage.googleapis.com/v1beta/openai/

Gemini z poziomu SDK OpenAI

Darmowy plan, potem za tokeny

Mistral

Dostawca

https://api.mistral.ai/v1

Modele Mistral; zmieniasz tylko base URL i model

Za 1 mln tokenów

Jak wybrać

Jeśli nie chcesz zakładać konta u każdego dostawcy, OpenRouter, Vercel AI Gateway i Unified Billing w Cloudflare sprzedają tokeny po cenach dostawców z jednego przedpłaconego salda. Gdy sprawdzaliśmy (wrzesień 2026), API modeli OpenRoutera zwracało 356 różnych modeli, nie licząc aliasów i wariantów :free oraz :batch, a API Vercela 265 modeli językowych. Kiedy liczy się szeroki wybór modeli, OpenRouter ma przewagę. Vercel i Cloudflare mają więcej sensu, gdy twoja aplikacja już na nich działa.

Jeśli masz już klucze u dostawców, Portkey i LiteLLM działają jako warstwa przed nimi. Portkey dodaje ponawianie żądań, modele zapasowe, równoważenie obciążenia i guardrails, a jego darmowy plan obejmuje 10 000 zapisanych logów miesięcznie. LiteLLM śledzi wydatki i ustawia budżety dla wirtualnych kluczy. Wybierz go, gdy żadna zewnętrzna bramka nie może widzieć twojego ruchu.

ID modeli nie przenoszą się między bramkami. OpenRouter zapisuje mistralai/mistral-medium-3-5, Vercel mistral/mistral-medium-3.5, Portkey używa formatu @your-provider-slug/model, a LiteLLM nazwy, którą sam zdefiniujesz w model_name. Warstwy zgodności Anthropic i Gemini to najsłabszy wybór na produkcję. Anthropic przedstawia swoją jako sposób na testowanie i porównywanie modeli, nie jako rozwiązanie długoterminowe. Google wciąż oznacza swoją jako beta.

Na własnym serwerze: jeden endpoint z LiteLLM

Konfiguracja LiteLLM, która udostępnia modele Claude, GPT i Mistral pod krótkimi nazwami:

model_list:
  - model_name: claude
    litellm_params:
      model: anthropic/claude-sonnet-5
      api_key: os.environ/ANTHROPIC_API_KEY
  - model_name: gpt
    litellm_params:
      model: openai/gpt-6-sol
      api_key: os.environ/OPENAI_API_KEY
  - model_name: mistral
    litellm_params:
      model: mistral/mistral-large-latest
      api_key: os.environ/MISTRAL_API_KEY
docker run -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -e ANTHROPIC_API_KEY -e OPENAI_API_KEY -e MISTRAL_API_KEY \
  -e LITELLM_MASTER_KEY=sk-change-me \
  -p 4000:4000 docker.litellm.ai/berriai/litellm:latest --config /app/config.yaml

Klienci ustawiają wtedy base URL na http://localhost:4000, klucz API na sk-change-me, a model na claude, gpt albo mistral. Bez bazy danych LiteLLM nie egzekwuje budżetów.

Co oznacza API zgodne z OpenAI i gdzie ta zgodność się kończy

API zgodne z OpenAI przyjmuje POST {base_url}/chat/completions z treścią JSON w formacie OpenAI (model, messages z rolami, opcjonalnie tools i stream), uwierzytelnia klienta tokenem Bearer i zwraca odpowiedź o tej samej strukturze choices[].message, a przy streamingu strumień server-sent events. Zwykłe zapytania czatu działają na każdym endpoincie z tabeli po zmianie base URL, klucza i nazwy modelu. Różnice wychodzą dopiero przy funkcjach spoza tego minimum:

  • Wywoływanie narzędzi (tool calling): warstwa Anthropic ignoruje strict, więc argumenty narzędzi nie muszą pasować do twojego schematu. W OpenRouterze 67 z 356 różnych modeli nie miało tools na liście supported_parameters, gdy sprawdzaliśmy (wrzesień 2026), więc zanim podłączysz model do agenta, zajrzyj na tę listę.

  • Ustrukturyzowane odpowiedzi (structured output): warstwa Anthropic ignoruje response_format. Together AI i Vercel AI Gateway deklarują w dokumentacji jego obsługę.

  • Streaming: OpenRouter wysyła komentarze podtrzymujące połączenie (: OPENROUTER PROCESSING). SDK je pomijają, ale własny parser SSE musi odrzucać linie zaczynające się od : przed parsowaniem JSON-a. Błąd, który wystąpi po rozpoczęciu strumienia, przychodzi jako fragment (chunk) z finish_reason: "error" w odpowiedzi HTTP 200.

  • Sterowanie rozumowaniem: nie ma wspólnego parametru. Warstwa Anthropic ignoruje reasoning_effort i przyjmuje obiekt thinking przez extra_body. Gemini przyjmuje reasoning_effort albo własne thinking_level/thinking_budget, ale nie oba naraz. OpenRouter używa obiektu reasoning z polem effort albo max_tokens.

  • Obrazy i pliki: warstwa Anthropic odczytuje części image_url, ale odrzuca części file i input_audio.

  • Prompty systemowe i parametry próbkowania: Anthropic łączy wszystkie wiadomości z rolami system i developer w jeden prompt systemowy na początku rozmowy, ogranicza temperature do 1 i wymaga, by n wynosiło 1.

Pisz kod pod wspólny podzbiór (wiadomości, streaming, narzędzia bez strict), a parametry specyficzne dla dostawcy trzymaj w extra_body, ustawianym osobno dla każdego z nich.

Jak używać dowolnego modelu zgodnego z API OpenAI w BrowseWiz

BrowseWiz to asystent AI w panelu bocznym przeglądarek Chrome i Edge. W ustawieniach niestandardowych modeli przyjmuje każdy model, który udostępnia endpoint chat completions zgodny z API OpenAI. Potrzebuje tych samych trzech wartości co SDK:

  1. Otwórz stronę ustawień BrowseWiz (otwiera ją ikona konta w prawym dolnym rogu panelu bocznego) i wybierz Modele.

  2. W sekcji Niestandardowe punkty końcowe modeli kompatybilnych z API OpenAI (polski interfejs nazywa endpointy punktami końcowymi) wpisz nazwę modelu dokładnie tak, jak dostawca oczekuje jej w żądaniu, np. anthropic/claude-sonnet-5 dla OpenRoutera.

  3. Wpisz base URL, np. https://openrouter.ai/api/v1. BrowseWiz sam dopisuje /chat/completions, więc i tutaj zakończ adres na /v1.

  4. Wklej klucz API. BrowseWiz szyfruje go i przechowuje w lokalnym magazynie rozszerzenia.

Każdy wpis to jeden model. Żeby korzystać z modeli Claude, GPT i Mistral przez OpenRouter, dodaj trzy wpisy z tym samym base URL i kluczem, ale z różnymi nazwami modeli. Bezpośrednie endpointy dostawców działają tak samo:

Dostawca

Base URL

Przykładowa nazwa modelu

OpenRouter

https://openrouter.ai/api/v1

mistralai/mistral-medium-3-5

Google Gemini

https://generativelanguage.googleapis.com/v1beta/openai/

gemini-3.8-flash

Mistral

https://api.mistral.ai/v1

mistral-large-latest

Anthropic

https://api.anthropic.com/v1/

claude-sonnet-5

Jeśli potrzebujesz tylko modeli OpenAI, sekcja Użyj własnego klucza (BYOK) na tej samej stronie przyjmuje klucz OpenAI bezpośrednio. Bez żadnego klucza wbudowany model BrowseWiz Chat działa w darmowym planie z limitem użycia. Na stronie ustawień można też dodać własne narzędzia API i webhooki. Przykład takiego narzędzia pokazujemy w tekście o automatyzacji faktur i paragonów w n8n.

Najczęściej zadawane pytania

Co to jest OpenRouter?

OpenRouter to hostowany router modeli AI: jedno API zgodne z OpenAI, przez które jednym kluczem i z jednego przedpłaconego salda korzystasz z setek modeli różnych dostawców, m.in. Anthropic, OpenAI i Mistral. Model wybierasz polem model, np. anthropic/claude-sonnet-5; za inferencję płacisz ceny dostawców bez marży, a prowizję OpenRouter pobiera przy zakupie kredytów.

Jaki jest base URL OpenRouter API?

https://openrouter.ai/api/v1. Endpoint chat completions to https://openrouter.ai/api/v1/chat/completions, a uwierzytelnianie odbywa się nagłówkiem Authorization: Bearer <OPENROUTER_API_KEY>.

Czy OpenRouter jest zgodny z API OpenAI?

Tak. OpenRouter przedstawia się jako bezpośredni zamiennik OpenAI (drop-in replacement) i działa z każdym SDK, w którym można ustawić base URL. Opcje dostępne tylko w OpenRouterze, takie jak models, provider i reasoning, w SDK OpenAI dla Pythona przekazuje się w extra_body.

Czy można przełączać się między modelami Anthropic, OpenAI i Mistral, mając jeden klucz API?

Tak. OpenRouter i Vercel AI Gateway rozliczają modele Claude, GPT i Mistral z jednego klucza i jednego przedpłaconego salda. Cloudflare AI Gateway robi to samo dla modeli Claude i GPT, ale nie dla API Mistrala. Portkey i LiteLLM też dają jeden klucz do bramki, ale za nią trzymasz własne klucze dostawców.

Czy base URL powinien zawierać /chat/completions?

Nie. SDK OpenAI i BrowseWiz same dopisują /chat/completions do base URL. Jeśli dodasz tę ścieżkę sam, pojawi się w adresie dwa razy, a OpenRouter odpowie błędem 404.

Czy API Anthropic jest zgodne z API OpenAI?

Częściowo. Anthropic udostępnia warstwę zgodności z SDK OpenAI pod adresem https://api.anthropic.com/v1/, ale ignoruje w niej m.in. response_format, reasoning_effort i ścisłe schematy narzędzi, a samą warstwę opisuje jako przeznaczoną do testowania i porównywania modeli. OpenRouter podaje response_format, structured_outputs i reasoning jako obsługiwane parametry dla modeli Claude 4.5 i nowszych, więc jeśli potrzebujesz tych funkcji w formacie OpenAI, to prostsza droga.

Tom's avatar

About Tom

I'm a software engineer and solutions architect specializing in AI-driven tools and productivity software, passionate about helping users reclaim their valuable time through intelligent automation.