Klucz API: jak go zdobyć w OpenAI, Claude, Gemini i OpenRouter
Klucz API krok po kroku u czterech dostawców, zmienne środowiskowe i plik .env, twarde limity wydatków, siedem zasad bezpieczeństwa i plan na 10 minut po wycieku klucza.

👁 116 przeczytań
- Bez karty kredytowej klucz API można zdobyć w Google AI Studio (darmowy poziom Gemini) oraz w OpenRouter, gdzie działają darmowe modele z limitem 50 zapytań dziennie.
- OpenRouter daje jeden klucz do ponad 460 modeli różnych firm, a jego kod jest zgodny z SDK OpenAI, co czyni go najwygodniejszym wyborem na start.
- Klucz nigdy nie powinien trafiać bezpośrednio do kodu - należy go przechowywać w zmiennej środowiskowej lub pliku .env, który jest wykluczony z repozytorium przez .gitignore.
Klucz API to długi ciąg znaków, który identyfikuje Ciebie i Twoje konto przy każdym zapytaniu do modelu AI. Działa jak hasło połączone z kartą płatniczą: kto go ma, ten wydaje Twoje pieniądze. Poniżej pokazuję, jak zdobyć klucz w OpenAI, Anthropic, Google AI Studio i OpenRouter, jak go przechowywać i co zrobić, gdy wycieknie. To drugi krok ścieżki API AI od zera.
Stan na 4 października 2026
- Bez karty: klucz Google AI Studio (darmowy poziom Gemini API) i OpenRouter (tylko darmowe modele, 50 zapytań dziennie).
- Z kartą: OpenAI i Anthropic działają na przedpłacie, OpenRouter na doładowaniach z prowizją 5,5% (min. 0,80 USD).
- Twardy limit wydatków: OpenAI od 22 lipca 2026 (na organizację i projekt), Anthropic (na organizację i workspace), OpenRouter (na każdy klucz, z odnawianiem dziennym, tygodniowym albo miesięcznym).
Który klucz wybrać na start
Jeśli dopiero się uczysz, zacznij od jednego z dwóch:
- OpenRouter - jeden klucz do ponad 460 modeli wszystkich firm, wspólne saldo, kod zgodny z SDK OpenAI. Na nim przetestowałem wszystkie skrypty z tej ścieżki. Szczegóły w przewodniku OpenRouter: jeden klucz do wszystkich modeli.
- Google AI Studio - darmowy poziom Gemini API bez karty. Dobry do pierwszych prób, ale z niskimi i niegwarantowanymi limitami.
Klucz bezpośrednio u OpenAI albo Anthropic ma sens, gdy wiesz już, którego modelu używasz, potrzebujesz wyższych limitów albo umowy z konkretnym dostawcą (np. przetwarzanie danych firmowych).

OpenAI: klucz krok po kroku
- Wejdź na platform.openai.com i załóż konto (to inne konto niż abonament ChatGPT, choć logujesz się tym samym mailem).
- W Settings → Billing dodaj kartę i doładuj saldo. API OpenAI działa na przedpłacie: gdy kredyty się skończą, zapytania dostają błąd
credit_balance_exhausted. - Utwórz projekt (Settings → Projects) - klucz zawsze należy do projektu.
- W API keys kliknij Create new secret key, nadaj nazwę i skopiuj klucz od razu. Zaczyna się od
sk-proj-i później nie zobaczysz go w całości. - Ustaw limit: Settings → Project settings → Limits → Spend → Edit spend limit i zaznacz twarde egzekwowanie. Samo „alert” tylko wysyła maila, nie zatrzymuje wydatków.
Po przekroczeniu twardego limitu zapytania dostają błąd 429 z kodem project_spend_limit_exceeded. OpenAI zastrzega, że limit nie działa natychmiast, więc wydatki mogą go lekko przekroczyć. Ceny modeli rozpisałem w tekście Ile kosztuje GPT-6 Sol i Luna.
Anthropic (Claude): klucz krok po kroku
- Wejdź na platform.claude.com (dawne console.anthropic.com) i załóż konto organizacji. Abonament Claude Pro nie daje kredytów do API.
- W Settings → Billing kup kredyty. Nowe konta dostają według dokumentacji „niewielką” pulę darmowych kredytów na testy; ile dokładnie, Anthropic nie podaje.
- W Settings → API keys utwórz klucz (zaczyna się od
sk-ant-). Klucz należy do workspace’u, więc dla każdego projektu warto mieć osobny workspace. - W Billing → Spend limits ustaw własny miesięczny limit. Po jego osiągnięciu API zwraca 400 z komunikatem „You have reached your specified API usage limits”.
Niezależnie od Twojego limitu każdy poziom konta ma sufit: Start 500 USD, Build 1000 USD, Scale 200 000 USD miesięcznie. Pułapki przy przejściu na najnowszy model opisałem w tekście Claude Opus 5.5 w API: cztery zmiany, które zepsują kod.
Google AI Studio (Gemini): klucz bez karty
- Wejdź na aistudio.google.com/apikey i zaloguj się kontem Google (musisz mieć 18 lat; Polska jest na liście obsługiwanych krajów).
- Kliknij Create API key. Klucz powstaje w projekcie Google Cloud, a limity liczą się na projekt, nie na klucz - drugi klucz w tym samym projekcie nie da drugiej puli.
- Bez płatności działasz w darmowym poziomie: modele Flash są bezpłatne, ale Google nie publikuje stałych limitów (zobaczysz je w AI Studio). Pro i modele obrazów są tylko płatne.
- Gdy podepniesz konto rozliczeniowe, wchodzisz na Tier 1 i płacisz za tokeny.
Szczegóły darmowych limitów i prywatności opisałem w przewodniku Google AI Studio: klucz API, darmowe limity i ceny.
OpenRouter: jeden klucz do wszystkich
- Zaloguj się na openrouter.ai (Google, GitHub albo mail).
- W Settings → Keys kliknij Create Key. Klucz zaczyna się od
sk-or-v1-. - Od razu ustaw Credit limit, np. 2 USD, i reset co miesiąc. Bez limitu klucz może wydać całe saldo.
- Bez doładowania działają tylko modele z dopiskiem
:free(50 zapytań dziennie). Po zakupie co najmniej 10 USD kredytów limit darmowych modeli rośnie do 1000 dziennie.
Gdzie trzymać klucz: zmienne środowiskowe i .env
Zasada numer jeden: klucz nigdy nie trafia do kodu. Nie wklejasz go w api_key="sk-...", bo kod wysyłasz do repozytorium, pokazujesz koledze albo wklejasz do czatu z prośbą o pomoc. Program ma odczytać klucz ze zmiennej środowiskowej. Są dwa sposoby.
Plik .env (polecam na start)
W katalogu projektu tworzysz plik .env z kluczem, a biblioteka python-dotenv wczyta go przy starcie. Wzór z mojej paczki (to .env.example, czyli plik bez prawdziwych kluczy, który możesz bezpiecznie udostępniać):
# Skopiuj ten plik jako .env i wpisz swój klucz. Pliku .env NIGDY nie wrzucaj do repozytorium.
OPENROUTER_API_KEY=sk-or-v1-wklej-tutaj-swoj-klucz
# Model domyślny (dowolny identyfikator z https://openrouter.ai/models)
MODEL=openai/gpt-6-luna
# Klucze dostawców - potrzebne tylko do skryptów z katalogu dostawcy/
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GEMINI_API_KEY=Obok musi leżeć plik .gitignore, który mówi gitowi, żeby nigdy nie wysyłał .env:
.env
.venv/
node_modules/
__pycache__/Zmienna środowiskowa w systemie
Na Windowsie możesz ustawić zmienną na stałe dla swojego użytkownika. W PowerShellu:
setx OPENROUTER_API_KEY "sk-or-v1-twoj-klucz"
# zamknij i otwórz terminal ponownie, potem sprawdź (pokaże tylko długość, nie klucz):
$env:OPENROUTER_API_KEY.LengthNa Linuksie i Macu dopisujesz export OPENROUTER_API_KEY="..." do ~/.bashrc albo ~/.zshrc. SDK OpenAI, Anthropic i Google same szukają swoich zmiennych: OPENAI_API_KEY, ANTHROPIC_API_KEY i GEMINI_API_KEY. Dzięki temu w kodzie wystarczy OpenAI() bez żadnego argumentu.
Ten sam kod z kluczem dostawcy
Poniżej trzy minimalne skrypty, które łączą się bezpośrednio z OpenAI, Anthropic i Google. Uczciwie: nie uruchamiałem ich z prawdziwymi kluczami tych firm, bo testy robiłem przez OpenRouter. Uruchomiłem je natomiast z celowo fałszywym kluczem, żeby sprawdzić, że biblioteki się instalują, kod się wykonuje i serwery każdej firmy odpowiadają. Biblioteki: openai 3.24.0, anthropic 1.11.0, google-genai 2.28.0.
"""Bezpośrednio do OpenAI (klucz z platform.openai.com), Responses API.
pip install openai python-dotenv Zmienna w .env: OPENAI_API_KEY=sk-proj-..."""
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI() # sam czyta OPENAI_API_KEY ze zmiennych środowiskowych
odpowiedz = client.responses.create(
model="gpt-6-luna",
instructions="Odpowiadasz po polsku, krótko.",
input="Wyjaśnij w dwóch zdaniach, czym jest API.",
)
print(odpowiedz.output_text)
print(odpowiedz.usage.input_tokens, "+", odpowiedz.usage.output_tokens, "tokenów")"""Bezpośrednio do Anthropic (klucz z platform.claude.com), Messages API.
pip install anthropic python-dotenv Zmienna w .env: ANTHROPIC_API_KEY=sk-ant-..."""
from dotenv import load_dotenv
import anthropic
load_dotenv()
client = anthropic.Anthropic() # sam czyta ANTHROPIC_API_KEY
odpowiedz = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024, # w Anthropic max_tokens jest obowiązkowe
system="Odpowiadasz po polsku, krótko.",
messages=[{"role": "user", "content": "Wyjaśnij w dwóch zdaniach, czym jest API."}],
)
print(next(b.text for b in odpowiedz.content if b.type == "text"))
print(odpowiedz.usage.input_tokens, "+", odpowiedz.usage.output_tokens, "tokenów")"""Bezpośrednio do Google Gemini (klucz z aistudio.google.com), SDK google-genai.
pip install google-genai python-dotenv Zmienna w .env: GEMINI_API_KEY=..."""
from dotenv import load_dotenv
from google import genai
from google.genai import types
load_dotenv()
client = genai.Client() # sam czyta GEMINI_API_KEY
odpowiedz = client.models.generate_content(
model="gemini-3.8-flash",
contents="Wyjaśnij w dwóch zdaniach, czym jest API.",
config=types.GenerateContentConfig(system_instruction="Odpowiadasz po polsku, krótko."),
)
print(odpowiedz.text)
print(odpowiedz.usage_metadata.prompt_token_count, "+", odpowiedz.usage_metadata.candidates_token_count, "tokenów")Tak odpowiedziały serwery na fałszywy klucz (4 października 2026):
# OpenAI
openai.AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-proj-**********************LUCZ. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'code': 'invalid_api_key', 'param': None}, 'status': 401}
# Anthropic
anthropic.AuthenticationError: Error code: 401 - {'type': 'error', 'error': {'type': 'authentication_error', 'message': 'API key is invalid.'}, 'request_id': None}
# Google
google.genai.errors.ClientError: 400 INVALID_ARGUMENT. {'error': {'code': 400, 'message': 'API key not valid. Please pass a valid API key.', 'status': 'INVALID_ARGUMENT', 'details': [{'@type': 'type.googleapis.com/google.rpc.ErrorInfo', 'reason': 'API_KEY_INVALID', 'domain': 'googleapis.com', 'metadata': {'service': 'generativelanguage.googleapis.com'}}, {'@type': 'type.googleapis.com/google.rpc.LocalizedMessage', 'locale': 'en-US', 'message': 'API key not valid. Please pass a valid API key.'}]}}Dwie rzeczy warte zapamiętania. Po pierwsze, OpenAI w komunikacie maskuje klucz i pokazuje tylko jego koniec - nigdy nie wysyłaj nikomu pełnego komunikatu błędu z innego narzędzia, jeśli nie masz pewności, że robi tak samo. Po drugie, Google na zły klucz odpowiada kodem 400, a nie 401, więc obsługa błędów oparta tylko na numerze statusu przepuści ten przypadek.
Jak nie spalić klucza: 7 zasad
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.
- Jeden klucz na jeden projekt. Gdy coś wycieknie, wyłączasz jeden klucz, a nie wszystko.
- Limit na każdym kluczu. W OpenRouter na kluczu, w OpenAI na projekcie, w Anthropic na workspace. Na naukę wystarczy 2-5 USD miesięcznie.
- Żadnego klucza w przeglądarce. Kod JavaScript na stronie widzi każdy odwiedzający. Klucz trzymasz na serwerze, a strona pyta Twój serwer.
- .env w .gitignore przed pierwszym commitem. Usunięcie pliku w kolejnym commicie nie pomaga - klucz zostaje w historii.
- Nie wklejaj klucza do czatów z AI, zrzutów ekranu ani nagrań. Pokazując kod, pokazuj
.env.example. - Wyłączaj automatyczne doładowanie na koncie, na którym tylko się uczysz.
- Sprawdzaj zużycie raz w tygodniu w panelu dostawcy. Nagły skok to pierwszy sygnał wycieku.
Klucz wyciekł: co zrobić w 10 minut
- Usuń albo wyłącz klucz w panelu dostawcy. Natychmiast, zanim zaczniesz sprzątać repozytorium. To jedyny krok, który naprawdę zatrzymuje szkody.
- Utwórz nowy klucz i wpisz go do
.envna swoim komputerze i serwerze. - Sprawdź zużycie z ostatnich dni. Jeśli widzisz cudze zapytania, napisz do pomocy technicznej dostawcy - przy szybkim zgłoszeniu bywa zwrot, ale nikt tego nie gwarantuje.
- Wyczyść historię repozytorium (np.
git filter-repo --replace-text) i wymuś wysłanie. Pamiętaj, że kopie i forki mogły już powstać, dlatego krok 1 jest ważniejszy. - Dodaj zabezpieczenie na przyszłość: limit na nowym kluczu i skaner sekretów (GitHub robi to za darmo dla publicznych repozytoriów).
GitHub automatycznie skanuje publiczne repozytoria i zgłasza znalezione klucze firmom z programu partnerskiego, w tym OpenAI, Anthropic, Google i OpenRouter. OpenAI według dostępnych opisów wyłącza znaleziony klucz sam i wysyła maila. OpenRouter w dokumentacji obiecuje tylko powiadomienie mailem i prosi o samodzielne usunięcie klucza. Nie licz więc na automat - limit na kluczu to Twoja jedyna gwarancja.
Najczęstsze pytania
Czy klucz API jest darmowy?
Sam klucz tak. Płacisz za zużyte tokeny. Bez karty działają klucz Google AI Studio (darmowy poziom Gemini) i klucz OpenRouter z darmowymi modelami.
Czy abonament ChatGPT Plus albo Claude Pro daje dostęp do API?
Nie. Abonamenty czatów i API to osobne konta i osobne rozliczenia. Za API płacisz z przedpłaconego salda.
Gdzie znaleźć klucz API Claude?
Na platform.claude.com w Settings → API keys. Klucz zaczyna się od sk-ant-. Pokazuje się w całości tylko raz, przy tworzeniu.
Czy mogę używać jednego klucza w kilku programach?
Technicznie tak, ale lepiej nie. Osobne klucze pozwalają zobaczyć, który program ile wydaje, i wyłączyć jeden bez psucia reszty.
Mój klucz zwraca 401, choć jest dobry. Dlaczego?
Najczęściej: zmienna środowiskowa nie wczytała się (terminal otwarty przed setx), w .env jest spacja albo cudzysłów w złym miejscu, klucz należy do innego dostawcy niż adres, pod który wysyłasz, albo klucz został wyłączony po wykryciu wycieku.
Źródła i data sprawdzenia
Sprawdzone 4 października 2026. Kod uruchomiłem na Windows 11 z Pythonem 3.13.15.
- OpenAI - limity wydatków
- Anthropic - limity wydatków i zapytań
- Anthropic - cennik i darmowe kredyty
- Google - cennik Gemini API
- OpenRouter - limity
- OpenRouter - FAQ (prowizje)
- OpenRouter - uwierzytelnianie i wycieki kluczy
- GitHub - skanowanie sekretów
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →
