Konto
Błędy
Wszystkie kody błędów zwracane przez bramkę api14 w formacie błędów OpenAI, wraz z przyczynami i sposobami ich naprawienia.
Błędy mają strukturę błędów OpenAI, więc oficjalne SDK zamieniają je na swoje zwykłe wyjątki (APIError, RateLimitError, AuthenticationError i tak dalej). Opieraj logikę na polu code; message to czytelne wyjaśnienie po angielsku.
{
"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"
}
}
Za nieudane żądania nie płacisz. Każda odpowiedź ze statusem 4xx lub 5xx jest bezpłatna.
Kody błędów bramki
| Status | code | type | Znaczenie |
|---|---|---|---|
| 400 | model_required | invalid_request_error | Brakuje pola model. |
| 400 | invalid_json | invalid_request_error | Treść nie jest obiektem JSON. |
| 400 | invalid_body | invalid_request_error | Nie udało się odczytać treści multipart. |
| 400 | max_tokens_too_large | invalid_request_error | Próbne żądanie z playgroundu prosiło o zbyt wiele tokenów wyjściowych. |
| 401 | invalid_api_key | authentication_error | Klucza brakuje, jest nieprawidłowy lub unieważniony. |
| 402 | insufficient_balance | insufficient_quota | Twoje saldo w USD wynosi $0 lub jest niższe niż szacowany maksymalny koszt żądania (wejście, limit wyjścia, obrazy lub długość wideo). Żądanie nie zostaje wysłane. |
| 403 | model_not_allowed | permission_error | Lista dozwolonych modeli klucza nie obejmuje tego modelu. |
| 403 | plan_required | permission_error | Twój plan nie obejmuje tej kategorii modeli. |
| 404 | model_not_found | not_found_error | Identyfikator modelu jest nieznany, wyłączony lub usunięty. |
| 404 | not_found | not_found_error | Nieznany endpoint albo zadanie wideo lub generacja, które nie należą do ciebie. |
| 413 | payload_too_large | invalid_request_error | Treść żądania przekracza limit rozmiaru (domyślnie 25 MB). |
| 429 | rate_limited | rate_limit_error | Przekroczono liczbę żądań na minutę. Zwracany z Retry-After: 60. |
| 429 | daily_limit_reached | rate_limit_error | Klucz osiągnął dzienny limit wydatków w USD. |
| 409 | idempotency_conflict | api_error | Żądanie z tym Idempotency-Key zostało już wysłane. Użyj nowego klucza dla kolejnego żądania. Limity żądań. |
| 403 | site_not_allowed | permission_error | Tylko widżety: strona tej witryny nie jest na liście dozwolonych stron widżetów. Widżety. |
| 429 | widget_daily_limit | rate_limit_error | Tylko widżety: widżet lub wszystkie widżety razem osiągnęły dzienny limit wydatków w USD. |
| 429 | visitor_daily_limit | rate_limit_error | Tylko widżety: ten odwiedzający osiągnął dzienny limit żądań ustawiony w ustawieniach widżetów. |
| 502 | upstream_unavailable | api_error | Nie udało się połączyć z dostawcą upstream. |
| 4xx/502 | content_unavailable | różny | Nie udało się jeszcze pobrać treści wideo (status odzwierciedla upstream, 502, jeśli go brak). |
| 503 | maintenance | service_unavailable | Tryb konserwacji, endpointy generowania są wstrzymane, endpointy GET nadal działają. |
| 503 | not_configured | service_unavailable | Bramka nie jest jeszcze skonfigurowana. |
Błędy upstream
Błędy zwrócone przez dostawcę upstream, na przykład nieprawidłowy parametr dla konkretnego modelu, przekroczenie długości kontekstu, odmowa z powodu zasad dotyczących treści czy własny 429 dostawcy, są przekazywane z oryginalnym kodem statusu i tą samą strukturą { error: {... } }.
Co zrobić
| Status | Ponowić? | Działanie |
|---|---|---|
| 400 | Nie | Popraw treść żądania. |
| 401 | Nie | Sprawdź klucz i nagłówek Authorization: Bearer. Zobacz Uwierzytelnianie. |
| 402 | Nie | Doładuj konto lub włącz automatyczne doładowanie. |
| 403 | Nie | Użyj dozwolonego modelu, zmień listę dozwolonych modeli klucza lub przejdź na wyższy plan. |
| 404 | Nie | Sprawdź identyfikator modelu na stronie modeli. |
| 413 | Nie | Wyślij mniejszą treść lub przekaż pliki przez URL zamiast base64. |
| 429 | Później | rate_limited: odczekaj czas z Retry-After. daily_limit_reached: poczekaj do następnego dnia UTC lub podnieś limit klucza. Zobacz Limity zapytań. |
| 502 | Tak | Ponów z backoffem lub dodaj modele zapasowe. |
| 503 | Tak | Spróbuj ponownie później. |
Obsługa błędów w kodzie
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)
Błędy, które wystąpią po rozpoczęciu strumienia, docierają wewnątrz strumienia. Zobacz Streaming.