Przejdź do głównej treści

Koperta błędu

Większość odpowiedzi z błędem używa tego kształtu JSON zgodnego z OpenAI:
{
  "error": {
    "message": "Descriptive error message",
    "type": "orcarouter_api_error",
    "code": "model_not_found"
  }
}
type to szeroka kategoria, code to konkretny identyfikator. Niektóre awarie na ścieżce szybkiej (zwłaszcza 429 na poziomie workspace) zwracają tylko kod statusu HTTP z odpowiednimi nagłówkami i bez ciała JSON.

Kody statusu HTTP

StatusZnaczenieTypowa przyczyna
400Bad requestNieprawidłowe parametry, brak wymaganych pól, naruszenie schematu
401UnauthorizedBrak lub nieprawidłowy klucz API
403ForbiddenNiewystarczająca kwota lub klucz nie może wywołać tego modelu
404Not foundModel lub endpoint nie istnieje
429Too many requestsTrafiony rate limit — zobacz Limity zapytań. Odpowiedź zawsze zawiera nagłówek Retry-After.
500Internal errorBłąd po stronie OrcaRouter
502Upstream errorWszyscy upstreamowi dostawcy zawiedli (włącznie z dowolnym łańcuchem fallback)
503Service unavailableŻądany model jest tymczasowo niedostępny upstream

Typy błędów, które możesz zobaczyć w error.type

error.typeSkąd pochodzi
orcarouter_api_errorAwarie po stronie bramy (auth, kwota, rate-limit, internal)
upstream_errorUpstreamowy dostawca zwrócił błąd lub timed out
openai_errorBłąd upstreamu zgodnego z OpenAI zachowany dosłownie
claude_errorBłąd upstreamu Anthropic zachowany dosłownie
gemini_errorBłąd upstreamu Gemini zachowany dosłownie

Kody błędów, które możesz zobaczyć w error.code

To kody wystawiane przez bramę dla awarii pochodzących z OrcaRouter (nie z upstreamu):
error.codeHTTPZnaczenie
insufficient_user_quota403Kredyt konta wyczerpany. Doładuj.
model_not_found503Ten model nie jest dostępny dla Twojego konta.
model_price_error400Cennik dla tego modelu nie jest skonfigurowany. Skontaktuj się z supportem.
api_not_implemented400Endpoint lub operacja nieobsługiwana dla wybranego modelu.
bad_request_body400Ciało żądania nie mogło być sparsowane.
prompt_blocked400Polityka bezpieczeństwa dostawcy zablokowała prompt przed generacją.
sensitive_words_detected400Filtr wrażliwej treści odrzucił prompt.
Jeśli musisz odróżniać programowo, dopasowuj najpierw error.code (konkretny), a w razie braku error.type (szeroka kategoria).

Błędy w streamingu

Błędy podczas strumieniowej odpowiedzi nie mogą używać kodów statusu HTTP (status został wysłany przy otwarciu strumienia). Format zależy od endpointu:

/v1/chat/completions i /v1/responses (zgodne z OpenAI)

Błąd przychodzi jako in-band fragment data: {...}:
data: {"error":{"message":"...","type":"upstream_error","code":""}}

data: [DONE]
Parsuj każdy fragment data: jako JSON; jeśli ma pole error, traktuj strumień jako nieudany.

/v1/messages (zgodne z Anthropic)

Anthropic używa nazwanych zdarzeń SSE. Awaria strumienia przychodzi jako:
event: error
data: {"type":"error","error":{"type":"overloaded_error","message":"..."}}
Strumień kończy się event: message_stop (lub jest urwany) po zdarzeniu błędu.

Błędy fallback

Gdy ustawione jest extra_body.models, a wszystkie modele w łańcuchu zawiodą, dostaniesz 502 ze szczegółami ostatniego błędu upstream. Nagłówki odpowiedzi X-Orca-Fallback-Level i X-Orca-Fallback-Model wskazują, który fallback był próbowany, gdy łańcuch się wyczerpał. Zobacz Nagłówki odpowiedzi.