Retour au blog

Premiers pasGuide

Première requête API dans VS Code : un fichier .http, la clé depuis .env

Envoyez votre premier chat completion à CheapTokens depuis VS Code avec l'extension REST Client, gardez la clé hors de git, et trouvez la réponse et l'usage des tokens.

Par CheapTokens TeamPublié le 5 min de lecture

Fichier de requête VS Code avec un POST vers l'API CheapTokens et la clé lue depuis .env
Sur cette page
  1. Installez l'extension et placez la clé dans .env
  2. Écrivez le fichier .http
  3. Envoyez-la et trouvez la réponse
  4. Changez de modèle en une ligne
  5. Si ça ne fonctionne pas

Vous pouvez envoyer votre première requête à CheapTokens sans quitter VS Code : installez l'extension REST Client, écrivez un fichier .http, gardez la clé dans un .env à côté et appuyez sur Ctrl+Alt+R. La réponse s'ouvre dans un panneau à côté du fichier, et le texte et le nombre de tokens sont deux champs que vous repérez d'un coup d'œil.

Si vous avez déjà un éditeur ouvert, c'est plus simple que d'installer une autre application juste pour dire « Hello » à un modèle. Et la requête reste dans un fichier texte brut, donc vous pouvez la relancer demain ou la committer (sans la clé) pour un collègue. D'autres façons d'envoyer la même requête sont décrites dans Première requête avec HTTPie et Votre première requête API avec CheapTokens.

Installez l'extension et placez la clé dans .env#

REST Client est l'extension humao.rest-client. Dans VS Code, appuyez sur F1, tapez ext install, cherchez rest-client et installez-la. (Vérifié d'après le README de l'extension le 9 novembre 2026.)

Maintenant la clé. Le README décrit {{$dotenv NAME}} : il lit une valeur dans un fichier .env situé dans le même répertoire que votre fichier .http. C'est exactement ce qu'on veut, car la clé n'apparaît jamais dans le fichier de requête. Créez un dossier pour l'expérience et placez-y deux fichiers.

.env :

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore :

text
.env

Créez la clé dans votre compte CheapTokens et collez-la à la place du placeholder. Pourquoi la ligne d'ignore est importante, et que faire si une clé atterrit dans un commit, voir Stocker une clé API en sécurité.

Remettre en ordre

Mettez la configuration dans le bon ordre

  1. Installez l'extension REST Client
  2. Ajoutez .env à .gitignore
  3. Placez la clé dans .env à côté du fichier .http
  4. Appuyez sur Ctrl+Alt+R sur la requête

Écrivez le fichier .http#

Créez first.http dans le même dossier. La syntaxe est courte : une ligne de requête (POST URL HTTP/1.1, la méthode est facultative et vaut GET par défaut), des lignes d'en-tête Name: value jusqu'à la première ligne vide, puis le corps après une ligne vide. Les requêtes sont séparées par une ligne de trois # ou plus.

http
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json

{
  "model": "zai-org/GLM-5.3-Flash",
  "messages": [{ "role": "user", "content": "Hello" }]
}

Trois choses à remarquer. L'adresse est la base de l'API CheapTokens, https://api.cheaptokens.dev/v1, plus /chat/completions. Le modèle est écrit avec son id complet, zai-org/GLM-5.3-Flash : un modèle à contexte de 390K qui peut écrire jusqu'à 8 192 tokens par réponse. Et la clé n'est qu'un placeholder {{$dotenv …}}, donc ce fichier peut être committé sans risque.

La clé vit dans .env ; first.http ne contient qu'une référence vers elle
La clé vit dans .env, first.http ne contient qu'une référence vers elle

Si votre configuration ne prend pas en compte le fichier .env, le README décrit aussi {{$processEnv NAME}}, qui lit une variable depuis l'environnement de votre machine à la place.

Envoyez-la et trouvez la réponse#

Cliquez sur « Send Request » au-dessus de la ligne de requête, ou appuyez sur Ctrl+Alt+R (Cmd+Alt+R sur macOS). Vous pouvez aussi faire un clic droit ou utiliser F1. La réponse s'ouvre dans un panneau séparé. Si vous préférez un onglet d'éditeur normal où vous pouvez chercher et replier, réglez rest-client.previewResponseInUntitledDocument sur true dans les paramètres.

La réponse est le JSON standard de chat-completions. Deux endroits comptent dès le premier jour :

  • choices[0].message.content est le texte de la réponse. À côté, finish_reason vous indique pourquoi le modèle s'est arrêté. length signifie que la réponse a été coupée par la limite de tokens.
  • usage contient les comptes de tokens pour cette requête : les tokens envoyés et les tokens écrits par le modèle. C'est ce que vous payez, alors regardez-le à chaque fois.
De Ctrl+Alt+R au texte de la réponse et au champ usage
Où regarder dans le panneau de réponse
Essayez vous-mêmeEssayez : comment voir qu'une réponse a été coupée ?Afficher la réponse

Regardez finish_reason dans la réponse. S'il indique length, le modèle a atteint la limite de tokens avant de terminer. Ajoutez une ligne "max_tokens" au corps, ou augmentez-la, et renvoyez.

Pour avoir une idée du coût : disons que vous envoyez cette requête 100 fois avec environ 1 000 tokens en entrée et 300 en sortie (une hypothèse pour l'exemple, pas une mesure).

Modèle Par requête 100 requêtes OpenRouter, 100 requêtes
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $0.000095 $0.0095 $0.114

1 000 tokens d'entrée et 300 tokens de sortie par requête. Les prix par million de tokens sont actuels et évoluent avec nos tarifs ; la colonne OpenRouter indique des prix de référence pour la même charge de travail.

Le tableau montre le prix réel de cette charge de travail sur chaque modèle, avec une colonne OpenRouter pour comparer. Un petit « Hello » coûte bien moins.

Changez de modèle en une ligne#

L'avantage d'un fichier texte brut : changez une ligne et renvoyez. Remplacez l'id du modèle par deepseek-ai/DeepSeek-V4-Flash-0731 (contexte de 380K, jusqu'à 32 768 tokens par réponse, un seul prix à toute heure, au total moins cher qu'OpenRouter en comptant entrée et sortie ensemble) et appuyez encore une fois sur Ctrl+Alt+R. Même corps, même clé, une réponse différente et un usage différent.

Vous voulez garder les deux ? Collez une seconde requête sous une ligne ### avec l'autre id de modèle. Chaque requête a son propre lien Send Request, donc vous pouvez les exécuter l'une après l'autre et comparer. Un doute sur un id ? Lister les modèles avec GET /v1/models montre les chaînes exactes.

Si ça ne fonctionne pas#

Associer les paires

Associez le symptôme à la cause

  • 401 UnauthorizedLa clé est vide ou erronée, souvent parce que .env n'est pas dans le même dossier que le fichier .http
  • 404 Not FoundUne faute de frappe dans le chemin de l'URL ou dans l'id du modèle
  • La réponse s'arrête en milieu de phrase, finish_reason vaut lengthLa limite de tokens a été atteinte, augmentez max_tokens

Pour les deux premiers, API 401 ou 404 : mauvaise clé, URL de base ou id de modèle détaille les vérifications. Les détails complets de la requête sont dans la documentation CheapTokens, et les prix actuels sont sur la page de tarifs.

Voilà tout le flux de travail : un fichier, une clé dans .env, un raccourci. À partir de là, vous pouvez ajouter un message système, changer max_tokens, ou transformer le même corps en code dans n'importe quel langage.