Quanto custa programar com ChatGPT: os $20 do Plus contra a API
A escolha entre assinatura e API erra nas duas direções, e pelo mesmo motivo: no chat cada mensagem reenvia a conversa inteira. O gasto não cresce com o número de perguntas, cresce com o quadrado dele.
Com pressa? Peça o TL;DR ao Claude — ele lê a página e resume.
Quase todo mundo que programa com modelo online está pagando errado — e o mais interessante é que o erro acontece nas duas direções ao mesmo tempo.
De um lado, quem assina os US$ 20 e abre o chat três vezes por mês. Está pagando cerca de sete dólares por conversa e nem desconfia.
Do outro, quem migrou para a API porque “por token é muito mais barato”, ligou o script, mandou a conversa inteira em cada chamada e fechou o mês gastando o dobro da assinatura que cancelou.
Os dois erros têm a mesma raiz: ninguém faz a conta do contexto. Este post é essa conta, com os preços vigentes em 10 de fevereiro de 2025 e a aritmética aberta para você refazer com o seu uso.
Os preços que valem hoje
Comecemos pelo que é fato de tabela. Assinaturas primeiro:
| Assinatura | Preço mensal (US$) |
|---|---|
| ChatGPT Plus | 20 |
| Claude Pro | 20 |
| Cursor Pro | 20 |
| GitHub Copilot | 10 |
E as APIs, por milhão de tokens:
| Modelo (API) | Entrada (US$/1M) | Saída (US$/1M) |
|---|---|---|
| GPT-4o | 2,50 | 10,00 |
| GPT-4o mini | 0,15 | 0,60 |
| Claude 3.5 Sonnet | 3,00 | 15,00 |
| xAI grok-beta | 5,00 | 15,00 |
Olhando essa segunda tabela, a conclusão parece óbvia. Uma pergunta de 200 tokens custa US$ 0,0005 de entrada no GPT-4o. Meio milésimo de dólar. Com esse número na cabeça, US$ 20 por mês viram quarenta mil perguntas, e a assinatura parece um roubo.
Some a resposta e o número já muda de ordem. Uma resposta de 500 tokens custa US$ 0,005 — dez vezes a pergunta, e a decomposição é limpa: o token de saída custa quatro vezes o de entrada, e a resposta é duas vezes e meia maior que a pergunta. Pergunta e resposta juntas: US$ 0,0105. Agora os US$ 20 valem 1.905 mensagens, não quarenta mil.
Ainda parece muito. É aqui que a conta desmonta.
A conta que ninguém faz
A API não tem memória. Cada chamada é independente, e o modelo não sabe nada do que foi dito na chamada anterior. Se a conversa precisa de continuidade, quem carrega a continuidade é você: a cada mensagem, o histórico inteiro volta a ser enviado como entrada, e volta a ser cobrado.
A interface do chat esconde isso muito bem. Você digita uma linha e parece que pagou uma linha. Por baixo, foi embora a conversa completa outra vez.
Então a décima mensagem não custa como a primeira. Ela custa a primeira mais tudo que veio antes. Vamos escrever isso direito.
Chamo de C o contexto inicial — o arquivo que você colou, as instruções de sistema, o stack trace. p é o tamanho da sua pergunta e r o tamanho da resposta do modelo. No turno n:
entrada no turno n = C + (n − 1) × (p + r) + p
entrada acumulada em N = N × (C + p) + (p + r) × N × (N − 1) / 2
saída acumulada em N = N × r
O termo que importa é o do meio. Ele tem N × (N − 1), ou seja, cresce com o quadrado do número de idas e voltas. Dobrar o tamanho da conversa não dobra o custo: quadruplica.
Para a conta virar número preciso fixar os três parâmetros. Escolhi um cenário de sessão de programação que me parece honesto, e deixo declarado que são valores estipulados, não medidos: C = 2.000 tokens (um arquivo de umas 200 linhas colado no começo), p = 200 tokens por pergunta (um parágrafo e um trecho pequeno) e r = 500 tokens por resposta (código com explicação curta). Troque pelos seus e a estrutura da conta não muda.
| Idas e voltas | Entrada no último turno | Entrada acumulada | Custo GPT-4o (US$) | Se fosse linear (US$) |
|---|---|---|---|---|
| 1 | 2.200 | 2.200 | 0,0105 | 0,0105 |
| 5 | 5.000 | 18.000 | 0,0700 | 0,0525 |
| 10 | 8.500 | 53.500 | 0,1838 | 0,1050 |
| 20 | 15.500 | 177.000 | 0,5425 | 0,2100 |
| 30 | 22.500 | 370.500 | 1,0763 | 0,3150 |
Trinta idas e voltas — uma sessão de tarde, nada excepcional — custam US$ 1,08, e não os US$ 0,315 que a conta de cabeça prometia. Erro de 3,4 vezes.
Dois números dessa tabela merecem ser ditos em voz alta.
O primeiro: a trigésima mensagem sozinha custa US$ 0,061, contra US$ 0,0105 da primeira. A mesma pergunta, feita no fim da conversa, custa 5,8 vezes mais do que no começo. Você não mudou nada no seu comportamento; mudou o tamanho do que vai junto.
O segundo é pior. Dos 370.500 tokens de entrada cobrados na sessão inteira, apenas 8.000 são texto que eu digitei: os 2.000 do arquivo mais as trinta perguntas de 200 tokens. Todo o resto é material que já tinha passado por ali antes, meu ou do modelo. 97,8% do que você paga em entrada é conversa reenviada.
Não é desperdício por descuido do provedor. É como a inferência funciona: sem o histórico no prompt, o modelo não tem estado. Mas é uma conta que você pode influenciar, e quase ninguém tenta.
O ponto de virada tem fórmula
Com o custo de uma sessão fechado, o ponto de virada é uma divisão:
sessões até empatar com a assinatura = 20 / custo_de_uma_sessão
custo_de_uma_sessão =
( entrada_acumulada × preço_entrada + saída_acumulada × preço_saída ) / 1.000.000
Aplicando a cada modelo, na mesma sessão de trinta turnos:
| Modelo (API) | Sessão de 30 turnos (US$) | Sessões/mês até chegar a US$ 20 |
|---|---|---|
| GPT-4o | 1,0763 | 18,58 |
| GPT-4o mini | 0,0646 | 309,72 |
| Claude 3.5 Sonnet | 1,3365 | 14,96 |
| xAI grok-beta | 2,0775 | 9,63 |
Pouco menos de dezenove sessões de trinta mensagens por mês, no GPT-4o, e a API já alcançou o Plus. No Claude 3.5 Sonnet bastam quinze. No grok-beta, menos de dez — e é aí que o crédito de US$ 25 do beta faz diferença: ele cobre doze sessões, o que para muita gente é o mês inteiro sem tirar o cartão do bolso.
O GPT-4o mini está em outro planeta: seriam 310 sessões, dez por dia, todo dia. Se o seu trabalho cabe no mini, a discussão de assinatura simplesmente não existe.
Traduzindo sessões em horas, que é como a maioria pensa o próprio uso:
| Duração de uma sessão | GPT-4o (h/mês para empatar) | Claude 3.5 Sonnet (h/mês) |
|---|---|---|
| 30 min | 9,3 | 7,5 |
| 45 min | 13,9 | 11,2 |
| 60 min | 18,6 | 15,0 |
| 90 min | 27,9 | 22,4 |
Menos de dez horas por mês de conversa densa e a assinatura provavelmente não se paga. Mais de vinte e a API só ganha se você fizer alguma coisa a respeito do contexto. É exatamente essa faixa do meio, entre dez e vinte horas, que engole quase todo mundo — e é onde a decisão é decidida por detalhe, não por preço de tabela.
O que a assinatura compra e a API não vende
Antes de tratar a escolha como problema de otimização, vale listar o que os US$ 20 entregam que nenhuma planilha de token mostra.
Teto de gasto. Vinte dólares são vinte dólares. Na API não existe teto natural: existe um cartão cadastrado e um limite que você configurou, se lembrou de configurar. Um loop mal fechado num script noturno é uma classe de erro que a assinatura simplesmente não tem.
Zero manutenção. Sem chave para guardar, sem .env, sem rotacionar credencial, sem descobrir que o segredo vazou num commit. O custo disso não é zero, é só invisível.
A interface. Histórico pesquisável, anexo de arquivo, upload de imagem, voz, retomar uma conversa de terça-feira. Reimplementar isso para uso próprio é um projeto paralelo, e projeto paralelo de infraestrutura é onde o tempo de programador vai morrer.
Em compensação, o Plus tem um teto de uso que a API não tem — e ele se move. O número de mensagens do GPT-4o por janela de três horas variou ao longo de 2024 e no começo de 2025 conforme a carga, segundo relatos recorrentes no fórum de desenvolvedores da OpenAI. Não é número para basear conta: é limite que aparece na hora errada. Quem bate nele com frequência tem o ChatGPT Pro a US$ 200 por mês, anunciado em dezembro de 2024 com acesso ilimitado ao o1 — um degrau de dez vezes, que só faz sentido para quem já provou que o degrau de baixo não basta.
O que a API dá e a assinatura não
Três coisas, em ordem crescente de importância.
Escolher o modelo por tarefa. No chat você usa o modelo bom para tudo, inclusive para renomear variável e escrever mensagem de commit. Na API, o trivial vai para o GPT-4o mini, que custa exatamente 6% do GPT-4o — nos dois lados, entrada e saída. Não é economia de centavo: é a diferença entre US$ 1,08 e US$ 0,06 na mesma sessão. O o3-mini, lançado no fim de janeiro, entra na mesma categoria para o que precisa de raciocínio e não de conhecimento amplo.
Automatizar. Rodar em cima de um diff, num hook de commit, em lote sobre cem arquivos. O chat exige uma pessoa presente colando texto; a API não exige ninguém. Ferramentas como o Aider vivem disso.
Controlar o contexto. Esta é a que paga as outras duas, e é o assunto do resto do post.
Cortar contexto é a alavanca que ninguém puxa
No chat, o histórico é sagrado: ele cresce e você assiste. Na API, o histórico é um array que você monta antes de cada chamada, e você decide o que entra.
Vamos comparar três políticas na mesma sessão de trinta turnos:
| Política de contexto | Entrada acumulada (tokens) | Custo GPT-4o (US$) | Economia |
|---|---|---|---|
| Histórico inteiro | 370.500 | 1,0763 | 0% |
| Janela dos 4 últimos turnos | 143.000 | 0,5075 | 52,8% |
| Sem histórico: só C mais a pergunta | 66.000 | 0,3150 | 70,7% |
Uma janela deslizante de quatro turnos — que na prática cobre quase todo pedido de programação, porque a pergunta atual raramente depende do que foi dito vinte mensagens atrás — corta o custo pela metade e não muda nada no que você digita.
E repare na terceira linha: US$ 0,3150. É exatamente o número da coluna “se fosse linear” da primeira tabela. A conta ingênua não estava errada por acaso — ela descreve com precisão o caso em que você não manda histórico nenhum. Toda a diferença entre a conta ingênua e a conta real é o histórico. Quem foi para a API convencido pela conta ingênua fez, sem saber, uma promessa de não usar contexto. Depois usou.
Cache de prompt: desconto com pedágio
Existe um segundo caminho, que ataca o mesmo problema por outro lado: se você vai mandar os mesmos tokens de novo, o provedor pode cobrar menos por eles. Os dois grandes já tinham isso funcionando em fevereiro de 2025.
Na OpenAI, o cache de prompt foi anunciado em outubro de 2024 e é automático — nenhuma mudança de código. Vale para prefixos com pelo menos 1.024 tokens, e o desconto é de 50% sobre a parte da entrada que já foi vista. O ponto crítico está na documentação da API: o acerto só acontece em correspondência exata de prefixo, e o prefixo em cache costuma sobreviver de cinco a dez minutos de inatividade, chegando a no máximo uma hora.
Na Anthropic, o cache virou disponibilidade geral em dezembro de 2024 e é explícito: você marca o ponto de corte com cache_control. A tabela de preços é diferente — para o Claude 3.5 Sonnet, escrever no cache custa US$ 3,75 por milhão (25% acima da entrada normal) e ler custa US$ 0,30 (um décimo dela). O prazo de validade padrão é de cinco minutos, renovados a cada leitura.
Aplicando às nossas trinta idas e voltas. A cada turno, o que já foi enviado antes vira leitura barata e só os 700 tokens novos — a resposta anterior mais a pergunta atual — entram a preço cheio:
| Sessão de 30 turnos | Sem cache (US$) | Com cache (US$) | Economia |
|---|---|---|---|
| GPT-4o | 1,0763 | 0,6413 | 40,4% |
| Claude 3.5 Sonnet | 1,3365 | 0,4138 | 69,0% |
O Claude 3.5 Sonnet sai de mais caro que o GPT-4o para mais barato, e não é pouco: 69% de corte. O motivo é a assimetria das duas políticas — leitura a um décimo do preço compensa com folga o prêmio de 25% na escrita, desde que o cache seja lido várias vezes.
Essa última condição é o pedágio, e ela tem duas cobranças.
A segunda cobrança é o relógio. Poucos minutos de inatividade — cinco no padrão da Anthropic, cinco a dez na OpenAI — e o cache morre. Programar não é digitar sem parar: é ler a resposta, rodar o teste, olhar o log, voltar. Se você levantou para pegar café entre o turno onze e o doze, o turno doze paga entrada cheia — e no caso da Anthropic você já tinha pago 25% a mais para escrever um cache que ninguém leu. O melhor caso da tabela acima é otimista de propósito; o caso real depende do seu ritmo, e o meu eu ainda não cronometrei.
Onde cada escolha ganha
Juntando tudo, com a sessão de trinta turnos como unidade e três volumes mensais:
| Escolha | 5 sessões (US$) | 20 sessões (US$) | 40 sessões (US$) |
|---|---|---|---|
| Assinatura de US$ 20 (Plus ou Claude Pro) | 20,00 | 20,00 | 20,00 |
| GPT-4o mini, histórico inteiro | 0,32 | 1,29 | 2,58 |
| Claude 3.5 Sonnet, histórico com cache | 2,07 | 8,28 | 16,55 |
| GPT-4o, janela de 4 turnos | 2,54 | 10,15 | 20,30 |
| GPT-4o, histórico com cache | 3,21 | 12,83 | 25,65 |
| GPT-4o, histórico inteiro | 5,38 | 21,53 | 43,05 |
| Claude 3.5 Sonnet, histórico inteiro | 6,68 | 26,73 | 53,46 |
| xAI grok-beta, histórico inteiro | 10,39 | 41,55 | 83,10 |
A célula marcada é a que resume o post. Vinte sessões por mês — umas cinco horas por semana de conversa densa — no GPT-4o com histórico inteiro: US$ 21,53, mais caro que a assinatura que essa pessoa cancelou. Mesmo volume, mesmo modelo, mesmo trabalho, com janela de quatro turnos: US$ 10,15. A diferença entre ganhar e perder não está no provedor. Está em quantas vezes você paga pelo mesmo token.
Repare também que a tabela inverte na coluna de cinco sessões: ali, qualquer linha de API ganha da assinatura com folga, e a pior delas — o grok-beta com histórico inteiro — ainda sai por pouco mais da metade dos US$ 20. Uso leve, na API, é quase sempre a escolha certa. Uso pesado sem controle de contexto é quase sempre a errada.
Os outros vinte dólares
Vale registrar que a escolha não é binária. O GitHub Copilot custa US$ 10 — metade do Plus — e o Cursor Pro custa os mesmos US$ 20, ambos com o modelo dentro do editor.
O que os dois vendem é justamente a variável que decide a conta deste post: eles montam o contexto por você. Selecionam trechos do arquivo aberto, dos arquivos vizinhos, do repositório. Você não decide o que entra, e não vê a fatura por token.
É uma troca legítima, e é preciso ser honesto sobre a direção dela: você paga um preço fixo para não pensar na variável. Se o contexto que a ferramenta escolhe é bom, você levou vantagem. Se é ruim, você não tem como saber, porque a conta não chega discriminada. Para uso previsível dentro do editor, é o melhor negócio da lista pelos US$ 10 do Copilot. Para trabalho que sai do editor — analisar log, discutir arquitetura, gerar em lote —, não substitui nem o chat nem a API.
O que eu ainda preciso medir
Toda a aritmética acima é derivada de preço de tabela e de uma sessão-modelo que eu estipulei. Ela é correta, e ainda assim não responde à pergunta que importa para mim, que é qual é o meu uso de verdade:
São cinco números, e eu não tenho nenhum: quantas sessões eu faço por mês, quanto dura cada uma, quantas idas e voltas ela tem, quantos tokens de entrada isso dá numa semana normal de trabalho, e quanto de fato apareceu na fatura.
Sem esses cinco números, qualquer recomendação que eu desse seria opinião com aparência de conta. Com eles, a fórmula do meio do post responde sozinha — e é por isso que ela está aberta ali em cima, para você preencher com o seu uso antes de eu preencher com o meu.
Se sobrar uma frase deste post, que seja esta: o preço por token é a parte do problema que já vem resolvida na tabela do provedor; o que decide a sua conta é quantas vezes você paga pelo mesmo token.
Quem assina os US$ 20 comprou o direito de não pensar nisso — e para uso pesado e desatento, esse direito é barato. Quem foi para a API comprou o controle da variável, mas controle só vira desconto quando é exercido: se o array de mensagens cresce sozinho até o fim da conversa, você pagou pela chave de um cofre que nunca abriu.
E o número que ninguém deveria esquecer é o 97,8%. Essa é a fração da entrada, numa sessão de trinta mensagens, que é texto que o modelo já tinha visto. Não existe otimização de prompt, escolha de modelo ou negociação de preço que chegue perto de mexer nessa fração. Só existe decidir o que entra.