Tutoriale
Chiave API OpenAI non valida: 401, variabili d'ambiente e verifica della configurazione di progetto
Distingui gli errori 401, 403 e 429 di OpenAI, controlla variabili d'ambiente, impostazioni di organizzazione e progetto e verifica le credenziali con una richiesta in sola lettura.
TL;DR
Quando OpenAI restituisce 401 e segnala che la chiave non è corretta, controlla prima le credenziali, le variabili di runtime e la configurazione dell'organizzazione o del progetto. Per il 429 verifica il rate limit, il saldo o il limite di utilizzo in base al codice di errore; anche per il 403 è necessario leggere il motivo specifico.
Prima di eseguire l'esempio Python, esegui python -m pip install requests nello stesso ambiente Python.
Distingui prima il tipo di errore
| Risposta | Direzione della verifica |
|---|---|
| 401, con messaggio Incorrect API key | Chiave completa, ortografia, stato di revoca e appartenenza |
| 401, altri messaggi di autenticazione | Appartenenza all'organizzazione, permessi o restrizioni IP e altri motivi specifici |
| 403 | Leggi il motivo nella risposta, incluse restrizioni geografiche o altre restrizioni di accesso |
| 429 | Distingui tra rate limit, saldo e limite di utilizzo dell'organizzazione o del progetto |
Non giudicare la validità di una chiave solo dal prefisso sk-. Credenziali complete, dominio di destinazione e configurazione dell'account devono essere tutti coerenti.
Verifica l'ambiente di esecuzione in cinque passaggi
- Verifica se stai chiamando OpenAI o una piattaforma compatibile; ogni piattaforma usa la propria chiave.
- Controlla
OPENAI_API_KEYnel processo effettivo, escludendo valori vuoti, segnaposto e copie errate. - Controlla la priorità di caricamento delle variabili d'ambiente; i valori della piattaforma di deploy possono sovrascrivere il file locale
.env. - Verifica se la chiave è stata revocata e a quale organizzazione e progetto appartiene. Se hai impostato manualmente header di organizzazione o progetto, assicurati che tali valori siano coerenti; non aggiungere header a caso.
- Dopo aver ricaricato l'ambiente di esecuzione, esegui una verifica in sola lettura. Se l'errore persiste, annota il request ID della risposta e contatta il responsabile dell'account.
Verifica locale senza esporre le credenziali
import os
name = "OPENAI_API_KEY"
key = os.environ.get(name, "")
print({
"variable": name,
"present": bool(key),
"length": len(key),
"has_whitespace": any(c.isspace() for c in key),
"wrapped_in_quotes": len(key) >= 2 and key[0] == key[-1] and key[0] in (chr(34), chr(39)),
})
Non usare log di debug che stampano l'intera intestazione della richiesta e non convertire la chiave in esadecimale per incollarla in un ticket: sarebbe comunque una credenziale completa.
Richiesta di verifica in sola lettura
Esegui il seguente codice nell'ambiente del server. Legge l'elenco dei modelli e non invia contenuti per la generazione. Una chiave con autorizzazioni limitate può comunque essere rifiutata per mancanza di permessi di lettura; non considerare qualsiasi risposta diversa da 200 come chiave danneggiata.
import os
import re
import requests
key = os.environ.get("OPENAI_API_KEY", "")
if not key or any(ord(c) < 33 or ord(c) > 126 for c in key) or any(c in key for c in (chr(34), chr(39))):
raise SystemExit("Check the key environment variable: empty, whitespace, control characters, or quotes")
try:
response = requests.get(
"https://api.openai.com/v1/models",
headers={"Authorization": f"Bearer {key}"},
timeout=30,
)
except requests.RequestException as exc:
raise SystemExit("Request failed: " + type(exc).__name__) from None
print("HTTP", response.status_code)
if response.ok:
print("Model list received")
else:
try:
body = response.json()
error = body.get("error", {})
message = str(error.get("message") or body.get("message") or "")
message = message.replace(key, "[REDACTED]")
message = re.sub(r"sk-[A-Za-z0-9_*.-]+", "[REDACTED]", message)
print("code:", error.get("code") or body.get("error_code"))
print("type:", error.get("type"))
print("message:", message)
print("request_id:", error.get("request_id") or response.headers.get("x-request-id"))
except ValueError:
print("Non-JSON response; check the base URL and network path")
Cosa verificare quando si passa a HiAPI
Quando usi HiAPI, sostituisci la chiave con HIAPI_API_KEY, usa l'indirizzo di HiAPI come Base URL e scegli l'endpoint di richiesta in base alla pagina del modello. Leggi prima le istruzioni di autenticazione HiAPI e la guida alla scelta dell'interfaccia.
Le due richieste devono usare in modo indipendente le credenziali della rispettiva piattaforma; non inviare la chiave OpenAI a HiAPI per una presunta "verifica di isolamento".
Domande frequenti
Se il prefisso della chiave è corretto, è certamente utilizzabile?
Non puoi giudicare solo dal prefisso. Devi controllare anche il valore completo, lo stato di revoca e la configurazione dell'account.
In caso di 401 devo ricaricare subito?
Gestisci prima il motivo di autenticazione indicato dalla risposta; gli errori di saldo o di limite di utilizzo vanno gestiti separatamente in base al relativo codice di errore.
Tutte le richieste devono includere gli header di organizzazione e progetto?
Non aggiungerli a caso. In casi come più organizzazioni o chiavi utente legacy è necessario scegliere correttamente il contesto; gli header già impostati devono corrispondere alle credenziali utilizzate.
Una chiave HiAPI può essere usata direttamente per richiedere OpenAI?
No, non sono intercambiabili. HiAPI e OpenAI gestiscono le credenziali separatamente; dominio e chiave devono corrispondersi.
Articoli correlati
Vedi tutti gli articoli →-
Tutoriale
Casi di Recraft Creative Upscale: paesaggi e acquerelli ingranditi
Osserva le variazioni di texture su baita, lago e cittadina ad acquerello, distingui il risultato completo dall'anteprima e controlla i dettagli ridisegnati.
-
Tutoriale
Raccolta completa di prompt per Kling 4.0: 6 scene da cui copiare direttamente per creare video
Prodotti e-commerce, cibo, paesaggi di viaggio, momenti di vita quotidiana, b-roll con audio e image-to-video: ogni scena ha un video reale, il prompt completo e un link con compilazione automatica con un clic.
-
Tutoriale
Come si usa Kandinsky 6.0 Pro? Il primo video in 5 minuti
Prova online in 3 passaggi e integrazione API in 3 passaggi, con curl e Python pronti all'uso, JSON per image-to-video, struttura del prompt su quattro livelli e cose da sapere prima del go-live.