Jeden klucz. Każdy model. Codex i Claude Code też.
Codex CLI i Claude Code łączą się teraz z unbottled.ai bezpośrednio, tak jak OpenCode, Continue, Aider i Cline. Jeden adres bazowy, jeden klucz, jedno polecenie na narzędzie.
Twój agent kodujący jest przywiązany do modeli jednego dostawcy. Chcesz drugiej opinii z innego laboratorium, taniego modelu do czarnej roboty albo takiego, który nie odmawia? To kolejne konto, kolejny klucz, kolejny rachunek.
unbottled.ai mówi wszystkimi trzema formatami, których używają agenci kodujący: OpenAI chat completions, OpenAI Responses API i Anthropic Messages API. Nic pośrodku, nic do instalowania. Podłączasz narzędzie raz i przełączasz się między Claude, GPT, DeepSeek, GLM, Kimi, Qwen i modelami niecenzurowanymi, zmieniając jedno ID modelu.
Po co to wszystko
- Jeden klucz, jedno saldo. Bez osobnych kont w Anthropic, OpenAI, DeepSeek, Moonshot i Z.ai.
- Modele niecenzurowane w edytorze. Badania bezpieczeństwa, prompty red-teamowe, narzędzia do fikcji, dane, na których wykładają się filtry głównego nurtu. Poziom filtrowania wybierasz ty, nie dostawca.
- Właściwy model do zadania. Model z górnej półki do trudnego refaktoru, model flash do zmiany nazw i szkieletów testów. Ta sama konfiguracja, inne ID.
- Te same kredyty co w aplikacji czatu, te same ceny. Każda odpowiedź podaje, ile kosztowała.
Zdobądź klucz i adres bazowy
Dwie wartości. Każde narzędzie poniżej potrzebuje dokładnie ich.
Utwórz klucz w Ustawienia > Klucze API. Zaczyna się od sk-unb- i zobaczysz go tylko raz. API jest w każdym płatnym planie: aktywna subskrypcja albo dowolny pakiet kredytów je odblokowuje.
Dla narzędzi w stylu OpenAI: Codex, OpenCode, Continue, Aider, Cline. Locale w ścieżce zmienia tylko język komunikatów o błędach.
Adres bazowy Anthropic: https://unbottled.ai/api/pl-DE
Dla Claude Code i SDK Anthropic. Ten sam adres bez /v1: /v1/messages dopisują same.
export UNBOTTLED_API_KEY="sk-unb-YOUR_KEY"
curl https://unbottled.ai/api/pl-DE/v1/models \
-H "Authorization: Bearer $UNBOTTLED_API_KEY"curl https://unbottled.ai/api/pl-DE/v1/chat/completions \
-H "Authorization: Bearer $UNBOTTLED_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"glm-5.3","messages":[{"role":"user","content":"Hello"}]}'Trzymaj klucz w zmiennej środowiskowej, nigdy w pliku, który commitujesz. Wywołanie curl potwierdza, że klucz działa, i wypisuje każde ID modelu dostępne dla twojego konta, z rozmiarem kontekstu, obsługą narzędzi i cenami w kredytach.
Każde narzędzie łączy się bezpośrednio
Agenci kodujący mówią trzema różnymi formatami. Obsługujemy wszystkie trzy, na tym samym kluczu i tych samych modelach.
- Codex CLI: OpenAI Responses API.
- Claude Code: Anthropic Messages API.
- OpenCode, Continue, Aider, Cline: OpenAI chat completions.
Każde inne narzędzie z polem na adres bazowy działa tak samo: adres bazowy, klucz, ID modelu.
# OpenAI-compatible tools (chat completions or Responses API)
Base URL: https://unbottled.ai/api/pl-DE/v1
API key: sk-unb-YOUR_KEY
Model: glm-5.3
# Anthropic-compatible tools (Messages API)
Base URL: https://unbottled.ai/api/pl-DE
API key: sk-unb-YOUR_KEY
Model: glm-5.3Codex CLI
Terminalowy agent od OpenAI. Czyta repo, uruchamia polecenia, edytuje pliki. Testowane na Codex CLI 0.118.0.
Codex mówi Responses API, my też. Jedno polecenie definiuje dostawcę w locie: nic do edycji, nic do instalowania. Na co dzień dopisz konfigurację raz i uruchamiaj Codex z profilem.
UNBOTTLED_API_KEY="sk-unb-YOUR_KEY" codex \
-c 'model_providers.unbottled={name="unbottled.ai",base_url="https://unbottled.ai/api/pl-DE/v1",env_key="UNBOTTLED_API_KEY",wire_api="responses"}' \
-c model_provider=unbottled \
-m glm-5.3[model_providers.unbottled]
name = "unbottled.ai"
base_url = "https://unbottled.ai/api/pl-DE/v1"
env_key = "UNBOTTLED_API_KEY"
wire_api = "responses"
[profiles.unbottled]
model_provider = "unbottled"
model = "glm-5.3"export UNBOTTLED_API_KEY="sk-unb-YOUR_KEY"
codex --profile unbottledModel zmieniasz przez -m albo linię model w profilu. Zostaw wire_api = "responses": aktualny Codex nie przyjmuje niczego innego.
Claude Code
Terminalowy agent od Anthropic. Planuje, edytuje, odpala testy, wysyła subagentów. Testowane na Claude Code 2.1.323.
Claude Code czyta bramkę ze zmiennych środowiskowych. ANTHROPIC_BASE_URL to adres bazowy bez /v1. ANTHROPIC_MODEL ustawia główny model. Domyślne OPUS i SONNET obsługują wybór modelu i tryb planowania, domyślny HAIKU przenosi zadania w tle, na przykład tytuły sesji, na tani model, a CLAUDE_CODE_SUBAGENT_MODEL dotyczy subagentów. CLAUDE_CODE_MAX_CONTEXT_TOKENS podaje Claude Code prawdziwy rozmiar kontekstu modelu spoza rodziny Claude, więc kompaktuje rozmowę we właściwym momencie.
ANTHROPIC_BASE_URL="https://unbottled.ai/api/pl-DE" \
ANTHROPIC_AUTH_TOKEN="sk-unb-YOUR_KEY" \
ANTHROPIC_MODEL="glm-5.3" \
ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.3" \
ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.3" \
ANTHROPIC_DEFAULT_HAIKU_MODEL="glm-5.3-flash" \
CLAUDE_CODE_SUBAGENT_MODEL="glm-5.3" \
CLAUDE_CODE_MAX_CONTEXT_TOKENS="1048576" \
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1" \
claude{
"env": {
"ANTHROPIC_BASE_URL": "https://unbottled.ai/api/pl-DE",
"ANTHROPIC_AUTH_TOKEN": "sk-unb-YOUR_KEY",
"ANTHROPIC_MODEL": "glm-5.3",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5.3",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5.3",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-5.3-flash",
"CLAUDE_CODE_SUBAGENT_MODEL": "glm-5.3",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "1048576",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}claudeWolisz samego Claude? Usuń linie z modelami. Claude Code poprosi o swoje zwykłe ID Claude, a my skierujemy je do naszego odpowiadającego modelu Claude, rozliczanego w kredytach.
Claude Code wysyła duży prompt systemowy, ponad 30k tokenów wejściowych nawet przy banalnym zadaniu. Tani model domyślny trzyma koszty w ryzach.
OpenCode
Otwartoźródłowy agent do terminala, z TUI i trybem bez interfejsu. Testowane na OpenCode 1.19.5.
Zapisz konfigurację jako opencode.json w projekcie albo jako ~/.config/opencode/opencode.json dla wszystkich projektów. Klucz zostaje w twoim środowisku. Do mapy models dodasz dowolne ID z GET /v1/models, a w TUI wybierzesz je przez /models.
UNBOTTLED_API_KEY="sk-unb-YOUR_KEY" \
OPENCODE_CONFIG_CONTENT='{"provider":{"unbottled":{"npm":"@ai-sdk/openai-compatible","options":{"baseURL":"https://unbottled.ai/api/pl-DE/v1","apiKey":"{env:UNBOTTLED_API_KEY}"},"models":{"glm-5.3":{}}}},"model":"unbottled/glm-5.3"}' \
opencode{
"$schema": "https://opencode.ai/config.json",
"provider": {
"unbottled": {
"npm": "@ai-sdk/openai-compatible",
"name": "unbottled.ai",
"options": {
"baseURL": "https://unbottled.ai/api/pl-DE/v1",
"apiKey": "{env:UNBOTTLED_API_KEY}"
},
"models": {
"glm-5.3": { "name": "GLM-5.3" },
"claude-sonnet-5.5": { "name": "Claude Sonnet 5.5" },
"glm-5.3-uncensored": { "name": "GLM 5.3 Uncensored" }
}
}
},
"model": "unbottled/glm-5.3"
}export UNBOTTLED_API_KEY="sk-unb-YOUR_KEY"
opencodeContinue
Asystent kodowania dla VS Code i JetBrains, do tego CLI cn. Testowane na Continue 1.5.47.
name: unbottled
version: 1.0.0
schema: v1
models:
- name: GLM-5.3
provider: openai
model: glm-5.3
apiBase: https://unbottled.ai/api/pl-DE/v1
apiKey: ${{ secrets.UNBOTTLED_API_KEY }}
roles: [chat, edit, apply]export UNBOTTLED_API_KEY="sk-unb-YOUR_KEY"
cn --config ./config.yamlsecrets.UNBOTTLED_API_KEY jest brany z twojego środowiska. Dodaj -p z promptem, a działa bez interfejsu. Rozszerzenie IDE czyta ~/.continue/config.yaml: wpisz tam ten sam model.
Aider
Programowanie w parze w terminalu, razem z commitami. Testowane na Aider 0.86.2.
Jedno polecenie, zero plików konfiguracyjnych. Aider chce openai/ przed ID modelu i sam je usuwa, zanim nas wywoła. --edit-format diff trzyma zmiany w ryzach; bez tego przy nieznanym ID modelu Aider wysyła całe pliki od nowa. Pliki do edycji podajesz w poleceniu, jak zwykle w Aiderze.
OPENAI_API_BASE="https://unbottled.ai/api/pl-DE/v1" \
OPENAI_API_KEY="sk-unb-YOUR_KEY" \
aider --model openai/glm-5.3 --edit-format diff --no-show-model-warningsCline
Autonomiczny agent kodujący, w VS Code i jako CLI. Testowane na Cline 3.0.74.
Dwa polecenia w Cline CLI: raz zapisujesz dostawcę, potem uruchamiasz cline. Adres bazowy, klucz i ID modelu to te same trzy wartości co wszędzie.
cline auth -p openai -k "sk-unb-YOUR_KEY" -b "https://unbottled.ai/api/pl-DE/v1" -m glm-5.3clineJaki model do jakiej roboty
Wszystkie poniżej obsługują wywołania narzędzi, bez których agent nie pracuje. ID wpisujesz do konfiguracji.
Trudne problemy
Duże refaktory, nieznane bazy kodu, wieloetapowe debugowanie. Wyższe ceny w kredytach, mniej błądzenia.
- claude-sonnet-5.5Claude Sonnet 5.5
- claude-opus-5.5Claude Opus 5.5
- gpt-6.1-solGPT-6.1 Sol
- kimi-k3.1-proKimi K3.1 Pro
- deepseek-v4-proDeepSeek V4 Pro
Tanio i szybko
Zmiany nazw, testy, boilerplate, zadania w tle. Ułamek ceny modelu z górnej półki. Dobry wybór domyślny dla agentów z dużymi promptami.
- glm-5.3GLM-5.3
- glm-5.3-flashGLM-5.3 Flash
- qwen-3.8-flashQwen 3.8 Flash
- claude-haiku-5.5Claude Haiku 5.5
Niecenzurowane
Ten sam sposób pracy agenta, bez odruchu odmowy. Analiza exploitów, narzędzia red-teamowe, potoki fikcji dla dorosłych, scrapery, przy których inne modele prawią kazania. Za to, co budujesz, odpowiadasz ty.
- glm-5.3-uncensoredGLM 5.3 Uncensored
- venice-deepseek-v4.1-flash-uncensoredDeepSeek V4.1 Flash Uncensored
- qwen-3.6-plus-uncensoredQwen 3.6 Plus Uncensored
- venice-uncensoredVenice Uncensored 1.2
Pułapki, na które wpadliśmy
Żebyś ty nie musiał.
- Skopiuj adres bazowy dokładnie, razem z /api/<locale>/v1. Bez locale dostaniesz przekierowanie, które część klientów gubi. Bez /api dostaniesz stronę HTML zamiast JSON.
- Claude Code dostaje adres bazowy bez /v1. Z /v1 wywoła /v1/v1/messages i trafi na 404.
- Używaj dokładnie ID z GET /v1/models, na przykład glm-5.3. Aider chce openai/ z przodu. Wbudowane ID Claude z Claude Code trafiają same do naszego najnowszego Claude z tej samej rodziny. Każde inne nieznane ID zwraca 404 model_not_found.
- HTTP 402 z paid_plan_required znaczy, że konto nie ma jeszcze płatnego planu. Naprawia to dowolny pakiet kredytów.
- Model bez obsługi narzędzi zwraca 400 tools_not_supported, gdy tylko agent wyśle narzędzia. Sprawdź supports_tools w GET /v1/models.
- Każdy klucz to 60 żądań na minutę. Agenci strzelają wieloma małymi wywołaniami. Jeśli trafisz na 429, daj agentowi osobny klucz.
Podłączone jednym poleceniem.
Utwórz klucz, skopiuj blok dla swojego narzędzia, wybierz model. Dokumentacja API opisuje każdy endpoint, każde pole, każdy kod błędu i każdy szczegół streamingu.