Account
Fouten
Alle foutcodes van de api14 gateway in het OpenAI-foutformaat, met HTTP-status, betekenis en hoe je ze afhandelt of oplost in je code.
Fouten gebruiken de foutstructuur van OpenAI, zodat de officiële SDK's ze omzetten in hun gewone exceptions (APIError, RateLimitError, AuthenticationError enzovoort). Baseer je logica op code; message is een leesbare uitleg in het Engels.
{
"error": {
"message": "This request may cost up to $0.0123 but your balance is $0.0040. Add funds at /pricing.",
"type": "insufficient_quota",
"code": "insufficient_balance"
}
}
Mislukte requests worden niet in rekening gebracht. Een response met een 4xx- of 5xx-status kost niets.
Foutcodes van de gateway
| Status | code | type | Betekenis |
|---|---|---|---|
| 400 | model_required | invalid_request_error | Het veld model ontbreekt. |
| 400 | invalid_json | invalid_request_error | De body is geen JSON-object. |
| 400 | invalid_body | invalid_request_error | De multipart-body kon niet worden gelezen. |
| 400 | max_tokens_too_large | invalid_request_error | Een proefrequest in de playground vroeg om te veel output-tokens. |
| 401 | invalid_api_key | authentication_error | De key ontbreekt, is ongeldig of is ingetrokken. |
| 402 | insufficient_balance | insufficient_quota | Je USD-saldo is $0 of lager dan de geschatte maximale kosten van het verzoek (invoer, uitvoerlimiet, afbeeldingen of videoduur). Het verzoek wordt niet verstuurd. |
| 403 | model_not_allowed | permission_error | De model-allowlist van de key bevat dit model niet. |
| 403 | plan_required | permission_error | Je abonnement omvat deze modelcategorie niet. |
| 404 | model_not_found | not_found_error | De model-id is onbekend, uitgeschakeld of verwijderd. |
| 404 | not_found | not_found_error | Onbekend endpoint, of een videojob of generatie die niet van jou is. |
| 413 | payload_too_large | invalid_request_error | De request-body overschrijdt de maximale grootte (standaard 25 MB). |
| 429 | rate_limited | rate_limit_error | Aantal requests per minuut overschreden. Wordt meegestuurd met Retry-After: 60. |
| 429 | daily_limit_reached | rate_limit_error | De key heeft zijn dagelijkse uitgavelimiet in USD bereikt. |
| 409 | idempotency_conflict | api_error | Er is al een verzoek met deze Idempotency-Key verstuurd. Gebruik een nieuwe sleutel voor een ander verzoek. Rate limits. |
| 403 | site_not_allowed | permission_error | Alleen widgets: de site van de pagina staat niet tussen je toegestane widget-sites. Widgets. |
| 429 | widget_daily_limit | rate_limit_error | Alleen widgets: de widget, of alle widgets samen, hebben de dagelijkse bestedingslimiet in USD bereikt. |
| 429 | visitor_daily_limit | rate_limit_error | Alleen widgets: deze bezoeker heeft de dagelijkse verzoeklimiet uit de widgetinstellingen bereikt. |
| 502 | upstream_unavailable | api_error | De upstream-provider was niet bereikbaar. |
| 4xx/502 | content_unavailable | wisselend | De content van een video kon nog niet worden opgehaald (de status volgt de upstream, 502 als die er niet is). |
| 503 | maintenance | service_unavailable | Onderhoudsmodus, generatie-endpoints zijn gepauzeerd, GET-endpoints werken nog. |
| 503 | not_configured | service_unavailable | De gateway is nog niet geconfigureerd. |
Upstream-fouten
Fouten van de upstream-provider, bijvoorbeeld een ongeldige parameter voor een specifiek model, een te lange context, een weigering op basis van het contentbeleid of een eigen 429 van de provider, worden doorgegeven met hun oorspronkelijke statuscode en dezelfde { error: {... } }-structuur.
Wat te doen
| Status | Opnieuw proberen? | Actie |
|---|---|---|
| 400 | Nee | Corrigeer de request-body. |
| 401 | Nee | Controleer de key en de Authorization: Bearer-header. Zie Authenticatie. |
| 402 | Nee | Stort tegoed of zet automatisch opwaarderen aan. |
| 403 | Nee | Gebruik een toegestaan model, pas de allowlist van de key aan, of upgrade je abonnement. |
| 404 | Nee | Controleer de model-id op de modellenpagina. |
| 413 | Nee | Stuur een kleinere body, of geef bestanden mee via een URL in plaats van base64. |
| 429 | Later | rate_limited: wacht de tijd uit Retry-After af. daily_limit_reached: wacht tot de volgende UTC-dag of verhoog de limiet van de key. Zie Rate limits. |
| 502 | Ja | Probeer opnieuw met backoff, of voeg model-fallbacks toe. |
| 503 | Ja | Probeer het later opnieuw. |
Fouten afhandelen in code
import OpenAI from 'openai'
const client = new OpenAI({ baseURL: 'https://api14.com/api/v1', apiKey: process.env.API14_API_KEY })
try {
await client.chat.completions.create({ model: 'openai/gpt-5-mini', messages: [{ role: 'user', content: 'Hi' }] })
} catch (err) {
if (err instanceof OpenAI.APIError) {
console.error(err.status, err.code, err.message)
if (err.code === 'insufficient_balance') {
// prompt the user to add funds
}
} else {
throw err
}
}
from openai import OpenAI, APIStatusError
client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...")
try:
client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
except APIStatusError as e:
print(e.status_code, e.code, e.message)
Fouten die optreden nadat een stream is begonnen, komen binnen de stream binnen. Zie Streaming.