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ånapiKey/api_key. Med curl, kontrollera att$API14_API_KEYverkligen är satt i det skal du kör från (echo ${API14_API_KEY:0:9}ska skriva utsk-api14-). - Se upp för överblivna citattecken eller radbrytningar när nyckeln kommer från en
.env-fil. - En
OPENAI_API_KEYsom 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 /creditseller 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, integpt-5-mini. Slå upp exakt id medGET /modelsellerGET /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å ge404under några sekunder tills posten dyker upp.
Fel base URL
Base URL:en är exakt:
https://api14.com/api/v1
Vanliga misstag:
| Du anger | Resultat |
|---|---|
https://api14.com/v1 eller https://api14.com | Anropen träffar webbplatsen, inte API:t: HTML-svar, 404 eller CORS-fel i webbläsaren. |
https://api14.com/api/v1/chat/completions som bas | SDK: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-Afteroch 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öjmaxRetries/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_tokensoch, 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_reasonpå den sista biten."length"betyder attmax_tokensnåddes."error"betyder att leverantören misslyckades mitt i strömmen, och biten innehåller etterror-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: nopå nginx) och kontrollera plattformens maximala svarstid. - Om du tolkar strömmen själv, ignorera kommentarsrader som börjar med
:(keep-alive) och sluta viddata: [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
openaiunder 1.0 använderopenai.ChatCompletion.createochopenai.api_base. Uppgradera medpip install -U openaioch använd klientenOpenAI(base_url=..., api_key=...). chat.completions.parsesaknas: äldre 1.x-/4.x-versioner har baraclient.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 medextra_bodyi Python, eller motsvarande extra-body-alternativ i andra SDK:er. Se Kompatibilitet med OpenAI SDK. - Uppströms
400med ett leverantörsmeddelande: parametern stöds inte av den modellen eller leverantören. Kontrollera modellenssupported_parametersi Modeller, eller lägg tillprovider: { "require_parameters": true }.