Retour au blog

IA pour débutantsGuide

Tokens d'entrée vs de sortie : ce qu'une API IA vous facture

Pourquoi une API IA compte séparément les tokens d'entrée et de sortie, où les lire dans le champ usage, et comment calculer le coût d'une requête.

Par CheapTokens TeamPublié le Mis à jour le 6 min de lecture

Couverture avec le titre « Tokens d'entrée vs de sortie » et la ligne « Ce que vous payez dans une requête API » sur un fond de grille sombre
Sur cette page
  1. Ce qui compte comme entrée et ce qui compte comme sortie
  2. Où lire les chiffres : le bloc usage
  3. Pourquoi les deux côtés ont des prix différents
  4. La formule
  5. Un exemple concret avec un vrai modèle
  6. Utilisation dans le code
  7. Comment dépenser moins de tokens
  8. À retenir

Si vous venez d'effectuer votre premier appel API à un modèle de langage, vous avez probablement vu un bloc usage dans la réponse et vous vous êtes demandé ce qu'il compte exactement. La réponse courte : chaque requête a deux compteurs. L'un compte les tokens que vous envoyez (entrée), l'autre compte les tokens que le modèle renvoie (sortie). Chaque compteur a son propre prix, et le coût d'une requête est la somme des deux.

Ce guide montre où trouver les chiffres, comment les convertir en dollars, et ce que vous pouvez changer pour dépenser moins. Si le mot « token » reste flou, commencez par Qu'est-ce qu'un token en IA ?.

Ce qui compte comme entrée et ce qui compte comme sortie#

Les tokens d'entrée sont tout ce que le modèle doit lire pour vous répondre :

  • votre dernier message ;
  • le prompt système (des instructions comme « réponds brièvement, en français ») ;
  • les messages précédents de la conversation, si vous les renvoyez ;
  • les documents, le code ou les résultats de recherche que vous collez dans la requête.

Les tokens de sortie sont tout ce que le modèle génère en réponse. Dans le format compatible OpenAI, c'est le texte dans choices[0].message.content. Certains modèles en mode réflexion génèrent aussi des tokens de raisonnement avant la réponse finale ; consultez la page tarifaire d'un modèle pour savoir s'ils sont facturés comme sortie.

Le point important pour les débutants : le modèle ne se souvient pas de votre conversation entre les requêtes. Une application de chat renvoie tout l'historique à chaque fois, donc l'entrée d'une longue conversation croît à chaque tour, même si votre nouveau message tient sur une ligne.

Où lire les chiffres : le bloc usage#

Chaque réponse non-streaming d'une API compatible OpenAI se termine par un objet usage. Voici un exemple pédagogique de sa forme :

json
{
  "choices": [
    { "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
  ],
  "usage": {
    "prompt_tokens": 2000,
    "completion_tokens": 500,
    "total_tokens": 2500
  }
}
Champ Signification Facturé comme
prompt_tokens Tokens dans tout ce que vous avez envoyé Entrée
completion_tokens Tokens générés par le modèle Sortie
total_tokens prompt_tokens + completion_tokens Pas un prix séparé : c'est seulement la somme

Une erreur courante chez les débutants est de multiplier total_tokens par un seul prix. Comme l'entrée et la sortie ont des prix différents, il faut les deux nombres séparément.

Certains fournisseurs ajoutent des champs supplémentaires. Par exemple, l'API propre à DeepSeek divise aussi prompt_tokens en prompt_cache_hit_tokens et prompt_cache_miss_tokens et, en mode réflexion, indique reasoning_tokens (source : documentation de l'API DeepSeek, consultée le 21 octobre 2026). Les trois champs du tableau sont ceux sur lesquels vous pouvez compter dans toute réponse compatible OpenAI.

Lorsque vous streamez la réponse, l'usage n'est pas connu au départ. Dans l'API propre à DeepSeek, il arrive dans le dernier chunk de contenu avant data: [DONE] (documentation de l'API DeepSeek, consultée le 21 octobre 2026) ; d'autres API peuvent l'envoyer différemment ou uniquement sur demande, vérifiez donc ce que reçoit votre client. Le streaming lui-même est traité dans Réponses en streaming en Python.

Pourquoi les deux côtés ont des prix différents#

Lire votre prompt et écrire une réponse sont deux types de travail différents. Le modèle traite tout le prompt en une seule passe, mais il doit produire la réponse un token à la fois, et chaque nouveau token dépend des précédents. C'est pourquoi les fournisseurs facturent généralement la sortie plus cher que l'entrée, et pourquoi vous voyez deux nombres par modèle dans n'importe quelle grille tarifaire.

Le modèle que nous utilisons comme exemple ci-dessous, MiniMax-M2.7 (id minimax-m2.7), suit ce schéma. Les prix actuels pour 1M de tokens sont de $0.05 pour l'entrée et $0.15 pour la sortie.

La formule#

Les prix sont indiqués pour 1 million de tokens, donc le coût d'une requête est :

text
cost = input_tokens × input_price ÷ 1,000,000
     + output_tokens × output_price ÷ 1,000,000

Voici avec des prix ronds inventés, uniquement pour montrer l'arithmétique (exemple, remplacez par les prix actuels du tableau ci-dessous) :

python
# example, substitute current prices from the table
price_in = 0.20    # USD per 1M input tokens
price_out = 0.80   # USD per 1M output tokens

prompt_tokens = 2000
completion_tokens = 500

cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USD

Un exemple concret avec un vrai modèle#

Prenez la requête de l'exemple usage ci-dessus : 2 000 tokens d'entrée et 500 tokens de sortie. Sur MiniMax-M2.7 via CheapTokens, elle coûte $0.00018. Le nombre est calculé à partir de la grille tarifaire actuelle à chaque affichage de la page.

Une seule requête est minuscule, donc il est utile de passer à l'échelle. Une petite application qui envoie 10 000 requêtes de cette taille utilise 20 000 000 de tokens d'entrée et 5 000 000 de tokens de sortie, soit $1.75.

La même requête sur d'autres modèles de notre liste :

Modèle Coût OpenRouter
GLM-5.3-Flash $0.00006 $0.00012
DeepSeek-V4-Flash $0.00008 $0.00017
MiniMax-M2.7 $0.00018 $0.0012

2 000 tokens d'entrée et 500 tokens de sortie au total. 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.

Remarquez que la sortie représente une part mineure du nombre de tokens ici (500 sur 2 500) mais une part plus importante de la facture que sa part de tokens, car les tokens de sortie sont facturés plus cher (voir le tableau). Pour ce modèle, c'est aussi du côté de la sortie que l'économie par rapport au prix de référence d'OpenRouter se confirme, ce qui est utile si votre application écrit de longues réponses.

Utilisation dans le code#

Vous pouvez lire usage depuis le package Python officiel openai en le pointant vers l'URL de base de CheapTokens :

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="YOUR_API_KEY",
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)

usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)

# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")

Si vous n'avez pas encore envoyé de requête, suivez d'abord Votre première requête API avec CheapTokens.

Comment dépenser moins de tokens#

  • Raccourcissez le prompt. Allégez le prompt système et supprimez les instructions dont le modèle n'a pas besoin. Chaque token que vous envoyez est facturé à chaque requête.
  • Réduisez l'historique. Dans un long chat, gardez les derniers tours ou un court résumé au lieu de toute la conversation.
  • N'envoyez que la partie pertinente d'un document. Une page de texte coûte moins cher qu'un fichier entier.
  • Demandez le format dont vous avez besoin. « Réponds en trois puces » produit moins de tokens de sortie qu'un essai libre.
  • Définissez max_tokens volontairement. Cela limite uniquement la sortie. Trop bas et la réponse est coupée ; les détails sont dans Pourquoi une réponse IA s'arrête-t-elle en milieu de phrase ? MiniMax-M2.7 sur CheapTokens autorise jusqu'à 8 192 tokens de sortie par réponse et dispose d'une fenêtre de contexte de 180K.

Pour estimer le coût d'un workflow plus important, voir Comment estimer le coût d'un agent IA.

À retenir#

  1. Chaque requête a des tokens d'entrée (prompt_tokens) et des tokens de sortie (completion_tokens).
  2. Ils ont des prix séparés, généralement avec la sortie plus chère.
  3. Coût = tokens d'entrée × prix d'entrée + tokens de sortie × prix de sortie, avec des prix pour 1M de tokens.
  4. Lisez les nombres depuis usage dans la réponse plutôt que de deviner.

Sur CheapTokens, un seul solde prépayé couvre tous les modèles, les prix par modèle sont fixes sans tarification aux heures de pointe, et l'API est compatible avec OpenAI Chat Completions et Anthropic Messages. Pour essayer l'exemple ci-dessus, obtenez une clé API et envoyez votre première requête.

Prix actuels pour chaque modèle : Tarifs CheapTokens.