Kody błędów
Odczytaj każdy błąd OneProvider: znaczenie kodu statusu, dokładny komunikat, limity czasu, błędy w strumieniu i kiedy można bezpiecznie ponowić zapytanie.
Co oznacza każdy kod statusu, jaki dokładnie komunikat zobaczysz i co robić dalej.
Wszystkie modele, możliwości i ceny Indeks dokumentacji dla agentów AI:https://oneprovider.dev/docs/llms.txt Struktura błędu
Każdy błąd to JSON o takiej samej strukturze na każdym endpoincie (/v1/messages, /v1/chat/completions, /v1/responses, /v1/models). Błąd salda zawiera dodatkowo code:
{
"type": "error",
"error": {
"type": "insufficient_balance",
"code": "insufficient_quota",
"message": "Insufficient balance on this API key. Top up: dashboard.oneprovider.dev"
}
} SDK OpenAI jak zwykle czytają error.message z tej treści, więc w każdym kliencie zobaczysz ten sam tekst.
Kody statusu
| Status | error.type | Komunikat i znaczenie | Co robić |
|---|---|---|---|
| 400 | invalid_request_error | Zapytanie jest źle sformułowane: niepoprawny JSON, brakujące pole albo niedozwolona wartość. Komunikat wskazuje problem. | Popraw to, na co wskazuje komunikat, i wyślij ponownie. Ponowne wysłanie bez zmian zwróci ten sam błąd. |
| 400 | invalid_request_error | prompt is too long: N tokens > M maximum Dane wejściowe są większe niż okno kontekstu tego modelu. N i M zależą od modelu. | Skróć historię lub załączniki albo wybierz model z większym kontekstem. Claude Code w takiej sytuacji sam kompaktuje rozmowę. |
| 400 | invalid_request_error | Model X is not available on this API key Plan twojego klucza nie obejmuje tego modelu. | Wybierz model z listy GET /v1/models albo ze strony Cennik. |
| 401 | authentication_error | Invalid API key API key is required Klucza brakuje, zawiera literówkę albo został wysłany w niewłaściwym nagłówku. | Wyślij sam klucz sk-…, bez cudzysłowów i spacji, w x-api-key lub Authorization: Bearer. |
| 401 | authentication_error | API key is disabled Klucz jest wyłączony albo konto jest nieaktywne. | Sprawdź klucz w swoim Panelu (strona Klucze) lub napisz do @Oneproviderhelpbot. |
| 403 | permission_error | API key expired Klucz stracił ważność. | Przedłuż klucz albo utwórz nowy w swoim Panelu (strona Klucze). |
| 404 | not_found_error | The requested API endpoint does not exist Zwykle to błędny base URL, na przykład /v1/v1 w ścieżce. | Claude Code i SDK Anthropic: https://api.oneprovider.dev. SDK OpenAI i klienty zgodne z OpenAI: https://api.oneprovider.dev/v1. |
| 413 | invalid_request_error | request body exceeds size limit Treść zapytania jest większa niż 32 MB. | Wyślij mniejsze lub mniej obrazów i plików albo podziel pracę na kilka zapytań. |
| 429 | insufficient_balance | Insufficient balance on this API key. Top up: dashboard.oneprovider.dev Saldo Panelu albo limit wydatków klucza zostały wyczerpane. Treść odpowiedzi zawiera error.code insufficient_quota, a odpowiedź ma nagłówek x-should-retry: false. | Nie ponawiaj. Doładuj Panel (bot lub app.oneprovider.dev) albo podnieś limit klucza, a potem wyślij zapytanie ponownie. |
| 429 | rate_limit_error | Rate limit exceeded; retry later Zbyt wiele zapytań w krótkim czasie. Może zawierać nagłówek Retry-After. | Poczekaj tyle sekund, ile podaje Retry-After, jeśli jest; w przeciwnym razie ponawiaj z rosnącą przerwą. Jeśli problem się powtarza, wysyłaj mniej zapytań równolegle. |
| 500, 502 | server_error | Service temporarily unavailable; retry later Chwilowa awaria po naszej stronie. | Ponawiaj z rosnącą przerwą. |
| 503 | server_error | Service temporarily unavailable; retry later Stan przejściowy. Z twoim kluczem i zapytaniem wszystko w porządku. | Ponawiaj z rosnącą przerwą; zwykle mija w ciągu minuty. |
| 504 | server_error | Service timed out; retry later Zapytanie przekroczyło limit czasu (zobacz niżej). | Ponów. Przy długich odpowiedziach włącz stream: true. |
Limity czasu
- Zapytanie bez streamingu musi zacząć odpowiadać w ciągu 6 minut.
- Każde zapytanie, także ze streamingiem, ma limit 10 minut.
- Przy długich generacjach użyj
stream: true: strumień zaczyna odpowiadać od razu. Jeśli jedna odpowiedź potrzebuje ponad 10 minut, podziel zadanie.
Błędy wewnątrz strumienia
Gdy strumień już ruszył, status to już 200, więc błąd przychodzi jako zdarzenie. Messages API wysyła ramkę event: error z tą samą treścią błędu; Responses API wysyła zdarzenie response.failed z przyczyną w response.error.
event: error
data: {"type":"error","error":{"type":"server_error","message":"Service temporarily unavailable; retry later"}} Traktuj go jak odpowiadający mu kod statusu. Częściowa odpowiedź jest niekompletna: jeśli błąd nadaje się do ponowienia, wyślij całe zapytanie jeszcze raz.
Kiedy ponawiać
- Najpierw popraw, nie ponawiaj: 400, 401, 403, 404, 413 oraz 429 z
insufficient_balance. To samo zapytanie kończy się tak samo, dopóki nie zmienisz zapytania, klucza lub salda. - Ponawiaj z rosnącą przerwą: 429
rate_limit_error, 500, 502, 503, 504. Na przykład 1 s, 2 s, 4 s i dalej do minuty, z niewielkim losowym jitterem. Jeśli jestRetry-After, czekaj co najmniej tyle. - Przestrzegaj
x-should-retry: false. Oficjalne SDK Anthropic i OpenAI już to robią, więc nie ponawiają błędu salda. - Sprawdź, ile zostało, przez
GET /v1/dashboard/balance(zobacz Zużycie i rozliczenia ).
Jak reagują popularne klienty
- Claude Code. Pokazuje komunikat w sesji. Po błędzie 401 Claude Code 2.1.231 i nowszy usuwa zapisany klucz: sprawdź klucz i base URL (https://api.oneprovider.dev, bez /v1), a potem ustaw klucz ponownie. Przy błędzie salda od razu się zatrzymuje: doładuj i kontynuuj. Przy „prompt is too long” sam kompaktuje rozmowę. Przejściowe błędy 429 i 5xx ponawia automatycznie.
- Cursor. Pokazuje tekst błędu na czacie. Sprawdź klucz API i base URL https://api.oneprovider.dev/v1 w ustawieniach modelu, doładuj, jeśli komunikat dotyczy salda, a potem wyślij ponownie.
- Codex. Pokazuje błąd salda jako „Quota exceeded” i zatrzymuje się: doładuj i uruchom polecenie ponownie. Błędy przejściowe najpierw sam ponawia.
- Cline. Pokazuje błąd w zadaniu z przyciskiem Retry. Najpierw popraw klucz, base URL lub saldo, a potem naciśnij Retry.
- Continue. Pokazuje tekst błędu w panelu czatu. Usuń przyczynę i wyślij wiadomość ponownie.