Naprawa błędów 401, 403, 429 i 5xx
Napraw problemy z API OneProvider: objaw, przyczyna i rozwiązanie dla 400, 401, 403, 404, 429, 503 i 504, logowania w Claude Code, VPN i kontaktu ze wsparciem.
Dwanaście konkretnych awarii, które widzimy co tydzień. Objaw → przyczyna → poprawka w jednej linii.
Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI:https://oneprovider.dev/docs/llms.txt Zanim zaczniesz Uruchom curl -s https://api.oneprovider.dev/v1/models -H "x-api-key: $ANTHROPIC_API_KEY". Jeśli zwróci niepustą listę modeli w JSON, połączenie sieciowe i uwierzytelnianie działają — problem dotyczy konkretnego zapytania, a nie infrastruktury. Najczęstsze pytania
Czy muszę się zalogować w Claude Code? A co z 401 i „Auth conflict”
Nie. Klucz OneProvider działa bez konta Claude. W Claude Code ustaw ANTHROPIC_BASE_URL i ANTHROPIC_AUTH_TOKEN (klucz jest wysyłany jako Authorization: Bearer). Ta zmienna ma pierwszeństwo przed zapisanym logowaniem i przed innymi zmiennymi, i nie wymaga zatwierdzania. Nasza brama przyjmuje też ANTHROPIC_API_KEY (nagłówek x-api-key), ale w trybie interaktywnym Claude Code raz prosi o zatwierdzenie takiego klucza, a odrzucony po cichu ignoruje (włącz go ponownie w /config → Use custom API key).
Jeśli widzisz ekran logowania, 401 Invalid API key albo Auth conflict, sprawdź krok po kroku:
- Uruchom
/status: powinien pokazaćAnthropic base URLOneProvider oraz wierszAuth tokenlubAPI keyz nazwą twojej zmiennej. WierszLogin methodz kontem claude.ai oznacza, że zmienna nie dotarła do sesji. Auth conflict(jednocześnie logowanie claude.ai i klucz): uruchom/logout; twoje zmienne zostaną.401 Invalid API key: obcyANTHROPIC_AUTH_TOKEN(token z innej usługi) nadpisuje twój klucz albo wartość ma przypadkowy cudzysłów lub spację. Ustaw pełny klucz OneProvider, bez cudzysłowów.- Ekran logowania nie znika, mimo że zmienne są w
.claude/settings.jsonprojektu: ten blok jest czytany po pierwszej konfiguracji, więc umieść zmienne w powłoce lub w~/.claude/settings.json.
# macOS / Linux: what is actually set
env | grep -E 'ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY)' | sed -E 's/(sk-.{4}).*/\1.../'
grep -nE 'ANTHROPIC_(AUTH_TOKEN|API_KEY)' ~/.zshrc ~/.bashrc 2>/dev/null Czy muszę się zalogować do ChatGPT, żeby używać Codex CLI?
Nie. Codex działa na samym kluczu, gdy provider oneprovider w ~/.codex/config.toml jest aktywny (env_key = "ONEPROVIDER_API_KEY"). Prośba o zalogowanie przez ChatGPT albo „You've hit your usage limit” oznacza, że provider nie jest aktywny i zapytanie poszło do ChatGPT.
Sprawdź po kolei: wiersze model_provider i model stoją na samej górze pliku, nad każdą [table]; Codex jest całkowicie zrestartowany, a zadanie nowe; klucz jest wyeksportowany w tym samym terminalu:
codex logout
export ONEPROVIDER_API_KEY="sk-..."
# quick test without editing the file:
codex -c model_provider=oneprovider Pełny opis krok po kroku na stronie Codex (OpenAI) .
Czy potrzebuję VPN? Czy są ograniczenia regionalne?
VPN nie jest potrzebny — OneProvider nie ma ograniczeń regionalnych. Endpoint api.oneprovider.dev jest dostępny na całym świecie i nie blokuje ruchu geograficznie.
Co gorsza, VPN i proxy VLESS często psują połączenie z API na dwa sposoby:
- Strumień SSE jest buforowany w proxy — strumień urywa się w połowie tokena.
- Negocjacja HTTP/2 + ALPN zawodzi na przekaźnikach — klient widzi
connection reset.
Jeśli widzisz urwane strumienie, connection reset albo losowe timeouty, wyłącz VPN / proxy VLESS i spróbuj ponownie. Po naszej stronie strumieni nie buforujemy.
Błąd parsowania JSON w konfiguracji (albo 429)
Najczęstsza przyczyna to „ozdobne” cudzysłowy (“ ”) w konfiguracji JSON. Pojawiają się przy kopiowaniu z komunikatora, Notion, Dokumentów Google lub przeglądarki, która automatycznie zamienia proste cudzysłowy ASCII na typograficzne. Parsery JSON akceptują tylko zwykły ASCII ".
Czasem zepsuta konfiguracja nie objawia się jako „JSON parse error”, lecz jako 429: klient bierze brak odpowiedzi za limit zapytań. Poprawka jest ta sama:
- Ręcznie zamień każdy
“”na". - Kopiuj konfiguracje prosto z tej dokumentacji — cudzysłowy są tu już poprawne.
- Sprawdź poleceniem
cat -v config.jsonlubjq . config.json— oba wskażą błędny bajt.
# Quick check: jq fails on the first smart quote
jq . ~/.claude/settings.json
# Auto-replace smart quotes with straight quotes
sed -i.bak $'s/[\u201c\u201d]/"/g' ~/.claude/settings.json Tabela objawów
| Objaw | Prawdopodobna przyczyna | Poprawka |
|---|---|---|
| 401 authentication_error przy każdym żądaniu | Klucz nie jest ustawiony, ma błędny format albo zawiera przypadkowy znak nowej linii lub cudzysłów po skopiowaniu. | echo "${ANTHROPIC_API_KEY:?missing}" | wc -c # oczekiwane 68 (sk- + 64 znaki hex + znak nowej linii) |
| 429 „Insufficient balance on this API key” | Klucz nie ma już salda. Ponawianie nie pomoże: odpowiedź ma nagłówek x-should-retry: false. | curl -sH "Authorization: Bearer $ANTHROPIC_API_KEY" https://api.oneprovider.dev/v1/dashboard/balance # potem doładuj swój Panel (bot lub app.oneprovider.dev) |
| 403 permission_error „API key expired” | Klucz stracił ważność. | Przedłuż klucz albo utwórz nowy w swoim Panelu (strona Klucze). |
| 404 „The requested API endpoint does not exist” | Błędny base URL: brakuje /v1 albo jest podwojone (/v1/v1). | Klienty OpenAI: https://api.oneprovider.dev/v1. Claude Code i SDK Anthropic: https://api.oneprovider.dev (bez /v1). |
| 429 rate_limit_error w skokach | Zbyt wiele zapytań w krótkim czasie. | Przestrzegaj Retry-After i ponawiaj z rosnącą przerwą. Zmniejsz liczbę równoległych zapytań. |
| 400 „Model X is not available on this API key” | Plan twojego klucza nie obejmuje tego modelu albo nazwa modelu jest nieaktualna. | Wybierz model z GET /v1/models lub z tabeli na /docs/api/models. |
| 503 „Service temporarily unavailable; retry later” | Chwilowa awaria po naszej stronie. Twój klucz i zapytanie są w porządku. | Ponawiaj z rosnącą przerwą: 1 s, 2 s, 4 s, do minuty. |
| 504 „Service timed out; retry later” przy wywołaniu bez streamingu | Długa generacja (duży kontekst + narzędzia) nie zaczęła odpowiadać w ciągu 6 minut albo trwała dłużej niż 10 minut. | Przekaż stream:true: strumień zaczyna odpowiadać od razu. Jeśli jedna odpowiedź potrzebuje ponad 10 minut, podziel zadanie. |
| Wywołanie narzędzia zastąpione opisem słownym („I would have called X...”) | Klient wysłał tool_choice:{any|tool} → API zamieniło to na auto + podpowiedź; model jej nie uwzględnił. | Doprecyzuj prompt użytkownika („Use the X tool to do Y”) albo przełącz się na mocniejszy model. |
| OPENAI_API_KEY nadpisuje mój klucz OneProvider | Stary export w pliku rc twojej powłoki (~/.zshrc, ~/.bashrc) przesłania nową wartość. | unset OPENAI_API_KEY w tej powłoce, potem grep -nE 'OPENAI_API_KEY' ~/.zshrc i usuń wpis. |
| Codex prosi o zalogowanie przez ChatGPT albo pisze „You've hit your usage limit” | Provider oneprovider nie jest aktywny: zapytanie poszło do ChatGPT, a nie do nas. | model_provider = "oneprovider" na samej górze ~/.codex/config.toml (nad każdą [table]), klucz w ONEPROVIDER_API_KEY, nowe zadanie lokalne. Zobacz /docs/clients/codex. |
| Cursor / Claude Code: strumieniowana odpowiedź urywa się w połowie tokena | Prawie zawsze winne jest proxy sieciowe lub VPN po stronie klienta, które buforuje fragmenty SSE. | Wyłącz proxy/VPN i spróbuj ponownie. Fragmenty wysyłamy, gdy tylko są gotowe, bez buforowania. |
Diagnostyka jednym poleceniem
Jeśli tabela objawów nie obejmuje twojego przypadku, zbierz te trzy dowody:
bash# 1. Confirm reach + auth
curl -sS -o /dev/null -w "HTTP %{http_code} total %{time_total}s\n" \
https://api.oneprovider.dev/v1/models -H "x-api-key: $ANTHROPIC_API_KEY"
# 2. Reproduce the failing call with -v (verbose headers)
curl -sv https://api.oneprovider.dev/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":"hi"}]}'
# 3. Check your current balance (also shown in the cabinet: the @oneprovider_robot bot or app.oneprovider.dev)
curl -s https://api.oneprovider.dev/v1/dashboard/balance \
-H "Authorization: Bearer $ANTHROPIC_API_KEY" Kiedy eskalować
Wyślij trzy powyższe wyniki + pierwsze 8 znaków klucza + znacznik czasu UTC do @Oneproviderhelpbot . To wystarczy, byśmy w kilka minut znaleźli twoje zapytanie w logach. O tym, czego nie potrzebujemy (i o co nigdy nie prosimy), przeczytasz w Uzyskaj wsparcie .
Ostatnia aktualizacja: 2026-11-08 Widzisz błąd? @Oneproviderhelpbot