Używamy plików cookie. Pliki cookie i pamięć przeglądarki pozwalają utrzymać logowanie i zapamiętać Twoje preferencje. Za Twoją zgodą mierzymy też, jak korzystasz ze strony. W każdej chwili możesz . Zobacz naszą politykę cookie.

Rozwiązywanie problemów

Konto

Rozwiązywanie problemów

Rozwiązania typowych problemów z API: uwierzytelnianie, saldo, dostęp do modeli, limity zapytań, timeouty, streaming, CORS i adres bazowy.

Większość problemów objawia się statusem HTTP i polem code w ciele błędu. Znajdź kod poniżej; pełną listę zawiera Błędy. Nieudane żądania (dowolne 4xx lub 5xx) nigdy nie są rozliczane.

{ "error": { "message": "...", "type": "authentication_error", "code": "invalid_api_key" } }

401 invalid_api_key

Klucz jest nieobecny, ma zły format lub został unieważniony.

  • Wyślij go jako Authorization: Bearer sk-api14-.... SDK OpenAI robią to z apiKey / api_key; w curl sprawdź, czy $API14_API_KEY jest faktycznie ustawione w powłoce, z której uruchamiasz polecenie (echo ${API14_API_KEY:0:9} powinno wypisać sk-api14-).
  • Uważaj na zbłąkane cudzysłowy lub znaki nowej linii, gdy klucz pochodzi z pliku .env.
  • Pozostawiony w środowisku OPENAI_API_KEY może nadpisać klucz, którego chciałeś użyć. Przekaż klucz jawnie, aby to wykluczyć.
  • Unieważniony klucz przestaje działać natychmiast. Klucze są pokazywane tylko raz, więc jeśli go zgubiłeś, utwórz nowy w kluczach API i unieważnij stary.

Zobacz Uwierzytelnianie.

402 insufficient_balance

Twoje saldo w USD wynosi 0 USD lub (dla wideo) jest niższe niż szacowany koszt zadania. Żądania pozostają zablokowane, dopóki nie doładujesz konta, ponawianie nie pomaga.

  • Sprawdź saldo przez GET /credits lub w Billing. Zobacz Saldo i informacje o kluczu.
  • Doładuj konto lub włącz automatyczne doładowanie. Plany co miesiąc dodają wliczone zużycie do tego samego salda. Zobacz Ceny i rozliczenia.
  • W długich zadaniach traktuj ten kod jako krytyczny i zatrzymaj się, zamiast pozwalać ponowieniom SDK kręcić się w kółko.

403 model_not_allowed lub plan_required

  • model_not_allowed: klucz ma listę dozwolonych modeli, która nie zawiera tego identyfikatora. Edytuj listę klucza w kluczach API lub użyj klucza bez niej. Przyrostki wariantów się liczą: sprawdź, czy dokładny wysyłany identyfikator jest dozwolony.
  • plan_required: Twój plan nie obejmuje tej kategorii modeli. Standardowe plany obejmują wszystkie kategorie; sprawdź swój plan na stronie cennika.

404 model_not_found lub not_found

  • model_not_found: identyfikator modelu jest nieznany, wyłączony lub usunięty. Identyfikatory zawierają prefiks dostawcy: openai/gpt-5-mini, a nie gpt-5-mini. Dokładny identyfikator sprawdzisz przez GET /models lub GET /models/{id} (klucz nie jest potrzebny). Zobacz Identyfikatory modeli i warianty.
  • not_found: ścieżka nie istnieje albo zadanie wideo lub identyfikator generacji nie należy do Ciebie. Zwykle oznacza to zły adres bazowy (zobacz niżej). Wyszukiwanie generacji tuż po żądaniu może też zwrócić 404 przez kilka sekund, zanim rekord się pojawi.

Zły adres bazowy

Adres bazowy to dokładnie:

https://api14.com/api/v1

Typowe błędy:

UstawiaszSkutek
https://api14.com/v1 lub https://api14.comŻądania trafiają do strony WWW, a nie do API: odpowiedzi HTML, 404 lub błędy CORS w przeglądarce.
https://api14.com/api/v1/chat/completions jako bazaSDK dopisuje ścieżkę ponownie. Ustaw tylko bazę.
https://api.openai.com/v1 (domyślny)Twój klucz api14 jest odrzucany przez OpenAI. Ustaw bazowy adres URL w kodzie lub przez OPENAI_BASE_URL.

Osobliwości bibliotek: ruby-openai sam dodaje v1, więc jego uri_base to https://api14.com/api (Ruby); openai-go oczekuje końcowego ukośnika, https://api14.com/api/v1/ (Go).

429 rate_limited

Przekroczono limit zapytań na minutę dla Twojego klucza lub planu (Free 5, Pro 100, Team 3,000, Enterprise 3,000+). Odpowiedź zawiera Retry-After: 60.

  • Poczekaj na Retry-After i ponów z wykładniczym opóźnieniem oraz jitterem. Oficjalne SDK OpenAI już to robią (domyślnie dwa ponowienia; zwiększ maxRetries / max_retries).
  • Przy pracy masowej rozkładaj żądania w czasie zamiast wysyłać je wszystkie naraz i umieszczaj kilka elementów w jednym żądaniu. Zobacz Przewodnik: przetwarzanie wsadowe.
  • 429 może też pochodzić od dostawcy, zwłaszcza w wariantach :free. Użyj zapasowych modeli lub routingu dostawców, aby rozłożyć obciążenie.

429 daily_limit_reached

Klucz osiągnął dzienny limit wydatków w USD. Ponawianie nie pomaga do następnego dnia UTC. Zwiększ lub usuń limit w kluczach API, jeśli ruch jest oczekiwany. Upewnij się, że Twoja logika ponowień odróżnia ten kod od rate_limited, w przeciwnym razie zadania będą ponawiać bez sensu. Zobacz Limity zapytań.

Timeouty

Duże modele, modele z rozumowaniem i długie wyjścia mogą trwać minuty.

  • Sprawdź limit czasu klienta. SDK dla Node i Pythona domyślnie ustawiają 10 minut; inne klienty HTTP często mają krótsze wartości domyślne.
  • Strumieniuj długie generacje. Tokeny zaczynają napływać w ciągu sekund, a limity czasu bezczynnych połączeń w proxy i load balancerach przestają być problemem. Zobacz Streaming.
  • Ustaw max_tokens i, dla modeli z rozumowaniem, niższy poziom rozumowania.
  • Jeśli przekazujesz żądania przez własny serwer, obowiązują także limity czasu jego proxy (na przykład proxy_read_timeout w nginx, domyślnie 60 sekund).
  • Timeout po Twojej stronie nie anuluje generacji u dostawcy, która może zostać rozliczona. Sprawdź to przez Wyszukiwanie generacji z identyfikatorem żądania.

Streaming się rozłącza lub kończy wcześniej

  • Sprawdź finish_reason w ostatnim fragmencie. "length" oznacza osiągnięcie max_tokens; "error" oznacza, że dostawca zawiódł w trakcie strumienia, a fragment zawiera obiekt error. Ponów lub dodaj zapasowe modele.
  • Proxy i platformy serverless czasem buforują lub ucinają odpowiedzi SSE. Wyłącz buforowanie (X-Accel-Buffering: no w nginx) i sprawdź maksymalny czas odpowiedzi platformy.
  • Jeśli parsujesz strumień samodzielnie, ignoruj linie komentarzy zaczynające się od : (keep-alive) i zakończ na data: [DONE].
  • Wcześniejsze zamknięcie połączenia nie anuluje rozliczenia: dostawca może i tak dokończyć generację.

Błędy CORS i aplikacje przeglądarkowe

Nigdy nie umieszczaj klucza API w kodzie przeglądarki ani aplikacji mobilnej. Każdy może go odczytać ze strony i wydać Twoje saldo. Wywołuj api14 z własnego backendu i udostępniaj przeglądarce tylko własny endpoint:

// server.js (Node / Express)
app.post("/api/chat", async (req, res) => {
  const stream = await client.chat.completions.create({
    model: "openai/gpt-5-mini",
    messages: req.body.messages, // validate and limit this input
    stream: true,
  });
  for await (const chunk of stream) res.write(chunk.choices[0]?.delta?.content ?? "");
  res.end();
});

Błąd CORS w przeglądarce podczas developmentu to zwykle zły adres bazowy (żądanie trafiło do strony WWW zamiast do API) albo niestandardowy nagłówek żądania, którego preflight API nie dopuszcza; przeniesienie wywołania na serwer rozwiązuje oba przypadki.

Problemy z wersjami SDK

  • Python openai poniżej 1.0 używa openai.ChatCompletion.create i openai.api_base. Zaktualizuj przez pip install -U openai i użyj klienta OpenAI(base_url=..., api_key=...).
  • Brak chat.completions.parse: starsze wydania 1.x/4.x mają tylko client.beta.chat.completions.parse. Zaktualizuj pakiet.
  • Błędy nieznanego parametru z SDK dla pól bramki (provider, models, reasoning, plugins): przekazuj je przez extra_body w Pythonie lub równoważną opcję dodatkowego ciała w innych SDK. Zobacz Zgodność z SDK OpenAI.
  • Błąd 400 od dostawcy z jego komunikatem: parametr nie jest obsługiwany przez ten model lub dostawcę. Sprawdź supported_parameters modelu w Modelach lub dodaj provider: { "require_parameters": true }.