HiAPI
Blog

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.

Oct 25, 2026
Chiave API OpenAI non valida: 401, variabili d'ambiente e verifica della configurazione di progetto

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

  1. Verifica se stai chiamando OpenAI o una piattaforma compatibile; ogni piattaforma usa la propria chiave.
  2. Controlla OPENAI_API_KEY nel processo effettivo, escludendo valori vuoti, segnaposto e copie errate.
  3. Controlla la priorità di caricamento delle variabili d'ambiente; i valori della piattaforma di deploy possono sovrascrivere il file locale .env.
  4. 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.
  5. 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.

Continua la diagnosi degli errori delle chiavi HiAPI.

Inizia a creare con artefatti IA persistenti

Ottieni la tua chiave API e chiama modelli di immagini, video e audio tramite un'unica API basata sui task.

Leggi la documentazione API