calc.dev.br

OpenTelemetry no Claude: o custo certo de cada pedido

Desde 14 de outubro, a API do Claude manda traces OpenTelemetry para a sua ferramenta de observabilidade. Os spans trazem a contagem de tokens, mas não o preço, e o campo de entrada já vem com o cache somado. Mostramos a conta certa e quanto o painel erra quando a fórmula é a antiga.

Radar · RecursosPor · Redação Grupo TAAPPublicado em 7 min de leitura
Notebook aberto mostrando um painel de relatórios com gráficos
O painel de observabilidade mostra tokens, não preço: a conta do custo de cada requisição fica com você. Foto: Stephen Dawson / Unsplash

O caso: uma empresa liga a nova exportação OpenTelemetry da API do Claude e monta um painel de custo por requisição. O chatbot dela usa o Sonnet 5.5 com 30.000 tokens de instruções em cache. Uma requisição típica traz gen_ai.usage.input_tokens = 32.000 e output_tokens = 800. O painel mostra US$ 0,0720 por requisição. Está certo?

Resposta curta: não. O campo de entrada já inclui os tokens lidos do cache, que custam bem menos. A conta certa dá US$ 0,0150 por requisição. Num mês de 60.000 requisições (exemplo), o painel errado mostraria US$ 4.320,00 contra US$ 1.332,00 de custo de verdade, cerca de R$ 6.672,79.

O que mudou

Em 14 de outubro de 2026, a Anthropic lançou em beta a exportação OpenTelemetry da plataforma Claude, segundo as notas de versão oficiais. Com ela, você acompanha as requisições da Messages API e as sessões do Claude Managed Agents na ferramenta de observabilidade que já usa.

Há dois caminhos, e dá para usar os dois juntos:

Caminho Como liga Quem pode O que cobre
Rastreamento pelo SDK Código: registra um tracer provider no app Qualquer desenvolvedor Clientes que usam o SDK oficial, em Python, TypeScript, C#, Go, Java, PHP e Ruby
Rastreamento pela API Console: adiciona um destino OTLP Papel de admin na organização Qualquer cliente, na Claude Platform e na Claude Platform on AWS

O modo padrão é só metadados: identificadores, tempo, status e contagem de tokens. O modo conteúdo completo também manda prompts e respostas. Para a conta de custo, os metadados bastam.

A documentação avisa que os nomes de spans e atributos podem mudar durante o beta. Confira antes de travar o seu painel.

Os campos que entram na conta

Os spans trazem a contagem de tokens nos atributos abaixo, segundo a referência oficial de spans:

Atributo O que conta
gen_ai.usage.input_tokens Toda a entrada, já com leituras e gravações de cache
gen_ai.usage.output_tokens A saída, incluindo os tokens de raciocínio
gen_ai.usage.cache_read.input_tokens Tokens lidos do cache
gen_ai.usage.cache_write.input_tokens Tokens gravados no cache
anthropic.usage.cache_creation.ephemeral_5m_input_tokens Gravados no cache de 5 minutos (só Messages API)
anthropic.usage.cache_creation.ephemeral_1h_input_tokens Gravados no cache de 1 hora (só Messages API)

O ponto central está na primeira linha. Na resposta comum da API, o campo input_tokens traz só a entrada sem cache. No span, gen_ai.usage.input_tokens traz tudo somado. Quem copia a fórmula antiga erra a conta.

Nas requisições da Messages API, os spans trazem tokens, não preço. O valor você calcula com a tabela de preços.

A conta certa, passo a passo

Primeiro separe a entrada em três partes:

  1. Entrada sem cache = input_tokens − cache_read − cache_write.
  2. Leitura de cache = cache_read.
  3. Gravação de cache = ephemeral_5m e ephemeral_1h, cada uma com seu preço.

Depois multiplique cada parte pelo seu preço e some a saída. No Sonnet 5.5, pela tabela do site atualizada em outubro de 2026:

Parte Tokens Preço por milhão Custo
Entrada sem cache 2.000 US$ 2,00 US$ 0,00400
Leitura de cache 30.000 US$ 0,10 US$ 0,00300
Saída 800 US$ 10,00 US$ 0,00800
Total US$ 0,01500

Na requisição que grava o cache, os mesmos 30.000 tokens entram pelo preço de gravação de 5 minutos, US$ 2,50 por milhão. Essa requisição custa US$ 0,0870.

Os três erros que inflam o painel

Como o painel calcula Custo por requisição Mês com 60.000 requisições Diferença para o certo
Certo (partes separadas, 90% de acerto no cache) US$ 0,0150 US$ 1.332,00 —
input_tokens inteiro pelo preço cheio US$ 0,0720 US$ 4.320,00 3,2 vezes
input_tokens + cache_read, pelo preço cheio US$ 0,1320 US$ 7.920,00 5,9 vezes
Certo, mas somando spans do SDK e da API US$ 0,0300 US$ 2.664,00 2 vezes

O volume de 60.000 requisições e a taxa de 90% de acerto no cache são exemplo. O tamanho do erro cresce com o cache: quanto mais você economiza com ele, mais o painel errado exagera.

Erro 1: tratar tudo como entrada cheia. É o caso da abertura. O painel ignora que 30.000 dos 32.000 tokens saíram do cache.

Erro 2: somar o cache em cima da entrada. A documentação diz com todas as letras: input_tokens já inclui leituras e gravações. Não some de novo.

Erro 3: contar a mesma requisição duas vezes. Quando você liga o SDK e a API, cada requisição gera um span anthropic.messages.create do tipo CLIENT (SDK) e outro do tipo SERVER (API). A orientação oficial é somar só os spans da API. Dentro dos spans da API, some os anthropic.messages.create ou os anthropic.model_request, nunca os dois.

Luz azul passando por um feixe de fibras ópticas no escuro
Os spans chegam pela rede com entrega de melhor esforço: alguns se perdem, outros chegam duas vezes. Foto: Compare Fibre / Unsplash

Outros detalhes que mudam o total

  • Spans repetidos. A entrega é "pelo menos uma vez": o mesmo span pode chegar duas vezes. Se a sua plataforma não remove duplicados, conte cada span uma vez pelo ID do trace e do span.
  • Compactação. No span do SDK, os tokens de compactação ficam fora de gen_ai.usage.*, em anthropic.usage.compaction.input_tokens e output_tokens. Some à parte. Nos spans da API, some os spans anthropic.compaction.
  • Residência de dados. Se você usa inference_geo: "us", a tabela oficial aplica um multiplicador de 1,1 em todas as categorias de token. No caso, a requisição certa iria de US$ 0,0150 para US$ 0,0165.
  • Modelo que respondeu. O atributo gen_ai.response.model mostra o modelo que de fato atendeu, que pode ser diferente do pedido quando há modelo de reserva. Use esse campo para escolher o preço.
  • Agentes gerenciados. Para sessões do Managed Agents, some os spans anthropic.model_request e anthropic.session.outcome_evaluation.

O mesmo erro em outros modelos

A mesma requisição de exemplo, com 30.000 tokens lidos do cache, em três modelos:

Modelo Conta certa Painel com entrada cheia Exagero
Haiku 5.5 US$ 0,00090 US$ 0,00360 4,0 vezes
Sonnet 5.5 US$ 0,01500 US$ 0,07200 4,8 vezes
Opus 5.5 US$ 0,03000 US$ 0,14400 4,8 vezes

O exagero muda de um modelo para outro porque a relação entre o preço da leitura de cache e o da entrada não é a mesma em todos. Confira a tabela de cada modelo antes de montar a fórmula.

Span não é fatura

A própria documentação avisa: os spans exportados não são um registro completo do uso. A entrega é de melhor esforço, então um span pode se perder e não volta. Um cliente também pode desligar o rastreamento de uma requisição pelo cabeçalho traceparent. E a API não gera spans para o endpoint compatível com o SDK da OpenAI.

Use os spans para ver custo por funcionalidade, por cliente ou por agente. Para conferir a conta do mês e acompanhar cada chave de API, a orientação oficial é usar a Usage API.

Checklist antes de confiar no painel

  • Separe entrada sem cache, leitura e gravação antes de multiplicar.
  • Some só uma fonte por requisição (spans da API, se tiver os dois).
  • Remova spans duplicados pelo ID do trace e do span.
  • Some a compactação à parte quando ela aparece.
  • Aplique 1,1 se a requisição usa inference_geo: "us".
  • Compare o total do mês com a Usage API.

Perguntas frequentes

O input_tokens do span é igual ao da resposta da API?

Não. No span, gen_ai.usage.input_tokens já inclui leituras e gravações de cache. No caso, ele mostra 32.000, dos quais só 2.000 pagam o preço cheio de entrada.

Quanto o erro mais comum exagera a conta?

No caso de exemplo no Sonnet 5.5, o painel com entrada cheia mostra US$ 4.320,00 por mês, contra US$ 1.332,00 do custo certo: 3,2 vezes mais.

Posso usar os spans no lugar da fatura?

Não. A entrega é de melhor esforço e alguns pedidos não geram span. Use os spans para dividir o custo por funcionalidade e a Usage API para fechar o mês.

Preciso ser admin para ligar?

Para o destino na API, sim: só o papel de admin adiciona ou muda destinos no Console. O rastreamento pelo SDK não pede permissão especial.

E com residência de dados nos EUA?

A requisição do caso sai por US$ 0,0165 em vez de US$ 0,0150, pelo multiplicador oficial de 1,1. No mês de exemplo, US$ 1.465,20.

Quer ver quanto o cache economiza no seu caso? Use a calculadora de cache de prompt com o tamanho do seu prefixo e a taxa de acerto.

Refaça a conta com os seus números

A calculadora abaixo já vem com os valores do caso. Mude o que for diferente no seu projeto, ou abra a calculadora completa.

prompt-cache.ts

Cache de prompt

tokens

tokens

tokens

%

Duração do cache (Claude)

Cache, Batch e cotação do dólar
R$
Cotação de referência; nas calculadoras ela é atualizada com o dólar do dia.

Fontes

  1. Anthropic · Claude Platform release notes (14/10/2026) Data e texto do lançamento da exportação OpenTelemetry em beta
  2. Anthropic · OpenTelemetry tracing for the Claude API SDK x API, modos de conteúdo, como contar tokens sem duplicar, aviso de que span não é registro completo e indicação da Usage API
  3. Anthropic · OpenTelemetry span reference Nomes e definições dos atributos de tokens (input_tokens inclui cache) e gen_ai.response.model
  4. Anthropic · Set up OpenTelemetry with the Claude API Papel de admin, plataformas suportadas, entrega pelo menos uma vez e de melhor esforço
  5. Anthropic · Pricing Estrutura de preços de cache e multiplicador 1,1 de inference_geo (preços vêm do arquivo do site)
  6. calc.dev.br · Calculadora de cache de prompt Para refazer a conta com o seu prefixo e a sua taxa de acerto

Preços das páginas oficiais registrados no arquivo do site em 14/10/2026; dólar de referência R$ 5,01 (PTAX de venda do Banco Central em 13/10/2026). Veja a metodologia e a lista completa de fontes.

Mais do Radar