Accueil → Aide

401 invalid API key : quand la clé semble correcte mais échoue quand même

Un 401 signifie que la requête a atteint l'API et que la clé a été refusée, ce qui est une bonne nouvelle. L'URL est correcte ; seul l'identifiant est en cause.

Ce que vous voyez

Pourquoi cela arrive

Il faut bien distinguer ce cas de celui du HTML au lieu du JSON. Recevoir un 401 propre en JSON prouve que votre base URL est correcte et que la requête est bien routée. Vous êtes à une petite correction près, au lieu de déboguer la mauvaise couche.

La cause la plus fréquente n'est pas du tout une mauvaise clé : c'est un caractère invisible. Copier depuis un terminal ou une interface web embarque souvent un saut de ligne final ou une espace insécable, et la comparaison échoue sur une clé qui paraît identique à l'écran.

Vérifiez si c'est bien la cause

Affichez la longueur de la clé et comparez-la à celle du tableau de bord. Un caractère de trop vous trahit :

# Python
import os
k = os.environ["API_KEY"]
print(len(k), repr(k[-4:]))

# shell
printf '%s' "$API_KEY" | wc -c

Si repr() affiche '\n' ou si la longueur dépasse d'un caractère celle attendue, vous tenez votre réponse.

Comment le corriger

  1. Supprimez les espacesNettoyez la clé quand vous la lisez depuis une variable d'environnement ou un fichier. Un saut de ligne final est invisible dans toutes les interfaces et casse toutes les comparaisons.
  2. Vérifiez le nom de l'en-têteLes endpoints de style OpenAI attendent Authorization: Bearer KEY. Les endpoints de style Anthropic attendent x-api-key. Envoyer la bonne clé dans le mauvais en-tête renvoie 401 sans aucune indication sur l'erreur commise.
  3. Vérifiez ce que la clé est autorisée à atteindreSur les passerelles où les clés sont liées à une offre ou à un groupe, une clé valide peut être refusée pour un modèle hors de son périmètre. Certaines renvoient 401 plutôt qu'une erreur plus claire. Listez les modèles visibles par votre clé avant de supposer que la clé elle-même est mauvaise.
  4. Confirmez que la clé existe toujoursLes clés supprimées ou renouvelées échouent généralement en 401 plutôt qu'en 404. Si vous avez renouvelé récemment, vérifiez que le processus en cours a bien été redémarré : un processus de longue durée garde l'ancienne valeur en mémoire.
Sur APICLAN, vous pouvez lister ce qu'une clé peut atteindre avec curl https://apiclan.us/v1/models -H "Authorization: Bearer YOUR_KEY". Chaque clé appartient à un groupe, donc une clé créée pour une offre ne fonctionnera pas sur une autre.

Voir aussi

Unexpected token '<' lors d'un appel à une API compatible OpenAI404 sur /v1/chat/completions alors que l'endpoint existe bel et bien

Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.