O que surpreende na fatura de um agente de programação não é a tarifa. É que a tarifa parece pequena, a tarefa parece pequena, e a fatura não é.
Quatro motivos, e só um deles tem a ver com o preço por milhão de tokens.
Seu contexto é reenviado a cada turno
Um chat é uma requisição. Um agente resolvendo uma tarefa é um laço, e cada volta reenvia a conversa acumulada inteira: as instruções, os arquivos que ele leu, os diffs que propôs, os resultados das ferramentas e tudo o que disse no caminho.
O turno doze não é um doze avos do trabalho. Ele carrega os onze anteriores como entrada. Uma tarefa que toca seis arquivos e dura vinte turnos pode enviar esses seis arquivos vinte vezes.
Por isso «usar um modelo mais barato» ajuda menos do que se espera e «estreitar a tarefa» ajuda mais. Cortar o preço pela metade corta a fatura pela metade. Cortar os turnos pela metade corta a fatura e encolhe o contexto que cada turno restante carrega.
O cache move o custo, não o elimina
Todo provedor sério já oferece cache: mande o mesmo prefixo duas vezes e a segunda leitura sai bem mais barata. Ótimo. Também significa três preços em vez de um — escrita em cache, leitura de cache e entrada comum — e a escrita costuma custar mais que a entrada sem cache.
Um agente que reordena o contexto entre turnos, ou que insere algo perto do começo, paga a escrita repetidamente e nunca ganha o desconto da leitura. Por fora o comportamento é idêntico. Na fatura, não.
O catálogo do Codoro guarda os quatro números por modelo — entrada, saída, entrada em cache e escrita em cache — porque uma tabela com um único preço de entrada não consegue expressar isso, e uma tabela que não consegue expressar acaba sendo usada para tomar uma decisão errada.
A tarifa que você consultou pode não ser a que você paga
Esta é a parte que eu não teria previsto antes de construir a cobrança.
O preço publicado de um modelo muitas vezes não é um número só. O mesmo modelo pode ter uma tarifa nos Estados Unidos e outra na UE. Alguns cobram conforme o endpoint do provedor que atender. Outros têm faixas de contexto longo, em que cruzar um limiar de entrada reprecifica a requisição inteira, não só o excedente.
E a escolha de região e de endpoint não é nossa. Quem decide é o gateway, depois que enviamos.
Isso cria um problema real para qualquer coisa que queira parar uma execução antes de estourar o orçamento: é preciso se comprometer com um número antes de acontecer aquilo que determina o número.
Reservar e liquidar são operações diferentes
A saída é segurar e liquidar a dois preços distintos, e dizer isso explicitamente.
A reserva é feita antes do primeiro token, pelo preço mais caro que a requisição poderia atrair —
o máximo entre as variantes regionais e, quando o modelo cobra por provedor, entre os endpoints no ar.
No catálogo do Codoro isso é um campo separado, reserveRates, que só existe quando difere do preço
de capa — na maioria dos modelos, não difere.
A liquidação é a tarifa real publicada pelo provedor para o que de fato aconteceu.
Os dois erros possíveis são reais e não são simétricos. Reservar pelo preço de capa reserva de menos, e reservar de menos anula o sentido do teto: a reserva é justamente o que interrompe uma execução. Mas liquidar pelo preço mais caro cobraria de cada desenvolvedor um adicional regional que a requisição talvez nunca tenha tido — e esse erro aparece numa fatura, onde dá para ver.
Uma retenção não é uma cobrança. Confundir as duas é o erro pequeno mais caro que existe neste código.
Os tetos, e qual deles importa
| Teto | Padrão | Quem define |
|---|---|---|
| Por execução | US$ 2,00 | O desenvolvedor, por tarefa |
| Por desenvolvedor por dia | US$ 25,00 | O dono do time |
| Markup com a sua própria chave | 0% | Não se aplica |
O que muda comportamento é o primeiro, porque age enquanto você ainda está ali. Um teto diário conta sobre uma tarde ruim depois que a tarde passou. Um teto por execução interrompe a tarefa específica que está dando errado, que é o momento em que a informação vale alguma coisa.
Ao bater no teto, a execução pausa e oferece um modelo mais barato. Não rebaixa em silêncio, e isso é proposital: uma execução que trocasse de modelo no meio entregaria um diff que você revisaria com premissas que deixaram de valer na metade do caminho.
Sua chave ou a nossa
Com a sua própria chave o markup é zero. O provedor cobra você direto, a chave fica no chaveiro do macOS e só é transmitida ao fornecedor que a emitiu. O Codoro não fica com nada dos tokens.
Com crédito hospedado o markup padrão é de 40% sobre o custo, com exceções publicadas por modelo. Vale ser direto sobre o que isso paga: depois dos 2,9% mais 30 centavos da Stripe, 40% sobre custo rende algo em torno de 25% da receita. É a margem pela conveniência de uma fatura só e nenhuma chave para administrar.
Se você já tem contas nos provedores, traga as chaves. O caminho sem markup não é isca com pegadinha: é o preço honesto de um produto cujo valor é a interface, não os tokens.
Preços do Codoro
| Plano | Preço | Crédito incluído |
|---|---|---|
| Hobby | US$ 0 | Nenhum — suas chaves |
| Pro | US$ 20/mês | US$ 20 |
| Pro+ | US$ 60/mês | US$ 60 |
| Ultra | US$ 200/mês | US$ 200 |
| Teams | US$ 40/assento | US$ 40 por assento, orçamento comum |
As recargas são de US$ 28, US$ 70 e US$ 140. O crédito vale exatamente o que custa, não expira e não renova sozinho.
O que mudar na prática
- Corte turnos, não modelos. Duas tarefas de oito turnos custam menos da metade de uma de vinte.
- Olhe a tarifa de escrita em cache, não só a de entrada, nos modelos que você mais usa.
- Ponha um teto por execução que você ficaria irritado de bater. Um teto acima do seu pior caso é decoração.
- Verifique se o seu modelo tem faixa de contexto longo e onde ela começa.
- Use a sua própria chave se já tiver uma.
Onde o Codoro está
Não há download público. A build para macOS está em prévia, a página de download é uma lista de espera até existir um manifesto de release assinado, e os preços acima descrevem o modelo de lançamento, não um checkout que você consiga acessar hoje.
O catálogo é real: cerca de 216 modelos sincronizados do Vercel AI Gateway, com uma verificação em CI que falha quando nossas tarifas divergem das publicadas. Essa verificação é a única razão pela qual me disponho a escrever números num texto que ainda vai estar aqui daqui a um ano.