Hoppa till innehållet

Fel

Förstå Webways felsvar, statuskoder och hur du gör säkra återförsök.

Fel använder ett litet JSON-omslag som OpenAI-kompatibla SDK:er kan tolka:

json
{
  "error": {
    "message": "insufficient credit",
    "type": "insufficient_quota",
    "code": "insufficient_quota"
  }
}

type är det övergripande värde som klientbibliotek växlar på. code är mer exakt och skiljer sig från type endast när det är en leverantör som har fallerat.

Omslaget följer slutpunkten. /v1/messages returnerar Anthropics format, så Anthropic-SDK:er och Claude Code kan tolka det och använda sin egen logik för återförsök utan specialhantering för denna gateway:

json
{
  "type": "error",
  "error": {
    "type": "overloaded_error",
    "message": "the provider is over capacity, retry shortly (request 4f2ab910)",
    "code": "overloaded"
  }
}

Statuskoder

Status Betydelse Försöka igen?
400 Ogiltig JSON, ogiltiga fält eller parametrar Nej, korrigera begäran
401 API-nyckeln saknas, är ogiltig, har gått ut eller har återkallats Nej, byt ut API-nyckeln
402 Ditt saldo räcker inte för begäran Efter att du har fyllt på saldot
403 Modellen kräver din egen API-nyckel för leverantören Nej, lägg till en i kontrollpanelen
404 Modellen eller slutpunkten hittades inte Nej, kontrollera ID:t och sökvägen
413 Begärans innehåll är för stort Nej, minska datamängden
429 Frekvensgränsen har nåtts Ja, vänta och försök igen
502 / 503 Leverantören är inte tillgänglig Ja, använd backoff
504 Leverantörens tidsgräns överskreds Ja, använd backoff

402 gäller alltid enbart ditt saldo. Ett faktureringsproblem mellan Webway och en leverantör är ett 502-fel, eftersom det inte är något du kan åtgärda.

Leverantörsfel

När felet kommer från en leverantör och inte från din begäran anger code vilket fel det var:

code Status Betydelse Försöka igen?
model_unavailable 502 Leverantören tillhandahåller inte den här modellen. Det är vårt ansvar att åtgärda Nej
context_length_exceeded 400 Begäran är längre än modellens kontextfönster Nej
content_filtered 400 Leverantörens säkerhetslager avvisade begäran Nej
invalid_request 400 Leverantören avvisade begäran Nej
rate_limited 429 Frekvensbegränsad hos leverantören Ja
overloaded 503 Leverantören saknar ledig kapacitet Ja
timeout 504 Leverantören svarade inte i tid Ja
transport_error 502 Anslutningen till leverantören misslyckades Ja
upstream_error 502 Oklassificerat. Utreds alltid Kanske

Feltext från leverantören skickas aldrig vidare. Uppströmstjänster beskriver fel med sin egen terminologi, ibland på ett annat språk, ofta med namn på infrastruktur som inte är din, och texten kan ändras utan förvarning. Varje fel klassificeras enligt uppsättningen ovan och skrivs om, så meddelandet du får är tillräckligt stabilt att basera loggning på.

Varje meddelande avslutas med ett Webway-begärande-ID. Uppge det i supportärenden: det är identifieraren som faktiskt går att slå upp.

Fel under strömning

En begäran kan misslyckas efter att svarshuvudena redan har skickats. Då går statuskoden inte längre att ändra, så felet levereras som en händelse i strömmen med samma protokoll som resten av den – event: error/v1/messages, en error-händelse på /v1/responses, ett error-segment på /v1/chat/completions. code-värdena är desamma som i tabellen.

Betrakta en ström som avslutas utan sin avslutande händelse som ett fel, inte som ett kort svar.

Regler för återförsök

Försök endast igen vid 429 och tillfälliga 5xx-svar. Använd exponentiell backoff med jitter, begränsa antalet försök och följ Retry-After när det finns.

Försök inte skicka om oförändrade 400-, 401-, 402-, 403-, 404- eller 413-begäranden. Samma begäran kommer att misslyckas igen.

Begäranden som avvisas innan leverantörens arbete börjar debiteras inte. En begäran som misslyckas efter att genereringen har börjat kan debiteras för de token som redan har producerats, även om du avbryter den mitt i strömningen.