Voltar ao blog

IA para iniciantesGuia

Tokens de entrada vs saída: pelo que uma API de IA te cobra

Por que uma API de IA conta tokens de entrada e saída separadamente, onde lê-los no campo usage e como calcular o custo de uma requisição.

Por CheapTokens TeamPublicado em Atualizado em 6 min de leitura

Capa com o título “Tokens de entrada vs saída” e a linha “Pelo que você paga em uma requisição de API” sobre um fundo de grade escuro
Nesta página
  1. O que conta como entrada e o que conta como saída
  2. Onde ler os números: o bloco usage
  3. Por que os dois lados têm preços diferentes
  4. A fórmula
  5. Um exemplo resolvido com um modelo real
  6. Usando no código
  7. Como gastar menos tokens
  8. O que lembrar

Se você acabou de fazer sua primeira chamada de API a um modelo de linguagem, provavelmente viu um bloco usage na resposta e se perguntou o que exatamente ele conta. A resposta curta: toda requisição tem dois medidores. Um conta os tokens que você envia (entrada), o outro conta os tokens que o modelo escreve de volta (saída). Cada medidor tem seu próprio preço, e o custo de uma requisição é a soma dos dois.

Este guia mostra onde encontrar os números, como transformá-los em dólares e o que você pode mudar para gastar menos. Se a palavra "token" ainda está nebulosa, comece por O que é um token em IA?.

O que conta como entrada e o que conta como saída#

Tokens de entrada são tudo o que o modelo precisa ler para te responder:

  • sua mensagem mais recente;
  • o system prompt (instruções como "responda brevemente, em inglês");
  • as mensagens anteriores da conversa, se você as enviar novamente;
  • documentos, código ou resultados de busca que você cola na requisição.

Tokens de saída são tudo o que o modelo gera em resposta. No formato compatível com OpenAI, este é o texto em choices[0].message.content. Alguns modelos em modo de raciocínio também geram tokens de raciocínio antes da resposta final; consulte a página de preços do modelo para ver se eles são cobrados como saída.

O ponto importante para iniciantes: o modelo não se lembra do seu chat entre requisições. Um app de chat reenvia todo o histórico a cada vez, então a entrada de uma conversa longa cresce a cada turno, mesmo que sua nova mensagem tenha uma linha só.

Onde ler os números: o bloco usage#

Toda resposta não-streaming de uma API compatível com OpenAI termina com um objeto usage. Este é um exemplo didático do seu formato:

json
{
  "choices": [
    { "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
  ],
  "usage": {
    "prompt_tokens": 2000,
    "completion_tokens": 500,
    "total_tokens": 2500
  }
}
Campo O que significa Cobrado como
prompt_tokens Tokens em tudo o que você enviou Entrada
completion_tokens Tokens que o modelo gerou Saída
total_tokens prompt_tokens + completion_tokens Não é um preço separado: é apenas a soma

Um erro comum de iniciante é multiplicar total_tokens por um único preço. Como entrada e saída têm preços diferentes, você precisa dos dois números separadamente.

Alguns provedores adicionam campos extras. Por exemplo, a própria API da DeepSeek também divide prompt_tokens em prompt_cache_hit_tokens e prompt_cache_miss_tokens e, no modo de raciocínio, reporta reasoning_tokens (fonte: DeepSeek API docs, verificado em 21 de outubro de 2026). Os três campos da tabela são os que você pode confiar em qualquer resposta compatível com OpenAI.

Quando você faz streaming da resposta, o usage não é conhecido no início. Na própria API da DeepSeek ele chega no último chunk de conteúdo antes de data: [DONE] (DeepSeek API docs, verificado em 21 de outubro de 2026); outras APIs podem enviá-lo de forma diferente ou apenas sob demanda, então verifique o que seu cliente recebe. O streaming em si é abordado em Respostas em streaming em Python.

Por que os dois lados têm preços diferentes#

Ler seu prompt e escrever uma resposta são tipos diferentes de trabalho. O modelo processa o prompt inteiro em uma passada, mas precisa produzir a resposta um token por vez, e cada novo token depende dos anteriores. É por isso que os provedores costumam cobrar mais pela saída do que pela entrada, e por isso você vê dois números por modelo em qualquer lista de preços.

O modelo que usamos como exemplo abaixo, MiniMax-M2.7 (id minimax-m2.7), segue esse padrão. Os preços atuais por 1M de tokens são $0.05 para entrada e $0.15 para saída.

A fórmula#

Os preços são cotados por 1 milhão de tokens, então o custo de uma requisição é:

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

Aqui está com preços redondos inventados, apenas para mostrar a aritmética (exemplo, substitua pelos preços atuais da tabela abaixo):

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

Um exemplo resolvido com um modelo real#

Pegue a requisição do exemplo usage acima: 2.000 tokens de entrada e 500 tokens de saída. No MiniMax-M2.7 via CheapTokens, custa $0.00018. O número é calculado a partir da lista de preços atual toda vez que a página é exibida.

Uma única requisição é minúscula, então ajuda escalar. Um pequeno app que envia 10.000 requisições desse tamanho usa 20.000.000 de tokens de entrada e 5.000.000 de tokens de saída, o que dá $1.75.

A mesma requisição em outros modelos da nossa lista:

Modelo Custo 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 de entrada e 500 tokens de saída no total. Os preços por 1M de tokens são atuais e mudam junto com nossas tarifas; a coluna OpenRouter mostra preços de referência para a mesma carga de trabalho.

Observe que a saída é uma parte menor da contagem de tokens aqui (500 de 2.500), mas uma parte maior da conta do que sua fatia de tokens, porque os tokens de saída custam mais (veja a tabela). Para este modelo, o lado da saída também é onde a economia em relação ao preço de referência do OpenRouter se confirma, o que é útil se seu app escreve respostas longas.

Usando no código#

Você pode ler usage do pacote oficial openai para Python apontando-o para a base URL da 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}")

Se você ainda não enviou uma requisição, siga primeiro Sua primeira requisição de API com CheapTokens.

Como gastar menos tokens#

  • Encurte o prompt. Reduza o system prompt e remova instruções que o modelo não precisa. Todo token que você envia é cobrado em toda requisição.
  • Reduza o histórico. Em um chat longo, mantenha os últimos turnos ou um resumo curto em vez da conversa inteira.
  • Envie apenas a parte relevante de um documento. Uma página de texto é mais barata que um arquivo inteiro.
  • Peça o formato que você precisa. "Responda em três tópicos" produz menos tokens de saída do que um ensaio aberto.
  • Defina max_tokens de propósito. Ele limita apenas a saída. Muito baixo e a resposta é cortada; os detalhes estão em Por que uma resposta de IA para no meio da frase? O MiniMax-M2.7 na CheapTokens permite até 8.192 tokens de saída por resposta e tem uma janela de contexto de 180K.

Para estimar o custo de um fluxo de trabalho maior, veja Como estimar o custo de um agente de IA.

O que lembrar#

  1. Toda requisição tem tokens de entrada (prompt_tokens) e tokens de saída (completion_tokens).
  2. Eles têm preços separados, geralmente com a saída mais cara.
  3. Custo = tokens de entrada × preço de entrada + tokens de saída × preço de saída, com preços por 1M de tokens.
  4. Leia os números de usage na resposta em vez de adivinhar.

Na CheapTokens, um único saldo pré-pago cobre todos os modelos, os preços por modelo são fixos sem tarifa de horário de pico, e a API é compatível com OpenAI Chat Completions e Anthropic Messages. Para testar o exemplo acima, obtenha uma chave de API e envie sua primeira requisição.

Preços atuais de todos os modelos: Preços da CheapTokens.