Você já se deparou com essa situação: ao usar o modelo claude-opus-4-6-thinking através do endpoint /v1/chat/completions (formato OpenAI), tudo funciona perfeitamente, mas ao mudar para /v1/messages (formato nativo da Anthropic) você recebe o erro content: Input should be a valid list? Esse fenômeno, que parece contra-intuitivo, na verdade revela um problema profundo de compatibilidade do modelo Thinking entre os dois formatos de API. Este artigo vai partir da estrutura de dados subjacente da API para explicar completamente a causa do erro e a forma correta de fazer a chamada.
Valor principal: Ao terminar este artigo, você vai entender as diferenças de comportamento do modelo Thinking nos dois formatos de API, resolver o erro content should be a valid list e dominar a forma correta de lidar com blocos de pensamento (thinking blocks) em conversas com múltiplas mensagens.

Pontos Essenciais de Compatibilidade da API do Modelo Claude Thinking
Vamos começar respondendo diretamente à essência desse fenômeno "contraintuitivo".
| Ponto | Explicação | Impacto |
|---|---|---|
| Causa Raiz do Erro | O serviço proxy de API passou content: "string" para o endpoint /v1/messages, que espera content: [list] |
Incompatibilidade de formato gera erro 400 |
| Por que o Formato OpenAI Funciona | /v1/chat/completions permite que content seja uma string, removendo automaticamente os blocos de pensamento (thinking blocks) |
Formato simples, boa compatibilidade |
| Por que o Formato Anthropic Gera Erro | /v1/messages exige estritamente que content seja uma lista de blocos de conteúdo, e o thinking deve vir primeiro |
A conversão de formato pelo proxy está incompleta |
| Diferença nos Nomes dos Modelos | claude-opus-4-6-thinking é um alias da plataforma proxy; o nome oficial do modelo é claude-opus-4-6 |
O thinking é habilitado por parâmetro, não pelo nome do modelo |
| Abordagem Correta | Use o formato OpenAI para chamadas ou garanta que o proxy processe corretamente a conversão do formato content | Escolha o endpoint correto + passe os parâmetros certos |
A Essência Técnica do Erro na API do Modelo Claude Thinking
A mensagem de erro content: Input should be a valid list revela uma diferença crucial de formato:
API Nativa da Anthropic (/v1/messages) exige que o campo content seja um array de blocos de conteúdo (list):
{
"role": "assistant",
"content": [
{"type": "thinking", "thinking": "Deixe-me analisar este problema...", "signature": "CpcH..."},
{"type": "text", "text": "Esta é a minha resposta..."}
]
}
Formato Compatível com OpenAI (/v1/chat/completions) permite que content seja uma string pura:
{
"role": "assistant",
"content": "Esta é a minha resposta..."
}
Quando a configuração do canal da plataforma de proxy de API (como o backend do APIYI) está no formato /v1/messages, se o cliente upstream enviar um content no formato OpenAI (string), o proxy precisa converter "string" para [{"type": "text", "text": "string"}]. Se essa conversão estiver incompleta — especialmente quando a resposta do modelo Thinking é repassada para a próxima rodada da conversa — isso acionará o erro Input should be a valid list.
Comparação Detalhada dos Dois Formatos de Endpoint da API do Modelo Claude Thinking
Este é o ponto-chave para entender o problema: os dois endpoints têm requisitos fundamentalmente diferentes para o campo content.
Diferenças de Formato da API do Modelo Claude Thinking
| Dimensão de Comparação | /v1/chat/completions (OpenAI) |
/v1/messages (Anthropic) |
|---|---|---|
| Tipo de content | string ou array |
Deve ser array (lista de blocos de conteúdo) |
| Retorno do thinking | Não retorna o processo de pensamento detalhado | Retorna blocos de conteúdo do tipo thinking |
| Passagem de signature | Colocado em provider_specific_fields |
Diretamente no campo signature do bloco thinking |
| Conversa Multiturno | Passagem de texto puro, não precisa se preocupar com a ordem do thinking | A mensagem do assistente deve começar com um bloco thinking |
| Modo de Habilitar thinking | Sufixo no nome do modelo ou parâmetro | Parâmetro thinking: {"type": "adaptive"} |
| prompt caching | Não suportado | Suportado |
| Processo de Pensamento Visível | Não visível | Visível (summarized thinking) |
Comparação do Formato de Solicitação da API do Modelo Claude Thinking
Chamada no Formato OpenAI (recomendado para cenários de proxy):
import openai
client = openai.OpenAI(
api_key="SUA_CHAVE_API",
base_url="https://vip.apiyi.com/v1"
)
response = client.chat.completions.create(
model="claude-opus-4-6-thinking", # Alias da plataforma proxy
messages=[
{"role": "user", "content": "Analise as perspectivas comerciais da computação quântica"}
],
max_tokens=16000
)
print(response.choices[0].message.content)
Ver código de chamada no formato nativo da Anthropic
import anthropic
client = anthropic.Anthropic(api_key="SUA_CHAVE_API")
response = client.messages.create(
model="claude-opus-4-6", # Nome oficial do modelo, sem -thinking
max_tokens=16000,
thinking={
"type": "adaptive" # Habilita o thinking via parâmetro
},
messages=[
{"role": "user", "content": "Analise as perspectivas comerciais da computação quântica"}
]
)
# No response, content é uma lista, contendo blocos thinking e text
for block in response.content:
if block.type == "thinking":
print(f"[Processo de Pensamento] {block.thinking[:100]}...")
elif block.type == "text":
print(f"[Resposta] {block.text}")
Diferenças-chave:
- O nome do modelo é
claude-opus-4-6(sem o sufixo-thinking) - O thinking é habilitado pelo parâmetro
thinking={"type": "adaptive"} - O content da resposta é uma lista de blocos de conteúdo, não uma string
- Em conversas multiturno, a lista completa de content (incluindo blocos thinking) deve ser repassada
🎯 Recomendação de Chamada: Se você estiver chamando o modelo Claude Thinking através de uma plataforma proxy, priorize o uso de
/v1/chat/completions(formato OpenAI), que tem a melhor compatibilidade.
O endpoint compatível com OpenAI da plataforma APIYI apiyi.com já foi adaptado para o formato do modelo Thinking, processando automaticamente a conversão dos thinking blocks.

Por que o formato OpenAI funciona melhor para a API do modelo Claude Thinking
Esta é a parte mais contra-intuitiva: usar o formato "não nativo" da OpenAI para chamar o modelo Claude Thinking oferece melhor compatibilidade. Existem três razões principais:
Razão 1: Tolerância de formato no campo content
O formato OpenAI permite que content seja uma string simples "olá" ou um array de blocos de conteúdo [{"type":"text","text":"olá"}]. O formato nativo da Anthropic aceita apenas arrays de blocos de conteúdo – strings simples causam erro imediato.
Quando o código do cliente passa o conteúdo como string (comportamento padrão do SDK da OpenAI), se o proxy usar o canal de formato OpenAI, o cliente e o endpoint upstream têm formatos consistentes, sem problemas de conversão. Mas se usar o canal de formato Anthropic, a string não será aceita.
Razão 2: Remoção automática dos blocos thinking
O modo de compatibilidade com OpenAI remove automaticamente os blocos thinking das respostas do Claude, retornando apenas o texto final. Isso significa que:
- O cliente não recebe blocos thinking
- Não precisa enviar blocos thinking de volta na próxima rodada de conversa
- Não há problemas de ordenação dos blocos thinking
O formato nativo da Anthropic exige que os blocos thinking sejam completamente preservados em conversas com múltiplas rodadas, e a mensagem do assistente deve começar com um bloco thinking. Se o proxy não processar corretamente esse requisito de ordenação, ocorrerá um erro.
Razão 3: Problema de transmissão do thoughtSignature
Como mencionado anteriormente, os blocos thinking no formato Anthropic contêm uma assinatura criptográfica (signature) que deve ser retransmitida exatamente como recebida. O formato OpenAI simplesmente ignora essa etapa – não retorna a assinatura e não requer que ela seja enviada de volta.
🎯 Recomendação de escolha: Ao chamar o modelo Claude Thinking via proxy de API, priorize o formato
/v1/chat/completionspara evitar problemas de compatibilidade com blocos thinking.
O endpoint compatível com OpenAI do APIYI apiyi.com já possui adaptação completa para modelos Thinking.
Comparação de soluções para chamada da API do modelo Claude Thinking
Três soluções para chamar a API do modelo Claude Thinking
| Solução | Endpoint | Compatibilidade de formato | thinking visível | cache de prompt |
|---|---|---|---|---|
| Proxy em formato OpenAI | /v1/chat/completions |
Melhor (string content) | Não visível | Não suportado |
| Conexão direta nativa Anthropic | /v1/messages |
Requer formato estrito | Visível | Suportado |
| Proxy em formato Anthropic | /v1/messages (proxy) |
Depende da implementação | Depende do proxy | Parcialmente suportado |
Diferenças nos nomes dos modelos Claude Thinking em diferentes plataformas
Diferentes plataformas usam convenções de nomenclatura distintas para modelos Thinking, o que é uma fonte comum de confusão:
| Plataforma | Nome do modelo | Método de ativação do thinking |
|---|---|---|
| Anthropic oficial | claude-opus-4-6 |
Parâmetro thinking: {"type": "adaptive"} |
| Proxy de API (como APIYI) | claude-opus-4-6-thinking |
Sufixo no nome do modelo ativa implicitamente |
| OpenRouter | anthropic/claude-opus-4.6 |
Ativado por parâmetro |
| AWS Bedrock | anthropic.claude-opus-4-6-v1 |
Ativado por parâmetro |
Na API oficial da Anthropic, não existe o nome de modelo claude-opus-4-6-thinking. O sufixo -thinking é uma convenção de nomenclatura das plataformas proxy, permitindo que os usuários ativem a funcionalidade thinking diretamente pelo nome do modelo, sem configurar parâmetros manualmente.
Dica: Se você usar o nome de modelo
claude-opus-4-6-thinkingno APIYI apiyi.com, a plataforma adicionará automaticamente o parâmetrothinking: {"type": "adaptive"}à requisição. Assim, você obtém capacidade thinking diretamente com o SDK da OpenAI, sem modificar o código.
Armadilhas Comuns e Soluções para a API do Modelo Claude Thinking

Perguntas Frequentes
Q1: Ao usar o formato OpenAI para chamar o modelo Thinking, ele perde a capacidade de pensar?
Não. O processo de pensamento (thinking) do modelo ocorre no servidor da Anthropic e é independente do formato do endpoint de chamada. Ao usar o formato OpenAI, o modelo ainda realiza o raciocínio completo, apenas o resumo textual do processo de pensamento não é retornado ao cliente. A qualidade e profundidade da resposta final são as mesmas — você obtém a "resposta ponderada", mas não vê o "registro textual do processo de pensamento".
Q2: Em quais cenários é obrigatório usar o formato nativo /v1/messages?
Dois cenários exigem o formato nativo: 1) Você precisa ver o processo de pensamento do modelo (summarized thinking) para depuração, educação ou demonstração da cadeia de raciocínio; 2) Você precisa usar o prompt caching para reduzir custos — a funcionalidade de cache só está disponível no endpoint /v1/messages. Se você não tem nenhuma dessas necessidades, usar o formato OpenAI é mais simples. A maneira mais fácil é chamar através do endpoint compatível com OpenAI da APIYI (apiyi.com).
Q3: Como resolver problemas de compatibilidade quando o canal no painel da APIYI está configurado como /v1/messages?
Duas soluções: 1) Alterar o canal para o tipo OpenAI (/v1/chat/completions), evitando assim problemas de conversão de formato; 2) Se for obrigatório usar o canal /v1/messages, é necessário garantir que a camada proxy converta corretamente o conteúdo string do cliente para o formato de lista, e que trate adequadamente a ordenação dos blocos de pensamento (thinking blocks) e a passagem da assinatura (signature) em conversas com múltiplas interações. A solução 1 é mais simples e confiável.
Q4: Qual a diferença entre adaptive thinking e o extended thinking da versão antiga?
Para o Opus 4.6, é recomendado usar thinking: {"type": "adaptive"} (pensamento adaptativo), onde o modelo decide automaticamente se deve pensar e com que profundidade, baseando-se na complexidade do problema. A versão antiga thinking: {"type": "enabled", "budget_tokens": N} está obsoleta no Opus 4.6 e Sonnet 4.6. A nova versão também adicionou o parâmetro effort (low/medium/high/max) para controlar a profundidade do pensamento, sendo high o padrão.
Resumo
Os pontos principais sobre os problemas de compatibilidade da API do modelo Claude Thinking são:
- A causa raiz do erro é a incompatibilidade do formato content: A API nativa da Anthropic exige rigorosamente que o content seja uma lista (list), enquanto o formato OpenAI permite uma string — se um canal proxy usar
/v1/messagesmas o cliente enviar uma string, ocorrerá o erroInput should be a valid list. - O formato OpenAI tem melhor compatibilidade: Remove automaticamente os blocos de pensamento (thinking blocks), não requer o retorno da signature e o content pode ser uma string — é a escolha preferencial para cenários de proxy.
- O sufixo -thinking é uma convenção de proxy, não um nome de modelo oficial: O nome oficial do modelo é
claude-opus-4-6, e o thinking é habilitado por parâmetro.
Para chamar o modelo Claude Thinking através de um proxy de API, a solução mais simples é padronizar o uso do formato compatível com OpenAI.
Recomenda-se chamar através da APIYI (apiyi.com), pois a plataforma já otimizou a compatibilidade de formato para o modelo Thinking, oferecendo créditos gratuitos e uma interface unificada para múltiplos modelos.
📚 Referências
-
Documentação do Claude API Extended Thinking: Referência completa da API para o modo de pensamento
- Link:
platform.claude.com/docs/en/build-with-claude/extended-thinking - Descrição: Inclui explicações detalhadas sobre adaptive thinking, parâmetros de esforço e formato dos blocos de conteúdo
- Link:
-
Documentação de compatibilidade do Claude API OpenAI SDK: Guia oficial para chamar o Claude usando o formato OpenAI
- Link:
platform.claude.com/docs/en/api/openai-sdk - Descrição: Inclui lista de limitações de compatibilidade e funcionalidades não suportadas
- Link:
-
Referência de códigos de erro do Claude API: Explicação de todos os tipos de erros da API
- Link:
platform.claude.com/docs/en/api/errors - Descrição: Inclui métodos específicos para solucionar problemas de invalid_request_error
- Link:
-
Centro de documentação da APIYI: Como chamar os modelos Thinking do Claude através da interface compatível com OpenAI
- Link:
docs.apiyi.com - Descrição: Já adaptado para o formato dos modelos Thinking, processa automaticamente a conversão de thinking blocks
- Link:
Autor: Equipe técnica da APIYI
Discussão técnica: Bem-vindo para discutir nos comentários, mais recursos disponíveis no centro de documentação da APIYI docs.apiyi.com