Chat Completions ou Responses API: onde o GPT-6 Sol roda com todos os recursos?

Responses API ou Chat Completions para o GPT-6 Sol? A documentação do modelo é direta: built-in tools e function calling ficam na Responses API, enquanto na Chat Completions o function calling só roda com reasoning_effort definido como none. Se seu projeto usa ferramentas, busca, code interpreter ou MCP, a Responses é o caminho. Código legado sem tools segue funcionando, porque a Chat Completions não foi depreciada. A migração troca o endpoint para /v1/responses, muda a leitura da saída para um array output tipado e ainda melhora a utilização de cache de 40% a 80%
Você tem uma aplicação inteira em Chat Completions, o GPT-6 Sol saiu e agora a pergunta é uma só: dá pra trocar o nome do modelo e seguir a vida?
Depende do que seu código faz 🙂
O GPT-6 Sol e o GPT-6 Luna foram lançados em 22 de setembro de 2026 e já estão disponíveis na API como gpt-6-sol e gpt-6-luna
Dentro da família GPT-6, o Sol é o modelo do meio: a OpenAI posiciona ele pra equilibrar inteligência e custo
Na ponta de cima fica o GPT-6 Astra, o da linha pra raciocínio e coding complexos, e na ponta de baixo o GPT-6 Luna, pra workloads de alto volume sensíveis a custo
Mesmo sendo o do meio, a página do próprio Sol descreve ele como construído para coding complexo e fluxos agênticos, ou seja, não é modelinho de recado, é um modelo agêntico com preço de meio-termo
E é justamente aí que mora a pegadinha: fluxo agêntico pede ferramenta, e ferramenta é exatamente o ponto onde as duas APIs deixam de ser equivalentes
Chat Completions x Responses API no GPT-6 Sol: o que muda
A página do modelo é curta e grossa: a orientação é usar a Responses API para built-in tools e function calling, e a Chat Completions suporta function calling apenas com reasoning_effort definido como none
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Se liga na comparação linha a linha:
| Recurso | Chat Completions | Responses API | O que isso significa na prática |
|---|---|---|---|
| Function calling | Só com reasoning_effort = none |
Suportado | Ou você abre mão do raciocínio, ou muda de API |
| Built-in tools (web search, file search, code interpreter, MCP) | Não é o caminho indicado | Configuradas no array tools da requisição |
Busca, sandbox Python e servidores MCP vivem do lado da Responses |
| Estado entre turnos | Gerenciado manualmente | previous_response_id, Conversations API e store: true |
Você para de remontar o histórico na mão a cada turno |
| Múltiplas tool calls por requisição | Não é o desenho dela | O modelo pode chamar várias tools numa única chamada de API | Menos ida e volta pra completar uma tarefa |
| Aproveitamento de cache | Base de comparação | Melhora de 40% a 80% em relação à Chat Completions | Cache melhor é dinheiro a menos na fatura |
Helper output_text |
Não existe | Exclusivo do SDK da Responses | Menos código chato pra extrair o texto final |
| Reasoning items | Não tem o fluxo recomendado | store: true e reenvio dos reasoning items anteriores |
É o que a doc recomenda pra ter o melhor resultado com reasoning |
Repara que não é uma lista de firulas
A Responses é agêntica por padrão, a Chat Completions é um endpoint de conversa que ganhou ferramentas depois
Quando a Chat Completions ainda resolve (e quando não resolve)
Primeiro, o alívio: a Chat Completions não está depreciada e segue suportada
Quem foi encerrada foi a Assistants API, em 26 de agosto de 2026
A recomendação oficial é usar a Responses em projetos novos, mas ninguém vai puxar o tapete do seu código que já roda
Casos em que dá pra ficar onde está:
- Endpoint simples de geração de texto, sem nenhuma ferramenta envolvida
- Classificação, resumo, reescrita, aquele monte de chamada burra que só recebe texto e devolve texto
- Job interno que já está estável e você não quer tocar agora
Casos em que dá pra ficar, mas com uma trava:
Se você precisa de function calling e não vai migrar agora, o jeito é fixar reasoning_effort como none
Funciona, porém você está usando um modelo construído pra coding complexo no modo mais raso possível
E aqui vale explicar a escala inteira, porque ela muda o resultado: o reasoning effort do GPT-6 Sol aceita none, low, medium, high, xhigh e max, sendo medium o padrão
Só presta atenção no nome do campo, que muda conforme a API: na Chat Completions ele vai plano, como reasoning_effort, e na Responses ele vai aninhado, como reasoning.effort
Ou seja, ao fixar none você está descendo abaixo do padrão pra conseguir chamar função
Tome cuidado com uma coisa: esse valor none não é universal na família GPT-6
O GPT-6 Astra não suporta reasoning effort none e retorna HTTP 400 quando esse valor é enviado
Então aquele wrapper esperto que você escreveu pra trocar de modelo na variável de ambiente vai explodir no dia que alguém apontar pro Astra 😛 (se a ideia é brincar com ele fora do código, dá pra rodar o GPT-6 Astra no terminal antes de decidir)
Casos em que a Chat Completions trava o projeto:
- Agente com várias ferramentas, onde o modelo precisa encadear chamadas sozinho
- Qualquer coisa que dependa de web search ou file search nativos
- Execução de Python em container sandbox pelo code interpreter
- Integração com servidores MCP
Nesses quatro, não tem jeitinho
É migrar
Como migrar de Chat Completions para a Responses API
O guia oficial de migração resume tudo em três mudanças principais: o endpoint, a leitura da saída e como a aplicação carrega o estado entre turnos
Na prática, quando você abre o código, aparecem mais alguns pontos
Bora por partes
- Troque o endpoint
As requisições deixam de ir pra /v1/chat/completions e passam a ir pra /v1/responses
POST /v1/chat/completions (antes)
POST /v1/responses (depois)
O erro comum aqui: achar que só isso basta e mandar o payload antigo inteiro pro endpoint novo
- Aponte o modelo e o effort no formato novo
O identificador do modelo continua sendo gpt-6-sol, mas o effort deixa de ser um campo solto
{
"model": "gpt-6-sol",
"reasoning": { "effort": "medium" },
"store": true
}
O erro comum: manter reasoning_effort no formato antigo por copiar e colar do código velho
- Leia a saída do array
outputtipado
A resposta não vem mais no formato que você conhece de cor
O SDK da Responses oferece o helper output_text, que não existe na Chat Completions, e ele resolve o caso simples
O erro comum: seu parser antigo continuar cavando o mesmo caminho de chaves e quebrar em produção com um erro de índice
- Migre as definições de função e o
call_id
O formato de function calling muda nos dois lados: na definição da função e no retorno da chamada
É preciso migrar as definições e garantir que os outputs de function call incluam o call_id correto
O erro comum: o modelo chama a função, sua aplicação executa direitinho, devolve o resultado sem o call_id certo e a conversa fica de pernas pro ar
- Mova os schemas de Structured Outputs
Os schemas saem de response_format e passam para text.format
{
"text": {
"format": { "comentario": "seu schema de structured output vai aqui" }
}
}
O erro comum: mandar response_format no payload novo e ficar achando que o modelo "parou de respeitar o schema"
- Atualize quem consome streaming
A Responses trabalha com eventos tipados, então os consumidores de streaming precisam ser atualizados pra tratar esses eventos
O erro comum: o front continuar concatenando delta de texto igual antes e a UI virar um Frankenstein
- Decida como sua aplicação carrega o estado
Aqui você escolhe: previous_response_id pra encadear respostas, compatibilidade com a Conversations API pra conversas persistentes, ou store: true pra manter estado de turno em turno
Na Chat Completions esse trabalho era manual, todo no seu código
O erro comum: migrar tudo e continuar remontando o histórico na mão, jogando fora o ganho de cache que era metade do motivo da mudança
Reasoning items: o detalhe que quebra a migração pela metade
Esse é o ponto que costuma passar batido e depois vira aquele bug estranho de "o modelo ficou burro no segundo turno"
Para melhores resultados com reasoning items, a documentação recomenda usar a Responses API com store definido como true e reenviar os reasoning items das requisições anteriores
Ou seja, não é só guardar a mensagem final, é devolver o raciocínio anterior pro modelo continuar de onde parou
E se você não pode armazenar nada?
Tem saída
Quando store é false ou a organização usa Zero Data Retention, os reasoning items do array output incluem a propriedade encrypted_content por padrão
Esse conteúdo criptografado pode ser devolvido em requisições futuras, então dá pra manter a continuidade do raciocínio sem abrir mão do modo stateless
Muito massa esse detalhe, e é exatamente o tipo de coisa que ninguém lembra de checar antes de subir pra produção…
Quanto custa rodar o GPT-6 Sol na API
Agora a parte que o financeiro pergunta
| Item | Valor |
|---|---|
| Input de texto | US$ 2,00 por 1M de tokens |
| Output | US$ 10,00 por 1M de tokens |
| Input cacheado | US$ 0,20 por 1M de tokens |
| Cache write | US$ 2,50 por 1M de tokens (1,25x a taxa de input não cacheado) |
| Prompt acima de 272K tokens de input | 2x nas taxas de input e cache, 1,5x no output, para a requisição inteira |
| Batch e Flex | 50% das taxas Standard |
| Fast mode | 2x as taxas aplicáveis |
| Janela de contexto | 1.050.000 tokens |
| Máximo de saída | 128.000 tokens |
Repara na terceira linha da tabela: input cacheado sai por um décimo do input normal
Agora junta isso com o fato de que a Responses API reporta melhora de 40% a 80% na utilização de cache comparada à Chat Completions
A migração não é só sobre recurso, é sobre quanto do seu prompt fixo (system, instruções, definições de ferramenta) está batendo no cache em vez de ser cobrado cheio
E presta atenção naquele corte de 272 mil tokens: passou disso, a tabela muda pra requisição inteira, não só pro excedente
Com 1.050.000 tokens de janela, é bem fácil cruzar essa linha sem perceber quando você joga um repositório inteiro no contexto
Veredito: qual API escolher para o GPT-6 Sol
Vamos ao que interessa, por perfil:
Projeto novo: vai de Responses API, sem pensar muito
É a recomendação da própria documentação pra projetos novos, é onde as built-in tools moram e é onde o function calling funciona sem amarras
Código legado sem tools: pode ficar onde está
A Chat Completions segue suportada, então não existe urgência artificial aqui
Migra quando fizer sentido, não porque alguém no Twitter disse que é obrigatório
Precisa de function calling e não vai migrar agora: você fica preso a reasoning_effort = none
Funciona, mas é o Sol andando de muletas
E se o seu caso é agente de verdade, com várias ferramentas e várias chamadas por requisição, essa muleta cai rápido
Duas coisas pra fechar a decisão
A primeira: snapshots existem pra travar uma versão específica do modelo, mantendo performance e comportamento consistentes
Se seu sistema é sensível a mudança de comportamento, fixa a versão antes de migrar, não durante
A segunda: no anúncio de lançamento, a OpenAI divulgou 68,8% no DeepSWE v1.1 para o GPT-6 Sol com reasoning effort max
Esse é o teto do modelo
E dá pra olhar esse número e perguntar: faz sentido pagar por um modelo desse porte pra rodar ele fixado em effort none só pra não mexer no endpoint? 🤔
Conclusão
A escolha entre Responses API ou Chat Completions no GPT-6 Sol não é questão de gosto: com ferramentas no jogo, a Responses é o único lugar onde o modelo entrega tudo, e a Chat Completions só faz function calling com reasoning_effort = none
Quem tem código antigo sem tools não precisa correr, porque a Chat Completions segue suportada, mas quem vai construir agente já começa do lado certo
Próximo passo concreto: escolhe um endpoint pequeno do seu projeto, migra ele pra /v1/responses, valida se o function calling volta com o call_id certo e observa o que acontece com o input cacheado na fatura
Deu certo nesse, aí sim você move o resto
Até o próximo post! =)
Perguntas frequentes
Dá pra usar function calling do GPT-6 Sol direto na Chat Completions?
Dá, mas só com reasoning_effort definido como none. É a única combinação em que a Chat Completions suporta function calling nesse modelo, e isso significa abrir mão do raciocínio padrão (medium) pra manter a chamada de função funcionando.
Quanto custa rodar o GPT-6 Sol na API, independente de ser Responses API ou Chat Completions?
O preço é o mesmo nas duas APIs: US$ 2,00 por 1M de tokens de input e US$ 10,00 por 1M de output. Input em cache sai por US$ 0,20 por 1M, e prompts acima de 272 mil tokens de input mudam a tabela pra 2x nas taxas de input e cache e 1,5x no output, pra requisição inteira.
O reasoning effort none funciona em qualquer modelo da família GPT-6?
Não. O GPT-6 Astra não suporta reasoning effort none e retorna HTTP 400 quando esse valor é enviado. Isso importa pra quem usa uma variável de ambiente pra trocar de modelo, porque o mesmo payload que funciona no Sol pode quebrar no Astra.
A Chat Completions vai ser desativada por causa da Responses API?
Não, a Chat Completions segue suportada e não está depreciada. A recomendação da OpenAI é usar a Responses API em projetos novos, mas quem foi descontinuada de fato foi a Assistants API, encerrada em 26 de agosto de 2026.
Web search e code interpreter funcionam via Chat Completions no GPT-6 Sol?
Não é o caminho indicado. Built-in tools como web search, file search, code interpreter e acesso a servidores MCP são configuradas no array tools da Responses API, e a documentação do modelo orienta usar essa API pra esses casos.
Qual API aproveita melhor o cache no GPT-6 Sol?
A Responses API reporta melhora de 40% a 80% na utilização de cache em comparação com a Chat Completions. Como o preço de input cacheado é bem menor (US$ 0,20 por 1M contra US$ 2,00 sem cache), esse ganho impacta direto na fatura de aplicações com bastante contexto repetido.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
O que significa “ChatGPT network error” e como resolver
O “ChatGPT Network Error” é uma ocorrência frequente na rotina de muitos usuários do ChatGPT. Porém, poucos compreendem seu significado, quando esse erro surge, etc. […]

Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]

Como usar o Antigravity do Google: guia completo do zero ao primeiro app
Aprenda neste guia prático como usar o Antigravity do Google: descubra a instalação, configuração, criação de projetos com o Agent Manager e o primeiro deploy, […]
