Tutoriale
Chiave API non valida? Perché compare "API Key Data Are Invalid" e come risolverlo
Perché una chiave apparentemente corretta fallisce comunque — e una checklist passo passo per verificarla end-to-end
L'errore "invalid API key" è uno dei messaggi più fuorvianti nel lavoro con le API, perché quasi mai la chiave ha davvero un problema. Il problema risiede quasi sempre in come la chiave viene memorizzata, caricata o instradata, non nella chiave stessa. Questa guida analizza una per una tutte le cause comuni, ti insegna a leggere il vero errore restituito dal provider (incluso ciò che restituisce esattamente HiAPI) e fornisce una checklist copia-incollabile per verificare la chiave end-to-end ed evitare di perdere un pomeriggio a debuggare l'applicazione.
Perché una chiave apparentemente corretta fallisce comunque
Di seguito sono elencate le cause della stragrande maggioranza degli errori di chiave non valida, ordinate grosso modo per frequenza, con la rispettiva soluzione.
Spazi bianchi o caratteri di nuova riga all'inizio o alla fine. È la causa numero uno, e anche la più difficile da individuare, perché la chiave stampata sembra del tutto normale. La trappola classica è costruire il file .env con echo, che aggiunge un \n finale:
# Sbagliato — aggiunge un carattere di nuova riga che diventa parte del valore della chiave
echo "HIAPI_API_KEY=sk-..." >> .env
# Corretto — nessun carattere di nuova riga finale
printf 'HIAPI_API_KEY=sk-...\n' >> .env
Un carattere di nuova riga finale o uno spazio superfluo trasforma Bearer sk-abc in Bearer sk-abc\n, e il server rifiuta la richiesta. Soluzione: rimuoverlo. Nella shell: KEY="$(printf '%s' "$KEY" | tr -d '[:space:]')". Nel codice, prima di costruire l'header usa key.strip() (Python) o key.trim() (JS).
Chiave nella variabile d'ambiente sbagliata, o non caricata affatto. Il tuo codice legge HIAPI_API_KEY, ma la tua shell esporta HIAPI_KEY. Oppure la variabile è impostata nella tua shell interattiva, ma il processo (attività cron, container Docker, runner CI) non l'ha mai ereditata. Soluzione: prima della chiamata stampa ciò che il processo vede effettivamente — echo "${HIAPI_API_KEY:0:6}…" — e verifica che il nome della variabile coincida con quello letto dal codice.
Chiave revocata, ruotata o scaduta. Qualcuno ha ruotato la chiave, un collega l'ha rigenerata, oppure la chiave è stata revocata automaticamente dopo una fuga in un repository pubblico. Il vecchio valore ora non è più valido. Soluzione: genera una nuova chiave dalla console e sostituisci tutte le copie di quella vecchia.
Chiave inviata al servizio sbagliato. Inviare una chiave OpenAI a HiAPI, o una chiave HiAPI a OpenAI, verrà rifiutato, perché il servizio ricevente non ha emesso quella chiave. Verifica che la chiave e l'endpoint appartengano allo stesso servizio. Le richieste di generazione HiAPI usano https://api.hiapi.ai/v1/tasks con una chiave HiAPI.
Schema Bearer mancante o malformato. L'header deve essere Authorization: Bearer sk-... — cioè la parola Bearer, uno spazio, poi la chiave. Inviare solo la chiave nuda, oppure Authorization: sk-..., oppure Bearer: sk-..., fallirà. Soluzione: controlla la stringa esatta dell'header.
Chiave troncata durante la copia. Copiando una chiave lunga da un terminale stretto, da un messaggio in chat o da un campo UI scorrevole, la chiave viene troncata. Soluzione: confronta lunghezza e ultimi caratteri con la console; usa il pulsante di copia invece della selezione manuale.
La chiave non ha i permessi per quel modello o gruppo. La chiave è valida e caricata correttamente, ma non è autorizzata a chiamare il modello specifico richiesto. È facile interpretarlo erroneamente come "chiave non valida", quando in realtà è una questione di ambito dei permessi. Soluzione: concedi a quella chiave l'accesso al modello, oppure usa una chiave che abbia già i permessi necessari.
Il vero errore di HiAPI (leggilo, non indovinare)
Quando l'autenticazione fallisce su HiAPI, ricevi un HTTP 401 con il seguente corpo della risposta (verificato sul campo):
{
"error": {
"code": "permission_denied",
"type": "hiapi_error",
"message": "This API key cannot use the selected model. Please check permissions or use another key. If the issue persists, contact support with request ID: 2026...Y7",
"request_id": "2026...Y7"
}
}
Da qui si ricavano tre punti:
- Il codice di stato è
401e il code èpermission_denied. HiAPI non restituisceerror_key_does_not_existnéinvalid_api_key— quelle stringhe provengono da altri ecosistemi (OpenAI usainvalid_api_key;error_key_does_not_existè una formulazione generica di alcuni gateway). Se su HiAPI devi confrontare i codici di errore, confrontapermission_denied. - Il messaggio ti dice che si tratta di un problema di chiave/permessi, e corrisponde direttamente alle due cause sopra: chiave errata/mancante, oppure chiave valida ma senza accesso a quel modello. Ricontrolla prima la chiave, poi i permessi del modello.
- Il
request_idè ciò che devi fornire al supporto. Non inviare screenshot del terminale — cita ilrequest_id. Permette al supporto di trovare la richiesta fallita esatta nei propri log.
Leggi sempre il corpo JSON della risposta, non solo il codice di stato. Entrambi i provider possono restituire 401, ma la vera causa è nel corpo della risposta.
Checklist per la configurazione della chiave API
Prima di debuggare il codice dell'applicazione, esegui questa checklist dall'alto verso il basso per verificare qualsiasi chiave. Isola la chiave dal tuo framework, dal caricamento dell'ambiente e dal client HTTP.
- Ricopia la chiave usando il pulsante di copia della console — mai selezionarla manualmente.
- Rimuovi gli spazi bianchi. Presupponi che ci sia un carattere di nuova riga finale finché non hai provato il contrario.
- Inseriscila in una variabile d'ambiente, non nel codice sorgente:
export HIAPI_API_KEY='sk-...'. - Verifica che il processo la veda:
echo "${HIAPI_API_KEY:0:6}…"dovrebbe stampare il tuo prefisso. - Verifica che l'URL di base corrisponda al provider — per HiAPI, è
https://api.hiapi.ai. - Esegui una chiamata di autenticazione minima (HiAPI Tasks API, come di seguito).
- Leggi il corpo della risposta. Un
taskIdrestituito significa che la chiave è valida. Un401significa ricontrollare i passaggi 1–5; unpermission_deniedrelativo al modello significa che alla chiave manca l'accesso a quel modello. - Solo a questo punto collegala all'applicazione. Se curl funziona ma l'applicazione no, il bug è nel caricamento dell'ambiente o nella costruzione degli header nel tuo codice — non nella chiave.
Chiamata HiAPI minima del passaggio 6:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2/text-to-image","input":{"prompt":"a red apple on a white table"}}'
In caso di successo restituisce un taskId; poi esegui il polling di GET https://api.hiapi.ai/v1/tasks/<taskId> finché status è success, e leggi l'URL dell'immagine da data.output[0].url. Per tutti i dettagli consulta la documentazione HiAPI. Una volta verificata la chiave, puoi usarla con qualsiasi modello — partendo dalla pagina del modello GPT Image 2, cambiando il campo model per passare da un modello all'altro.
Creare e ruotare le chiavi
Le chiavi si trovano nella console HiAPI. Per creare una chiave, accedi e generane una nuova — copiala subito, perché il valore completo viene mostrato una sola volta. Per una rotazione senza downtime, crea prima la nuova chiave, distribuiscila ovunque venga usata quella vecchia, verificala con la checklist qui sopra, poi revoca la vecchia chiave. Ruota le chiavi ogni volta che potrebbero essere state compromesse, quando un collega lascia il team, o secondo la pianificazione di rotazione dell'ambiente di produzione.
"claude code invalid api key" — la risposta onesta
Se Claude Code segnala invalid API key, il problema quasi mai è dalla parte di HiAPI, perché Claude Code si autentica con Anthropic. Cause comuni:
ANTHROPIC_API_KEYerrata, scaduta o ruotata. Anthropic restituisce in questo caso401conauthentication_error/ "invalid x-api-key". Soluzione: imposta la chiave Anthropic corrente.- Impostazioni residue di override del base-URL o del proxy. Se
ANTHROPIC_BASE_URL(o un'impostazione proxy personalizzata) punta a un luogo che non accetta la tua chiave, ogni chiamata viene letta come non valida. Soluzione: rimuovi l'override, oppure assicurati che la chiave corrisponda all'endpoint verso cui punta.
HiAPI non ripara le chiavi di Anthropic o OpenAI; quelle credenziali vengono emesse e verificate dai rispettivi servizi. Se la tua applicazione usa HiAPI, chiama l'API unificata delle attività con una chiave HiAPI. Cambiare solo l'URL di base non rende compatibili le strutture di richiesta e risposta di OpenAI.
FAQ
Perché la mia chiave API sembra corretta ma risulta non valida?
Perché la causa è raramente la stringa visibile. In ordine di probabilità: un carattere di nuova riga o uno spazio finale (spesso perché si è usato echo invece di printf), la chiave in una variabile d'ambiente sbagliata o non caricata dal processo, una chiave già ruotata/revocata, oppure una chiave inviata all'URL di base sbagliato. Esegui la checklist qui sopra — il curl del passaggio 6 isola la chiave dall'applicazione e una sola chiamata ti dice se il problema è nella chiave o nel codice.
Come si risolve invalid API key in Claude Code?
Imposta la ANTHROPIC_API_KEY corrente e rimuovi qualsiasi ANTHROPIC_BASE_URL scaduto o override del proxy. L'autenticazione di Claude Code non ha nulla a che fare con HiAPI. Per la generazione di media tramite HiAPI, usa una chiave HiAPI e chiama POST https://api.hiapi.ai/v1/tasks.
Che cos'è error_key_does_not_exist?
È il messaggio generico "chiave non riconosciuta" usato da alcuni gateway API ed ecosistemi — significa che il server non ha alcun record della chiave che hai inviato. Non è un codice di errore HiAPI; HiAPI restituisce permission_denied con HTTP 401. In pratica la soluzione è la stessa: verifica che la chiave sia aggiornata, senza spazi bianchi, e inviata all'URL di base del provider corretto.
Qual è la differenza tra 401 e 403 qui?
401 significa che la richiesta non ha superato l'autenticazione — chiave mancante, malformata o non riconosciuta. 403/risposte di tipo permessi significano che l'autenticazione è riuscita ma l'operazione specifica non è consentita. HiAPI classifica i casi di permessi insufficienti della chiave sotto 401 con permission_denied, quindi leggi il messaggio: se menziona un modello, si tratta di un problema di ambito dei permessi, non di una chiave non valida.
Esiste un modo più rapido per testare la chiave rispetto all'applicazione completa?
Sì — il singolo curl della checklist. Se restituisce un taskId, la chiave è a posto e qualsiasi fallimento rimanente sta nel caricamento dell'ambiente o nella costruzione degli header dell'applicazione. Per conoscere un percorso di livello produttivo con credito di registrazione gratuito, che ti permette di testare la generazione reale prima di pagare, consulta generazione di immagini AI gratuita senza chiave.
Articoli correlati
Vedi tutti gli articoli →-
Tutoriale
Come chiamare hailuo-2.3-fast/image-to-video tramite l'API HiAPI: pratica con curl e Python
La prima richiesta funzionante per il livello image-to-video veloce ed economico — dall'ID del modello al download di un MP4
-
Tutoriale
Come chiamare hailuo-2.3/text-to-video tramite l'API HiAPI: curl, Python ed esempi di richiesta eseguibili
-
Tutoriale
Utilizzare Kandinsky 6.0 Pro su HiAPI per la generazione di video da testo: tutorial con curl e Python
Dimostrazione pratica guidata dalla richiesta: costruire la chiamata da prompt a clip video, inviare la richiesta, monitorare lo stato di completamento e scaricare il risultato