Corrigir "Model Does Not Support Image Input" no OpenCode — Vision do GPT e Claude Não Funciona
OpenCode não lê sua imagem com GPT ou Claude? O modelo suporta vision, mas o OpenCode só envia o nome do arquivo. Corrija declarando attachment e modalities para gpt-5.5 e Claude no opencode.jsonc.
Published 2026-07-14
Você anexou um PNG/JPG no OpenCode, pediu ao GPT ou Claude para descrevê-lo e recebeu algo como "the current model does not support image input" — ou o modelo só menciona o nome do arquivo, não a imagem. Em quase todos os casos o modelo suporta vision; o problema é que o OpenCode nunca enviou a imagem como entrada multimodal.
Causa raiz: o OpenCode só encaminha uma imagem quando o modelo é declarado como capaz de processar imagem no opencode.jsonc. Sem essa declaração, ele trata o anexo como uma simples referência de arquivo e descarta os pixels.
Correção rápida: adicione dois campos ao modelo no opencode.jsonc e depois reinicie o OpenCode:
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
Se você precisa de um endpoint compatível com OpenAI e com suporte a vision que funcione com essa config hoje, o APIMaster serve os modelos vision gpt-5.5 e Claude em https://apimaster.ai/v1. Configuração completa: guia de configuração do OpenCode.
Como Este Problema Aparece
- Você troca para um modelo GPT ou Claude no OpenCode, arrasta um screenshot e pede "descreva esta imagem".
- A resposta é uma variação de "I can't read images", "image input is not supported for this model", ou o modelo responde sobre um nome de arquivo (
screenshot.png) em vez do conteúdo real. - A mesma imagem funciona normalmente quando você a cola diretamente no ChatGPT ou Claude.
Isso não é uma limitação do modelo e não é uma chave de API quebrada. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 e claude-haiku-4-5 todos aceitam entrada de imagem pela API Chat Completions compatível com OpenAI. A imagem simplesmente nunca saiu do OpenCode.
Por Que Isso Acontece
O OpenCode decide por modelo se um anexo pode ser enviado e se esse anexo pode ser uma imagem. Ele lê isso da sua configuração de provedor no opencode.jsonc. Se a entrada do seu modelo estiver assim:
"gpt-5.5": {
"name": "gpt-5.5"
}
…então o OpenCode não tem nenhum sinal de que o modelo aceita imagens. Dependendo do build, ele ou se recusa a anexar o arquivo ou passa apenas o nome do anexo para o texto do prompt. O modelo recebe "[attachment: diagram.png]" — uma string, não uma imagem — e responde corretamente que não recebeu nenhuma imagem.
A correção é dizer explicitamente ao OpenCode duas coisas:
| Campo | Significado |
|---|---|
"attachment": true |
Este modelo tem permissão para receber anexos. |
"modalities": { "input": ["text", "image"] } |
Este modelo aceita entrada de imagem, então o OpenCode converte o arquivo em um bloco de conteúdo multimodal image_url. |
Uma vez configurados os dois, o OpenCode codifica a imagem em base64 e a envia como entrada vision adequada — e o modelo a lê.
Como Corrigir
1. Localize seu opencode.jsonc
| SO | Caminho |
|---|---|
| macOS / Linux | ~/.config/opencode/opencode.jsonc |
| Windows | C:\Users\<username>\.config\opencode\opencode.jsonc |
2. Adicione attachment + modalities a cada modelo vision
Aqui está um bloco de provedor funcional para GPT e Claude em um endpoint compatível com OpenAI:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apimaster": {
"name": "APIMaster.ai",
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apimaster.ai/v1"
},
"models": {
"gpt-5.5": {
"name": "gpt-5.5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
},
"claude-sonnet-4-6": {
"name": "claude-sonnet-4-6",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
}
}
}
}
}
O exemplo completo cobrindo
claude-opus-4-7,claude-opus-4-8,claude-haiku-4-5e variantes de reasoning está no guia de configuração do OpenCode. Você pode habilitar entrada de imagem para apenas um modelo — só esse modelo precisa dos dois campos.
3. Use a base URL correta
O host compatível com OpenAI é:
https://apimaster.ai/v1
Não use https://api.apimaster.ai/v1 — o host com prefixo api. pode causar falhas de TLS / conexão.
4. Reinicie o OpenCode
As mudanças de configuração são carregadas na inicialização. Feche e reabra o OpenCode completamente, ou no mínimo inicie uma nova sessão, senão a config antiga (cega para imagens) permanece ativa.
5. Prefira upload local / base64 em vez de URLs públicas
Faça upload de um PNG/JPG local no OpenCode — ele é convertido para uma data URL base64, que é o caminho confiável. Passar uma URL de imagem pública diretamente pode falhar, porque o upstream precisa baixá-la e pode esbarrar em limites de formato, tamanho, MIME ou hotlink:
Error while downloading file. Upstream status code: 400.
Se você vir isso, troque para um arquivo local / data URL base64 em vez de uma URL remota.
Teste Que Funciona
No OpenCode
Troque para apimaster/gpt-5.5 ou apimaster/claude-sonnet-4-6, faça upload de uma imagem e pergunte:
Describe the main content of this image.
Uma config correta retorna uma descrição real. Se ainda só vê um nome de arquivo, os campos attachment / modalities estão faltando ou o OpenCode não foi reiniciado.
Diretamente via API (isole o problema)
Para confirmar que o próprio endpoint lida com vision — separando um problema de config do OpenCode de um problema do provedor — envie uma imagem base64. Nunca coloque uma chave real fixa no código; use uma variável de ambiente:
export APIMASTER_API_KEY="your APIMaster API key"
curl https://apimaster.ai/v1/chat/completions \
-H "Authorization: Bearer $APIMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Describe this image." },
{
"type": "image_url",
"image_url": { "url": "data:image/png;base64,YOUR_IMAGE_BASE64" }
}
]
}
],
"max_tokens": 1000
}'
Troque model para claude-sonnet-4-6 para testar o Claude da mesma forma. Uma resposta 200 que descreve a imagem significa que vision funciona na camada da API — então qualquer falha restante está no lado da config do OpenCode.
Mantenha Sua Chave de API Segura
- Nunca coloque a chave de API dentro do
opencode.jsonc. Esse arquivo guarda apenas o provedor, os modelos e as capacidades. - Configure a chave pelo fluxo
/connectdo OpenCode, pela UI Connect Provider, ou por uma variável de ambiente. - Não cole a chave em chats, screenshots, issues ou repositórios públicos. Se ela vazar, revogue e gere novamente imediatamente no console do seu provedor.
Como o APIMaster Ajuda
Se você quer um único endpoint compatível com OpenAI onde vision de GPT e Claude "simplesmente funciona" com a config acima, o APIMaster foi construído exatamente para isso:
| Vantagem | O que você ganha |
|---|---|
| Um endpoint, muitos modelos vision | gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — todos capazes de processar imagem, todos em https://apimaster.ai/v1 com uma única chave. |
| Desconto | Preços do Marketplace com até ~90% de desconto sobre a tabela da OpenAI e ~85% de desconto sobre a tabela da Claude (preços ao vivo no site). |
| Fidelidade de modelo | Um relay barato pode trocar modelos silenciosamente — confirme que você está recebendo o modelo real com a detecção de fingerprint. |
A partir de $1 de recarga, pague conforme o uso, sem assinatura. A configuração completa passo a passo do OpenCode — incluindo entrada de imagem — está no guia de configuração do OpenCode.
Guias Relacionados
- Guia de configuração do OpenCode — configuração completa de provedor + vision
- Como Corrigir Invalid API Key (OpenAI / Claude) — erros de autenticação 401
- Corrigir "api error 400 content blocked" — moderação, não vision
- Todos os guias de correção de erros de API — índice completo
FAQ
O OpenCode suporta entrada de imagem?
Sim. O OpenCode pode enviar imagens para qualquer modelo com suporte a vision, mas você precisa declarar attachment: true e modalities.input: ["text", "image"] para esse modelo no opencode.jsonc. Sem a declaração, ele envia apenas o nome do arquivo.
Quais modelos do APIMaster conseguem ler imagens no OpenCode?
gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 e claude-haiku-4-5 todos aceitam entrada de imagem. Adicione os dois campos de capacidade a cada um que você quiser usar com imagens.
Por que o modelo só vê o nome do arquivo?
O OpenCode não converteu o anexo em entrada de imagem — em vez disso, colocou o nome do anexo no texto do prompt. Este é o sinal revelador de que os campos attachment / modalities estão faltando.
Adicionei os campos e ainda falha. E agora?
Reinicie o OpenCode completamente, inicie uma nova sessão e confirme que o modelo ativo é o que você configurou. Depois teste o endpoint diretamente com o curl base64 acima para verificar se o problema está no OpenCode ou no provedor.
Por que uma URL de imagem pública deu erro?
O upstream precisa baixar URLs remotas e pode ser bloqueado por tamanho, formato, MIME ou proteção contra hotlink (Error while downloading file. Upstream status code: 400.). Use um upload local / data URL base64 em vez disso.