Platform

Fouten

Fouten worden teruggestuurd als JSON in het formaat van het endpoint dat je hebt aangeroepen, met een leesbare melding en, bij endpoints in OpenAI-formaat, een vaste code voor programma's.

Het formaat

Endpoints in OpenAI-formaat
{
"error": {
"message": "This API key can't use `gpt-6-astra`. It's limited to gpt-6-sol. Change that at https://zurelay.com/app/keys.",
"type": "permission_error",
"param": "model",
"code": "model_not_allowed"
}
}

Bij /v1/messages worden dezelfde fouten teruggestuurd in het formaat van Anthropic, dat geen code bevat: gebruik de HTTP-status en error.type: { "type": "error", "error": { "type": "...", "message": "..." } }. Elk antwoord op een chat-, afbeeldings- of videoverzoek, met of zonder fout, bevat een x-request-id-header.

Codes

StatusCodeWat je kunt doen
400invalid_requestPas het verzoek aan: de melding geeft aan wat er mis is en param waar.
400unsupported_contentHet model kan dit soort bestand niet lezen. Verwijder het of kies een model dat dat wel kan.
400invalid_urlEen link in het verzoek kon niet worden gedownload. De melding bevat de ontvangen status.
400invalid_imageEen invoerafbeelding kon niet worden gebruikt (type, grootte of link).
400image_not_generatedHet model heeft de prompt geweigerd. Niet in rekening gebracht.
400context_length_exceededHet model geeft aan dat het gesprek te lang is. Kort het in of kies een model met een langere context.
400max_tokens_reachedEen antwoord via /v1/messages zonder streaming bereikte je max_tokens midden in een toolaanroep en is dus geen volledig bericht. Wat is gegenereerd, wordt in rekening gebracht. Verstuur het verzoek opnieuw met een hogere max_tokens.
401missing_api_keyStuur de sleutel mee in Authorization of x-api-key.
401invalid_api_keyDe sleutel is onjuist of ingetrokken.
401expired_api_keyMaak een nieuwe sleutel aan.
402insufficient_quotaJe saldo, min het bedrag dat je lopende verzoeken hebben gereserveerd, is niet genoeg voor dit verzoek, of raakte op tijdens een antwoord. Voeg tegoed toe onder Facturering of vraag om minder uitvoer met een lagere max_tokens. Als automatisch opwaarderen is gestart, staat dat in de melding: probeer het een paar seconden later opnieuw.
402key_budget_exceededHet verzoek kan het maandbudget van de sleutel overschrijden, inclusief de lopende verzoeken, of heeft het budget onderweg bereikt. Verhoog het budget of wacht tot volgende maand.
402key_daily_budget_exceededHetzelfde geldt voor het dagbudget van de sleutel. Verhoog het of wacht tot middernacht UTC.
403model_not_allowedDe sleutel mag dit model niet gebruiken.
403ip_not_allowedDe sleutel werkt alleen vanaf andere adressen.
404model_not_foundControleer de model-ID op de modellenpagina.
404unknown_urlDit endpoint bestaat niet. Controleer het pad en de basis-URL.
404video_not_foundGeen video met die ID in deze werkruimte.
404image_not_foundGeen afbeeldingsverzoek met die ID in deze werkruimte (GET /v1/images/{id}, voor verzoeken met een callback_url).
409video_not_readyDe video is nog niet klaar: blijf de status opvragen totdat deze completed is.
409video_failedDe video is mislukt, dus er is niets om te downloaden. De foutmelding geeft aan waarom.
410video_expiredDe video is verwijderd, via de Bibliotheek of na 30 dagen.
413too_largeHet verzoek of een bestand overschrijdt de limiet. Stuur grote bestanden als links.
429rate_limit_exceededWacht het aantal seconden uit retry-after en probeer het opnieuw.
429concurrency_limit_exceededEr lopen al 32 verzoeken tegelijk in de werkruimte. Probeer het opnieuw na het aantal seconden uit retry-after, zodra er een is afgerond.
500server_errorEr is aan onze kant iets misgegaan. Probeer het opnieuw.
502stream_interruptedVerstuurd als laatste event van een afgebroken stream. Wat vóór de onderbreking is gestreamd, wordt in rekening gebracht, daarna niets; probeer het opnieuw.
503model_unavailableHet model is momenteel niet beschikbaar. Probeer het opnieuw na het aantal seconden uit retry-after of schakel slimme routering in. Zonder retry-after en met x-should-retry: false is het model wel beschikbaar, maar geeft het bij dit verzoek telkens een foutmelding: verstuur het niet ongewijzigd opnieuw.
503server_restartingZurelay herstart de machine die je verzoek verwerkte. Probeer het meteen opnieuw: een andere machine neemt het over. Niet in rekening gebracht, tenzij er al een stream was gestart: dan wordt wat je hebt ontvangen in rekening gebracht, net als bij een afgebroken stream.
503storage_unavailableEr is een afbeelding gemaakt, maar die kon niet worden afgeleverd. Niet in rekening gebracht; probeer het opnieuw.
503service_unavailableEen kortstondig probleem aan onze kant. Probeer het opnieuw.

Opnieuw proberen

  • Probeer 429 en 503 opnieuw na het aantal seconden in de retry-after-header (of met exponentieel oplopende wachttijden), tenzij het antwoord x-should-retry: false aangeeft.
  • Probeer andere 4xx-fouten niet ongewijzigd opnieuw: ze mislukken op dezelfde manier.
  • Mislukte verzoeken zijn gratis, dus opnieuw proberen kost niets totdat een verzoek slaagt. Een stream die onderweg afbreekt, wordt in rekening gebracht voor wat is afgeleverd, en de zeldzame 503 met x-should-retry: false voor de invoer (zie Facturering).
  • De officiële SDK's van OpenAI en Anthropic proberen bij de juiste fouten al automatisch opnieuw.

Fouten tijdens het streamen

Fouten die een model teruggeeft over je verzoek zelf (een parameter die het niet ondersteunt, een prompt die te lang is), worden doorgegeven met de eigen melding en code van het model, als een 400 van 422.

Fouten tijdens het streamen

Zodra een stream is gestart, kan een fout niet meer als HTTP-status worden doorgegeven. Je krijgt in plaats daarvan een laatste foutevent (in het formaat van het endpoint) en de stream stopt. De invoer en de uitvoer die je daarvoor hebt ontvangen, worden in rekening gebracht, daarna niets. Dit komt zelden voor: de meeste problemen worden vóór het eerste token opgevangen, waarna het verzoek opnieuw wordt geprobeerd.

Hetzelfde soort event beëindigt een stream als het saldo of het sleutelbudget onderweg opraakt, met insufficient_quota, key_budget_exceeded of key_daily_budget_exceeded. Een verzoek zonder streaming waarbij het saldo of budget onderweg opraakt, geeft terug wat er is geschreven, afgekapt zoals een antwoord dat max_tokens heeft bereikt (finish_reason: "length", of stop_reason: "max_tokens" bij /v1/messages), met een x-zurelay-stopped-header die de code vermeldt.

Vragen, of ontbreekt er iets? Vraag het ons supportteam en je krijgt antwoord per e-mail, meestal binnen een minuut.