Premiers pasGuide
Stocker une clé API en sécurité : variable d'environnement, .gitignore, correction d'une fuite
Gardez votre clé CheapTokens hors du code et de git : définissez une variable d'environnement, ajoutez .env à .gitignore, et sachez quoi faire si la clé fuit.

Sur cette page
Gardez la clé dans une variable d'environnement, pas dans votre code, et gardez tout fichier .env hors de git avec une ligne dans .gitignore. Si une clé s'est déjà retrouvée quelque part de public, occupez-vous d'abord de la clé et nettoyez ensuite : réécrire l'historique git alors que la clé est toujours dans votre code et vos outils ne corrige rien.
Voilà l'idée. Ce guide en est la version pratique (les bases sont dans Qu'est-ce qu'une clé API) : trois commandes, une requête qui fonctionne, et un plan court pour le jour où ça tourne mal.
Pourquoi la clé n'a rien à faire dans votre code#
Une clé API est un mot de passe qui dépense votre argent. Quiconque la détient peut envoyer des requêtes sur votre solde, et le service ne peut pas le distinguer de vous.
La façon habituelle dont ça dérape est banale. Vous collez la clé dans un script pour faire fonctionner la première requête, le script marche, vous faites git push, et le dépôt est public. Ou vous envoyez votre fichier de config à un collègue. Ou vous faites une capture d'écran d'une erreur avec la clé visible dans le coin. Même résultat à chaque fois.
GitHub connaît bien ce schéma. Son secret scanning (docs GitHub, consulté le 29 octobre 2026) parcourt tout l'historique Git sur toutes les branches à la recherche d'identifiants codés en dur, ainsi que les issues, pull requests, discussions, wikis et gists secrets, et lève une alerte quand il en trouve un. Ce qui veut dire que supprimer la ligne dans votre commit suivant ne change rien : l'ancien commit la contient toujours.
Voici le même script avant et après.
Comparer
Même script, clé sortie du code
Clé dans le code
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="<your-key>", # pasted here: ends up in git
)Clé depuis l'environnement
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)La seconde version peut aller sur GitHub, dans un chat ou en revue de code telle quelle. La clé vit sur votre machine, hors du fichier.
Étape 1 : mettre la clé dans une variable d'environnement#
Une variable d'environnement est une valeur nommée que votre terminal transmet à chaque programme qu'il lance. Le script demande CHEAPTOKENS_ par son nom et ne voit jamais d'où elle vient.
Sur macOS et Linux :
export CHEAPTOKENS_API_KEY="<your-key>"Sur Windows PowerShell :
setx CHEAPTOKENS_API_KEY "<your-key>"Deux détails piègent les gens. export ne dure que pour cette fenêtre de terminal, donc pour la conserver, ajoutez la ligne à votre profil de shell (~/.zshrc ou ~/.bashrc). Et setx ne modifie pas la fenêtre dans laquelle vous l'avez tapée : ouvrez un nouveau terminal avant de tester.
Maintenant une requête complète. Elle utilise le point de terminaison compatible OpenAI, https:/, et DeepSeek-V4-Flash avec son id complet (deepseek- ; prenez les ids dans la doc CheapTokens, car les noms diffèrent selon les fournisseurs) :
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)
print(resp.usage)Un court message de salutation est une requête d'environ 20 tokens en entrée et 20 en sortie, ce qui aux prix actuels fait $0.0000023 (la liste complète est sur la page des tarifs). Si vous n'avez pas encore envoyé de première requête, Votre première requête API avec CheapTokens vous guide depuis zéro.
La réponse du modèle revient dans choices[0]., et usage montre les tokens comptés. La clé n'apparaît jamais dans le fichier.

Étape 2 : utiliser un fichier .env sans le committer#
Taper export dans chaque nouvelle fenêtre finit par lasser. Un fichier .env garde la valeur à un seul endroit, à côté du projet :
CHEAPTOKENS_API_KEY=<your-key>Python le lit avec python-dotenv (pip install python-) :
from dotenv import load_dotenv
load_dotenv() # fills os.environ from .envLe fichier n'est sûr que si git ne le voit jamais. Ajoutez-le à .gitignore avant le premier commit :
echo ".env" >> .gitignore
git check-ignore -v .envSi tout est correct, la seconde commande affiche quelque chose comme . : git vous indique quelle règle ignore le fichier. Si elle n'affiche rien, la règle ne fonctionne pas. Sous Windows, créez .gitignore dans un éditeur avec une ligne .env, ou utilisez Add- : le >> de PowerShell peut écrire en UTF-16, ce que git risque d'ignorer.
Un piège : .gitignore n'affecte que les fichiers que git ne suit pas encore. Si .env a déjà été commité une fois, lancez git rm - pour que git arrête de le suivre, et considérez la clé qu'il contient comme exposée (voir plus bas). Une bonne habitude est de committer un .env.example avec le nom de la variable et un placeholder au lieu de la valeur, pour qu'un coéquipier sache quoi définir.
Si la clé a fuité : que faire, dans l'ordre#
Peut-être que la clé est allée dans un dépôt public, peut-être qu'elle traînait dans une capture d'écran, peut-être que vous avez collé toute la config dans un fil de forum. L'ordre compte plus que la vitesse de chaque étape prise isolément.
Les recommandations de GitHub (même page, consultée le 29 octobre 2026) sont de révoquer l'identifiant immédiatement ; réécrire l'historique Git est optionnel et souvent inutile une fois l'identifiant révoqué. Les gens ont tendance à faire l'inverse : ils passent une heure à nettoyer l'historique alors que la clé fonctionne toujours. Ne faites pas ça.
Choisissez votre cas
Qu'est-il arrivé à votre clé ? Choisissez le cas le plus proche
Choisissez une option pour voir la réponse
La clé était dans un commit désormais public
Retirez d'abord la clé du code, passez à la variable d'environnement, ajoutez .env à .gitignore, et surveillez votre solde pour des requêtes que vous n'avez pas envoyées. Nettoyer l'historique est un bonus ensuite, pas la partie urgente.
La clé était dans une capture d'écran ou un fichier partagé
Même ordre : cessez d'utiliser cette clé dans vos outils et passez à la variable d'environnement, puis supprimez le post ou le fichier si vous pouvez. Une capture d'écran supprimée a peut-être déjà été copiée, donc ne comptez pas sur la suppression seule.
La même clé est utilisée dans plusieurs outils
Passez par chaque endroit qui détenait la clé : votre profil de shell, les fichiers .env, les outils d'éditeur et de terminal, et pointez chacun vers la variable d'environnement, pour qu'il n'y ait qu'un seul endroit à modifier. Si un outil n'arrive pas à lire la variable, le guide de dépannage 401/404 montre à quoi ressemble l'erreur.

Après le nettoyage, envoyez une petite requête de test, comme à l'étape 1, et vérifiez votre solde. Si elle répond et que le solde et les requêtes semblent normaux, le nettoyage est terminé ; surveillez le solde les jours suivants. Une clé qui a été publique doit être considérée comme exposée même après l'avoir retirée du code, donc surveillez le solde et le nombre de requêtes pour tout ce que vous n'avez pas envoyé, et ne réutilisez pas cette clé ailleurs. Pour les endroits où une clé a tendance à vivre, voir Où brancher votre propre clé API.
Vérifiez-vous#
Essayez vous-mêmeEssayez : supprimez la variable et lancez le script. Que voyez-vous ?Afficher la réponse
Python s'arrête avec KeyError: 'CHEAPTOKENS_ avant qu'aucune requête ne quitte votre machine. C'est le bon échec : le script refuse de s'exécuter sans la clé au lieu d'en utiliser une collée en douce. Si vous voyez plutôt un 401, la variable est définie mais la clé est mauvaise ; vérifiez la clé et l'adresse avec le guide 401/404.



