OpenCode "Model Does Not Support Image Input" beheben — GPT & Claude Vision funktioniert nicht
OpenCode liest dein Bild mit GPT oder Claude nicht? Das Modell kann Vision, aber OpenCode sendet nur den Dateinamen. Fix über attachment und modalities für gpt-5.5 und Claude in opencode.jsonc.
Published 2026-07-14
Du hast ein PNG/JPG in OpenCode angehängt, GPT oder Claude gebeten, es zu beschreiben, und bekommst etwas wie "the current model does not support image input" zurück — oder das Modell nennt nur den Dateinamen, nicht das Bild. In fast allen Fällen unterstützt das Modell Vision sehr wohl; das Problem ist, dass OpenCode das Bild nie als multimodale Eingabe gesendet hat.
Ursache: OpenCode leitet ein Bild nur dann weiter, wenn das Modell in opencode.jsonc als bildfähig deklariert ist. Ohne diese Deklaration behandelt es den Anhang als reine Dateireferenz und verwirft die Pixel.
Schnelle Lösung: Füge dem Modell in opencode.jsonc zwei Felder hinzu und starte OpenCode neu:
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
Wenn du einen vision-fähigen, OpenAI-kompatiblen Endpunkt brauchst, der mit dieser Konfiguration heute funktioniert: APIMaster bietet gpt-5.5 und Claude-Vision-Modelle unter https://apimaster.ai/v1. Vollständiges Setup: OpenCode-Konfigurationsanleitung.
So sieht das Problem aus
- Du wechselst in OpenCode zu einem GPT- oder Claude-Modell, ziehst einen Screenshot hinein und fragst "describe this image."
- Die Antwort ist eine Variation von "I can't read images", "image input is not supported for this model", oder das Modell antwortet über einen Dateinamen (
screenshot.png) statt über den tatsächlichen Inhalt. - Dasselbe Bild funktioniert einwandfrei, wenn du es direkt in ChatGPT oder Claude einfügst.
Das ist keine Modellbeschränkung und kein kaputter API-Key. gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 und claude-haiku-4-5 akzeptieren allesamt Bildeingaben über die OpenAI-kompatible Chat-Completions-API. Das Bild hat OpenCode schlicht nie verlassen.
Warum es passiert
OpenCode entscheidet pro Modell, ob ein Anhang gesendet werden darf und ob dieser Anhang ein Bild sein darf. Es liest das aus deiner Provider-Konfiguration in opencode.jsonc. Wenn dein Modelleintrag so aussieht:
"gpt-5.5": {
"name": "gpt-5.5"
}
…dann hat OpenCode kein Signal, dass das Modell Bilder annimmt. Je nach Build weigert es sich entweder, die Datei anzuhängen, oder übergibt nur den Anhangsnamen in den Prompt-Text. Das Modell erhält "[attachment: diagram.png]" — eine Zeichenkette, kein Bild — und antwortet korrekterweise, dass ihm kein Bild gegeben wurde.
Die Lösung besteht darin, OpenCode zwei Dinge explizit mitzuteilen:
| Feld | Bedeutung |
|---|---|
"attachment": true |
Dieses Modell darf Anhänge empfangen. |
"modalities": { "input": ["text", "image"] } |
Dieses Modell akzeptiert Bild-Eingaben, also wandelt OpenCode die Datei in einen multimodalen image_url-Content-Block um. |
Sobald beides gesetzt ist, base64-codiert OpenCode das Bild und sendet es als echte Vision-Eingabe — und das Modell liest es.
So behebst du es
1. Finde deine opencode.jsonc
| Betriebssystem | Pfad |
|---|---|
| macOS / Linux | ~/.config/opencode/opencode.jsonc |
| Windows | C:\Users\<username>\.config\opencode\opencode.jsonc |
2. Füge jedem Vision-Modell attachment + modalities hinzu
Hier ist ein funktionierender Provider-Block für GPT und Claude an einem OpenAI-kompatiblen Endpunkt:
{
"$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"]
}
}
}
}
}
}
Das vollständige Beispiel, das
claude-opus-4-7,claude-opus-4-8,claude-haiku-4-5und Reasoning-Varianten abdeckt, findest du in der OpenCode-Setup-Anleitung. Du kannst Bildeingaben für nur ein einzelnes Modell aktivieren — nur dieses Modell braucht die zwei Felder.
3. Verwende die korrekte Base-URL
Der OpenAI-kompatible Host ist:
https://apimaster.ai/v1
Verwende nicht https://api.apimaster.ai/v1 — der Host mit dem api.-Präfix kann TLS-/Verbindungsfehler verursachen.
4. Starte OpenCode neu
Konfigurationsänderungen werden beim Start geladen. Beende OpenCode vollständig und öffne es neu, oder starte zumindest eine neue Session, sonst bleibt die alte (bildblinde) Konfiguration aktiv.
5. Bevorzuge lokalen Upload / Base64 gegenüber öffentlichen URLs
Lade ein lokales PNG/JPG in OpenCode hoch — es wird in eine Base64-Data-URL umgewandelt, was der zuverlässige Weg ist. Das direkte Übergeben einer öffentlichen Bild-URL kann fehlschlagen, weil der Upstream sie herunterladen muss und dabei auf Format-, Größen-, MIME- oder Hotlink-Grenzen stoßen kann:
Error while downloading file. Upstream status code: 400.
Wenn du das siehst, wechsle zu einer lokalen Datei / Base64-Data-URL statt einer Remote-URL.
Teste, dass es funktioniert
In OpenCode
Wechsle zu apimaster/gpt-5.5 oder apimaster/claude-sonnet-4-6, lade ein Bild hoch und frage:
Describe the main content of this image.
Eine korrekte Konfiguration liefert eine echte Beschreibung. Wenn nur noch ein Dateiname erkannt wird, fehlen die Felder attachment / modalities oder OpenCode wurde nicht neu gestartet.
Direkt über die API (Problem eingrenzen)
Um zu bestätigen, dass der Endpunkt selbst Vision verarbeitet — und ein OpenCode-Konfigurationsproblem von einem Provider-Problem zu trennen — sende ein Base64-Bild. Codiere niemals einen echten Key fest; verwende eine Umgebungsvariable:
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
}'
Tausche model gegen claude-sonnet-4-6, um Claude auf dieselbe Weise zu testen. Eine 200-Antwort, die das Bild beschreibt, bedeutet, dass Vision auf der API-Ebene funktioniert — jeder verbleibende Fehler liegt also auf der OpenCode-Konfigurationsseite.
Halte deinen API-Key sicher
- Lege den API-Key niemals in
opencode.jsoncab. Diese Datei enthält nur Provider, Modelle und Fähigkeiten. - Konfiguriere den Key über den
/connect-Flow von OpenCode, das Connect-Provider-UI oder eine Umgebungsvariable. - Füge den Key nicht in Chats, Screenshots, Issues oder öffentliche Repos ein. Wenn er durchsickert, widerrufe und regeneriere ihn sofort in deiner Provider-Konsole.
Wie APIMaster hilft
Wenn du einen einzigen OpenAI-kompatiblen Endpunkt willst, an dem GPT- und Claude-Vision mit der obigen Konfiguration "einfach funktioniert", ist APIMaster genau dafür gebaut:
| Vorteil | Was du bekommst |
|---|---|
| Ein Endpunkt, viele Vision-Modelle | gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, claude-haiku-4-5 — alle bildfähig, alle unter https://apimaster.ai/v1 mit einem Key. |
| Rabatt | Marketplace-Preise bis zu ~90 % unter OpenAI-Listenpreisen und ~85 % unter Claude-Listenpreisen (Live-Preise auf der Website). |
| Modelltreue | Ein billiges Relay kann klammheimlich Modelle austauschen — bestätige mit Fingerprint-Erkennung, dass du das echte Modell bekommst. |
Ab 1 $ Aufladung, Pay-as-you-go, kein Abo. Die vollständige Schritt-für-Schritt-Einrichtung von OpenCode — inklusive Bildeingabe — steht in der OpenCode-Konfigurationsanleitung.
Verwandte Anleitungen
- OpenCode-Konfigurationsanleitung — vollständiges Provider- + Vision-Setup
- So behebst du Invalid API Key (OpenAI / Claude) — 401-Authentifizierungsfehler
- Fix "api error 400 content blocked" — Moderation, nicht Vision
- Alle Anleitungen zu API-Fehlern — vollständiger Index
FAQ
Unterstützt OpenCode überhaupt Bildeingaben?
Ja. OpenCode kann Bilder an jedes vision-fähige Modell senden, aber du musst für dieses Modell in opencode.jsonc attachment: true und modalities.input: ["text", "image"] deklarieren. Ohne die Deklaration sendet es nur den Dateinamen.
Welche APIMaster-Modelle können in OpenCode Bilder lesen?
gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 und claude-haiku-4-5 akzeptieren alle Bildeingaben. Füge jedem Modell, das du mit Bildern nutzen willst, die zwei Fähigkeitsfelder hinzu.
Warum sieht das Modell nur den Dateinamen?
OpenCode hat den Anhang nicht in eine Bildeingabe umgewandelt — es hat stattdessen den Anhangsnamen in den Prompt-Text gesetzt. Das ist das verräterische Zeichen dafür, dass die Felder attachment / modalities fehlen.
Ich habe die Felder hinzugefügt und es schlägt weiterhin fehl. Was jetzt?
Starte OpenCode vollständig neu, beginne eine neue Session und bestätige, dass das aktive Modell das ist, das du konfiguriert hast. Teste dann den Endpunkt direkt mit dem obigen Base64-curl, um zu prüfen, ob das Problem bei OpenCode oder beim Provider liegt.
Warum ist eine öffentliche Bild-URL fehlgeschlagen?
Der Upstream muss Remote-URLs herunterladen und kann durch Größe, Format, MIME oder Hotlink-Schutz blockiert werden (Error while downloading file. Upstream status code: 400.). Verwende stattdessen einen lokalen Upload / eine Base64-Data-URL.