Vi använder cookies. Cookies och webbläsarlagring håller dig inloggad och kommer ihåg dina preferenser. Med ditt tillstånd mäter vi också hur webbplatsen används. Du kan när som helst. Läs vår cookiepolicy.

Felsökning

Konto

Felsökning

Lösningar på vanliga problem med autentisering, saldo, modellåtkomst, hastighetsgränser, tidsgränser, streaming, CORS och felaktiga base URL:er.

De flesta problem visar sig som en HTTP-status och en code i felmeddelandets innehåll. Hitta koden nedan. Fel har hela listan. Misslyckade anrop (alla 4xx och 5xx) debiteras aldrig.

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

401 invalid_api_key

Nyckeln saknas, är felformaterad eller har återkallats.

  • Skicka den som Authorization: Bearer sk-api14-.... OpenAI-SDK:erna gör detta utifrån apiKey / api_key. Med curl, kontrollera att $API14_API_KEY verkligen är satt i det skal du kör från (echo ${API14_API_KEY:0:9} ska skriva ut sk-api14-).
  • Se upp för överblivna citattecken eller radbrytningar när nyckeln kommer från en .env-fil.
  • En OPENAI_API_KEY som ligger kvar i miljön kan åsidosätta nyckeln du tänkt använda. Skicka nyckeln explicit för att utesluta detta.
  • En återkallad nyckel misslyckas direkt. Nycklar visas bara en gång, så om du tappat en, skapa en ny nyckel under API-nycklar och återkalla den gamla.

Se Autentisering.

402 insufficient_balance

Ditt USD-saldo är 0 USD, eller (för video) lägre än jobbets uppskattade kostnad. Anropen förblir blockerade tills du fyller på, att försöka igen hjälper inte.

  • Kontrollera saldot med GET /credits eller under Fakturering. Se Saldo och nyckelinfo.
  • Fyll på eller aktivera automatisk påfyllning. Planer lägger till inkluderad användning på samma saldo varje månad. Se Priser och fakturering.
  • I långkörande jobb, behandla den här koden som ett ödesdigert fel och stoppa, i stället för att låta SDK:ns återförsök snurra.

403 model_not_allowed eller plan_required

  • model_not_allowed: nyckeln har en tillåtelselista för modeller som inte inkluderar det här modell-id:t. Redigera nyckelns tillåtelselista under API-nycklar, eller använd en nyckel utan någon. Variantsuffix räknas: kontrollera att exakt det id du skickar är tillåtet.
  • plan_required: din plan omfattar inte den här modellkategorin. Standardplanerna omfattar alla kategorier. Kontrollera din plan på prissidan.

404 model_not_found eller not_found

  • model_not_found: modell-id:t är okänt, inaktiverat eller borttaget. Id:n inkluderar leverantörsprefixet: openai/gpt-5-mini, inte gpt-5-mini. Slå upp exakt id med GET /models eller GET /models/{id} (ingen nyckel behövs). Se Modell-id och varianter.
  • not_found: sökvägen finns inte, eller videojobbets eller generationens id är inte ditt. Det betyder oftast en felaktig base URL (se nedan). Ett Generationsuppslag direkt efter ett anrop kan också ge 404 under några sekunder tills posten dyker upp.

Fel base URL

Base URL:en är exakt:

https://api14.com/api/v1

Vanliga misstag:

Du angerResultat
https://api14.com/v1 eller https://api14.comAnropen träffar webbplatsen, inte API:t: HTML-svar, 404 eller CORS-fel i webbläsaren.
https://api14.com/api/v1/chat/completions som basSDK:n lägger till sökvägen igen. Ange bara basen.
https://api.openai.com/v1 (standard)Din api14-nyckel avvisas av OpenAI. Ange base URL i koden eller med OPENAI_BASE_URL.

Egenheter i bibliotek: ruby-openai lägger till v1 själv, så dess uri_base är https://api14.com/api (Ruby). openai-go förväntar sig ett avslutande snedstreck, https://api14.com/api/v1/ (Go).

429 rate_limited

Du överskred gränsen för anrop per minut för din nyckel eller plan (Free 5, Pro 100, Team 3 000, Enterprise 3 000+). Svaret innehåller Retry-After: 60.

  • Vänta enligt Retry-After och försök igen med exponentiell backoff och jitter. De officiella OpenAI-SDK:erna gör redan detta (två återförsök som standard, höj maxRetries / max_retries).
  • För massbearbetning, jämna ut anropen i stället för att skicka alla på en gång, och lägg flera poster i ett anrop. Se Guide: batchbearbetning.
  • Ett 429 kan också komma från uppströmsleverantören, särskilt på :free-varianter. Använd modellreserv eller leverantörsroutning för att sprida belastningen.

429 daily_limit_reached

Nyckeln nådde sin dagliga USD-gräns. Att försöka igen hjälper inte förrän nästa UTC-dag. Höj eller ta bort gränsen under API-nycklar om trafiken är väntad. Se till att din återförsökslogik skiljer den här koden från rate_limited, annars fortsätter jobb att försöka i onödan. Se Hastighetsgränser.

Tidsgränser

Stora modeller, resonerande modeller och långa utdata kan ta minuter.

  • Kontrollera din klients tidsgräns. Node- och Python-SDK:erna har 10 minuter som standard, andra HTTP-klienter använder ofta kortare standardvärden.
  • Strömma långa genereringar. Tokens börjar komma inom sekunder, och tidsgränser för inaktiva anslutningar i proxyer och lastbalanserare slutar vara ett problem. Se Streaming.
  • Ange max_tokens och, för resonerande modeller, en lägre reasoning-ansträngning.
  • Om du vidarebefordrar anrop via din egen server gäller även dess proxy-tidsgränser (till exempel nginx proxy_read_timeout, som är 60 sekunder som standard).
  • En tidsgräns på din sida avbryter inte genereringen uppströms, som ändå kan faktureras. Använd Generationsuppslag med anrops-id:t för att kontrollera.

Streaming kopplas ned eller stannar i förtid

  • Kontrollera finish_reason på den sista biten. "length" betyder att max_tokens nåddes. "error" betyder att leverantören misslyckades mitt i strömmen, och biten innehåller ett error-objekt. Försök igen, eller lägg till reservval.
  • Proxyer och serverlösa plattformar buffrar eller klipper ibland SSE-svar. Stäng av buffring (X-Accel-Buffering: no på nginx) och kontrollera plattformens maximala svarstid.
  • Om du tolkar strömmen själv, ignorera kommentarsrader som börjar med : (keep-alive) och sluta vid data: [DONE].
  • Att stänga anslutningen i förtid avbryter inte fakturan: leverantören kan slutföra genereringen ändå.

CORS-fel och webbläsarappar

Lägg aldrig en API-nyckel i webbläsar- eller mobilkod. Vem som helst kan läsa den från sidan och göra av med ditt saldo. Anropa api14 från din egen backend och exponera bara din egen endpoint för webbläsaren:

// 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, // validera och begränsa den här indatan
    stream: true,
  });
  for await (const chunk of stream) res.write(chunk.choices[0]?.delta?.content ?? "");
  res.end();
});

Ett CORS-fel i webbläsaren under utveckling beror oftast på en felaktig base URL (anropet nådde webbplatsen i stället för API:t) eller ett eget anropshuvud som API:ts preflight inte tillåter. Att flytta anropet till din server löser båda.

Problem med SDK-versioner

  • Python openai under 1.0 använder openai.ChatCompletion.create och openai.api_base. Uppgradera med pip install -U openai och använd klienten OpenAI(base_url=..., api_key=...).
  • chat.completions.parse saknas: äldre 1.x-/4.x-versioner har bara client.beta.chat.completions.parse. Uppgradera paketet.
  • Fel om okänd parameter från SDK:n för gateway-fält (provider, models, reasoning, plugins): skicka dem med extra_body i Python, eller motsvarande extra-body-alternativ i andra SDK:er. Se Kompatibilitet med OpenAI SDK.
  • Uppströms 400 med ett leverantörsmeddelande: parametern stöds inte av den modellen eller leverantören. Kontrollera modellens supported_parameters i Modeller, eller lägg till provider: { "require_parameters": true }.