APIMaster.ai
Back to Blog
APIMaster Blog

Risolvi "Model Does Not Support Image Input" in OpenCode — Vision di GPT e Claude non funziona

OpenCode non legge la tua immagine con GPT o Claude? Il modello supporta la vision, ma OpenCode invia solo il nome del file. Risolvi dichiarando attachment e modalities per gpt-5.5 e i modelli Claude in opencode.jsonc.

OpenCodeimage inputVisionGPTClaudeopencode.jsonc

Published 2026-07-14

Quick Answer

Hai allegato un PNG/JPG in OpenCode, hai chiesto a GPT o Claude di descriverlo e hai ricevuto qualcosa come "the current model does not support image input" — oppure il modello menziona solo il nome del file, non l'immagine. In quasi tutti i casi il modello supporta la vision; il problema è che OpenCode non ha mai inviato l'immagine come input multimodale.

Causa principale: OpenCode inoltra un'immagine solo quando il modello è dichiarato come capace di gestire immagini in opencode.jsonc. Senza quella dichiarazione tratta l'allegato come un semplice riferimento a un file e scarta i pixel.

Soluzione rapida: aggiungi due campi al modello in opencode.jsonc, poi riavvia OpenCode:

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}

Se ti serve un endpoint compatibile con OpenAI e capace di gestire la vision che funziona con questa configurazione fin da subito, APIMaster offre gpt-5.5 e i modelli vision di Claude su https://apimaster.ai/v1. Configurazione completa: guida alla configurazione di OpenCode.

Come si presenta il problema

  • Passi a un modello GPT o Claude in OpenCode, trascini uno screenshot e chiedi "descrivi questa immagine".
  • La risposta è una variante di "I can't read images", "image input is not supported for this model", oppure il modello risponde a proposito di un nome di file (screenshot.png) invece che del contenuto reale.
  • La stessa immagine funziona senza problemi quando la incolli direttamente in ChatGPT o Claude.

Questo non è un limite del modello e non è una chiave API rotta. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 e claude-haiku-4-5 accettano tutti input immagine tramite l'API Chat Completions compatibile con OpenAI. L'immagine semplicemente non è mai uscita da OpenCode.

Perché succede

OpenCode decide per ogni modello se un allegato può essere inviato e se quell'allegato può essere un'immagine. Legge questa informazione dalla configurazione del provider in opencode.jsonc. Se la voce del tuo modello è così:

"gpt-5.5": {
  "name": "gpt-5.5"
}

…allora OpenCode non ha alcun segnale che il modello accetti immagini. A seconda della build, o rifiuta di allegare il file o passa nel testo del prompt solo il nome dell'allegato. Il modello riceve "[attachment: diagram.png]" — una stringa, non un'immagine — e correttamente risponde che non gli è stata fornita alcuna immagine.

La soluzione è comunicare a OpenCode due cose in modo esplicito:

Campo Significato
"attachment": true A questo modello è consentito ricevere allegati.
"modalities": { "input": ["text", "image"] } Questo modello accetta input image, quindi OpenCode converte il file in un blocco di contenuto multimodale image_url.

Una volta impostati entrambi, OpenCode codifica l'immagine in base64 e la invia come vero e proprio input vision — e il modello la legge.

Come risolverlo

1. Individua il tuo opencode.jsonc

OS Percorso
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<username>\.config\opencode\opencode.jsonc

2. Aggiungi attachment + modalities a ogni modello vision

Ecco un blocco provider funzionante per GPT e Claude su un endpoint compatibile con 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"]
          }
        }
      }
    }
  }
}

L'esempio completo che copre claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 e le varianti reasoning è nella guida alla configurazione di OpenCode. Puoi abilitare l'input immagine per un solo modello — solo quel modello ha bisogno dei due campi.

3. Usa la base URL corretta

L'host compatibile con OpenAI è:

https://apimaster.ai/v1

Non usare https://api.apimaster.ai/v1 — l'host con prefisso api. può causare errori di TLS / connessione.

4. Riavvia OpenCode

Le modifiche alla configurazione vengono caricate all'avvio. Chiudi completamente e riapri OpenCode, o come minimo avvia una nuova sessione, altrimenti la vecchia configurazione (cieca alle immagini) rimane attiva.

5. Preferisci upload locale / base64 agli URL pubblici

Carica un PNG/JPG locale in OpenCode — viene convertito in un data URL base64, che è il percorso affidabile. Passare direttamente un URL di immagine pubblico può fallire, perché l'upstream deve scaricarla e potrebbe incappare in limiti di formato, dimensione, MIME o hotlink:

Error while downloading file. Upstream status code: 400.

Se vedi questo errore, passa a un file locale / data URL base64 invece di un URL remoto.

Verifica che funzioni

In OpenCode

Passa a apimaster/gpt-5.5 o apimaster/claude-sonnet-4-6, carica un'immagine e chiedi:

Describe the main content of this image.

Una configurazione corretta restituisce una descrizione reale. Se vede ancora solo un nome di file, i campi attachment / modalities mancano oppure OpenCode non è stato riavviato.

Direttamente via API (isola il problema)

Per confermare che l'endpoint stesso gestisca la vision — separando un problema di configurazione di OpenCode da un problema del provider — invia un'immagine in base64. Non inserire mai una chiave reale in modo fisso; usa una variabile d'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
  }'

Cambia model in claude-sonnet-4-6 per testare Claude allo stesso modo. Una risposta 200 che descrive l'immagine significa che la vision funziona a livello di API — quindi qualsiasi errore residuo è dal lato della configurazione di OpenCode.

Tieni al sicuro la tua chiave API

  • Non mettere mai la chiave API dentro opencode.jsonc. Quel file contiene solo il provider, i modelli e le capacità.
  • Configura la chiave tramite il flusso /connect di OpenCode, la UI Connect Provider o una variabile d'ambiente.
  • Non incollare la chiave in chat, screenshot, issue o repository pubblici. Se trapela, revocala e rigenerala immediatamente nella console del tuo provider.

Come ti aiuta APIMaster

Se vuoi un unico endpoint compatibile con OpenAI dove la vision di GPT e Claude "funziona e basta" con la configurazione sopra, APIMaster è costruito esattamente per questo:

Vantaggio Cosa ottieni
Un endpoint, molti modelli vision gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — tutti capaci di gestire immagini, tutti su https://apimaster.ai/v1 con una sola chiave.
Sconto Prezzi del Marketplace fino a ~90% in meno rispetto ai listini OpenAI e ~85% in meno rispetto ai listini Claude (prezzi live sul sito).
Fedeltà del modello Un relay economico può sostituire i modelli di nascosto — verifica di ricevere quello vero con la rilevazione tramite fingerprint.

Da $1 di ricarica, pay-as-you-go, nessun abbonamento. La configurazione completa passo-passo di OpenCode — incluso l'input immagine — è nella guida alla configurazione di OpenCode.

Registrati su APIMaster →

Guide correlate

FAQ

OpenCode supporta l'input immagine? Sì. OpenCode può inviare immagini a qualsiasi modello capace di gestire la vision, ma devi dichiarare attachment: true e modalities.input: ["text", "image"] per quel modello in opencode.jsonc. Senza la dichiarazione invia solo il nome del file.

Quali modelli APIMaster possono leggere immagini in OpenCode? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 e claude-haiku-4-5 accettano tutti input immagine. Aggiungi i due campi di capacità a ciascuno di quelli che vuoi usare con le immagini.

Perché il modello vede solo il nome del file? OpenCode non ha convertito l'allegato in input immagine — ha invece messo il nome dell'allegato nel testo del prompt. Questo è il segnale rivelatore che i campi attachment / modalities mancano.

Ho aggiunto i campi e continua a fallire. E adesso? Riavvia completamente OpenCode, avvia una nuova sessione e conferma che il modello attivo sia quello che hai configurato. Poi testa l'endpoint direttamente con il curl base64 sopra per verificare se il problema è OpenCode o il provider.

Perché un URL di immagine pubblico ha dato errore? L'upstream deve scaricare gli URL remoti e può essere bloccato da dimensione, formato, MIME o protezione hotlink (Error while downloading file. Upstream status code: 400.). Usa invece un upload locale / data URL base64.