APIMaster.ai
Back to Blog
APIMaster Blog

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.

OpenCodeimage inputVisionGPTClaudeopencode.jsonc

Published 2026-07-14

Quick Answer

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-5 e 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 /connect do 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.

Registre-se no APIMaster →

Guias Relacionados

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.