APIMaster.ai

OpenCode AI API-Key einrichten — OpenAI-kompatible Konfiguration

So konfigurieren Sie OpenCode AI mit einem benutzerdefinierten API-Key von APIMaster.ai. Fügen Sie APIMaster als OpenAI-kompatiblen Anbieter in opencode.jsonc hinzu und greifen Sie auf Claude, GPT-5.5 und DeepSeek mit Bildeingabe (Vision) und optionalen Reasoning-Stufen zu.

OpenCode Desktop ist der grafische Client für OpenCode (derzeit Beta): lokale Agent-Sitzungen, Dateibearbeitungen und Shell-Ausführungen. APIMaster.ai ist OpenAI-kompatibel — fügen Sie es unter Einstellungen → Anbieter → Benutzerdefinierter Anbieter hinzu.

Holen Sie sich zuerst Ihren API-Schlüssel. Verwenden Sie unten den Platzhalter your_apimaster_key; Screenshots maskieren echte Schlüssel.


Voraussetzungen

  1. OpenCode Desktop installiert von opencode.ai/download.
    • Windows: opencode-desktop-win-x64.exe
    • macOS: brew install --cask opencode-desktop oder .dmg
    • Linux: .deb / .rpm / AppImage
  2. APIMaster API-Schlüssel aus der Konsole.

Schritt 1 — Anbieter öffnen

  1. Starten Sie OpenCode Desktop und öffnen Sie einen Arbeitsbereich.
  2. Klicken Sie auf das Zahnrad-Symbol (unten links).
  3. Wählen Sie Anbieter in der Seitenleiste.
  4. Scrollen Sie zu Benutzerdefinierter Anbieter (Fügen Sie einen OpenAI-kompatiblen Anbieter per Basis-URL hinzu).
  5. Klicken Sie auf + Verbinden.

Einstellungen → Anbieter → Benutzerdefinierter Anbieter


Schritt 2 — Benutzerdefiniertes Anbieterformular

Feld Wert
Anbieter-ID apimaster
Anzeigename APIMaster.ai
Basis-URL https://apimaster.ai/v1
API-Schlüssel Ihr APIMaster-Schlüssel

Benutzerdefiniertes Anbieterformular

Lassen Sie Header leer, es sei denn, Sie authentifizieren sich nur über Header.


Schritt 3 — Modelle hinzufügen & absenden

Auf dem nächsten Bildschirm ordnen Sie Modelle zu (links = Bezeichnung in OpenCode, rechts = Modell-ID, die an APIMaster gesendet wird — normalerweise identisch):

Links Rechts
gpt-5.4 gpt-5.4
claude-sonnet-4-6 claude-sonnet-4-6
  1. Klicken Sie auf + Modell hinzufügen für weitere Zeilen.
  2. Klicken Sie auf Absenden.

Modelle hinzufügen und absenden

Wählen Sie IDs aus dem Marktplatz. Vermeiden Sie reine Bildgenerierungs-Modelle (z. B. gpt-image-2) für Agent-Chats.

Benötigen Sie Bilderkennung (Vision)? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 und claude-haiku-4-5 unterstützen Bildeingabe, aber OpenCode benötigt eine zusätzliche Fähigkeitsdeklaration — siehe Bildeingabe für GPT und Claude aktivieren.


Schritt 4 — Ein Modell auswählen

  1. Starten oder öffnen Sie eine Sitzung.
  2. Öffnen Sie das Modell-Dropdown unterhalb der Eingabe.
  3. Wählen Sie unter APIMaster.ai ein Modell aus (z. B. claude-sonnet-4-6).

Modellauswahl


Schritt 5 — Testen

Senden Sie hallo oder eine kleine Programmieraufgabe. Eine normale Assistant-Antwort (Dateibearbeitungen / Shell) bedeutet, dass APIMaster verbunden ist.

Chat-Test


Fortgeschritten: opencode.jsonc & Reasoning

Der obige UI-Ablauf ist für einen schnellen Start ausreichend. Um Reasoning / Thinking-Effort-Stufen (low, high, max, …) für dieselbe Modell-ID zu konfigurieren, bearbeiten Sie opencode.jsonc.

Konfigurationsdatei-Speicherort

Betriebssystem Pfad
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<benutzername>\.config\opencode\opencode.jsonc

Erstellen Sie die Datei, falls sie fehlt. Starten Sie OpenCode Desktop neu oder beginnen Sie eine neue Sitzung nach dem Speichern.

API-Schlüssel (nicht in jsonc speichern)

Speichern Sie Ihren API-Schlüssel nicht in opencode.jsonc.

Verwenden Sie:

  • /connect im Terminal, oder
  • Einstellungen → Anbieter → Anbieter verbinden (wie in Schritten 1–2 oben).

Bewahren Sie Geheimnisse im Authentifizierungsspeicher von OpenCode auf; jsonc definiert nur Anbieter, Modelle und Reasoning-Varianten.

APIMaster-Anbieter in jsonc

Anbieter-ID: apimaster. npm-Paket: @ai-sdk/openai-compatible.

baseURL muss sein:

https://apimaster.ai/v1

Nicht https://apimaster.ai/ — OpenCode hängt /chat/completions an. Ohne /v1 erhalten Sie https://apimaster.ai/chat/completions404 Nicht gefunden.

Ebenfalls nicht https://api.apimaster.ai/v1 — der Host mit dem api.-Präfix kann in Tests zu TLS-/Verbindungsfehlern führen. Der korrekte Host ist https://apimaster.ai/v1.

Vollständiges Beispiel mit Reasoning-Varianten — herunterladen und die Konfiguration von OpenCode überschreiben:

  1. Laden Sie opencode.jsonc herunter
  2. Überschreiben (oder speichern als):
    • macOS / Linux: ~/.config/opencode/opencode.jsonc
    • Windows: C:\Users\<benutzername>\.config\opencode\opencode.jsonc
  3. Konfigurieren Sie den API-Schlüssel über /connect oder die UI (niemals in jsonc).
  4. Starten Sie OpenCode Desktop neu oder beginnen Sie eine neue Sitzung.

Sichern Sie Ihre vorhandene Datei vor dem Überschreiben oder führen Sie nur den Block provider.apimaster zusammen.

Minimale Struktur:

{
  "$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"]
          },
          "variants": {
            "low": { "reasoningEffort": "low" },
            "high": { "reasoningEffort": "high" }
          }
        }
      }
    }
  }
}

Die Felder attachment und modalities bei gpt-5.5 oben aktivieren die Bildeingabe (Vision) — siehe Bildeingabe für GPT und Claude aktivieren. Lassen Sie sie weg, wenn Sie nur Text-Chat benötigen.

Reasoning-Prinzipien

  • variants = mehrere Reasoning-Stufen für eine Modell-ID in der UI.
  • Für OpenAI-kompatible APIs bildet OpenCode reasoningEffortreasoning_effort im Anforderungstext ab.
  • Variantennamen sollten dem tatsächlichen Parameter entsprechen (high"reasoningEffort": "high").
  • Jedes Modell unterstützt unterschiedliche Stufen — konfigurieren Sie gemäß der offiziellen Dokumentation; keine versteckte Neuzuordnung.

Reasoning-Stufen nach Modell

Modell Reasoning-Varianten Hinweise
gpt-5.4 low, medium, high, xhigh GPT-Reasoning
gpt-5.5 low, medium, high, xhigh GPT-Reasoning
deepseek-v4-flash high, max DeepSeek-Denken (empfohlen)
deepseek-v4-pro high, max DeepSeek-Denken (empfohlen)
claude-sonnet-4-6 low, medium, high, max Claude Sonnet-Aufwand
claude-opus-4-7 low, medium, high, xhigh, max Claude Opus-Aufwand
claude-opus-4-8 low, medium, high, xhigh, max Claude Opus-Aufwand
claude-haiku-4-5 keine Keine unbestätigten Aufwandstufen
minimax-m3 keine Keine unbestätigten Aufwandstufen

Siehe opencode.jsonc für die vollständige Datei.

Reasoning in OpenCode wechseln

  1. Speichern Sie opencode.jsonc, dann neu starten oder neue Sitzung.
  2. Verwenden Sie das Modell-/Reasoning-Dropdown (z. B. gpt-5.4 / high).
  3. Falls in Ihrem Build unterstützt: Strg + Umschalt + D durchläuft die Reasoning-Stufen.

Bildeingabe für GPT und Claude aktivieren

APIMaster.ai-Modelle wie gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 und claude-haiku-4-5 unterstützen Bildeingabe / Vision — das Lesen von Screenshots, Fotos und Diagrammen zur Erkennung, Beschreibung, OCR oder zum Programmieren aus einem Bild.

Ein Modell, das Bilder unterstützt ≠ OpenCode sendet das Bild. Auch wenn das APIMaster.ai-Modell selbst Vision unterstützt, müssen Sie die Fähigkeit deklarieren in opencode.jsonc. Andernfalls sendet OpenCode das Bild möglicherweise nicht als multimodale Eingabe — es fügt nur den Anhang-/Dateinamen in den Prompt ein, und das Modell antwortet in etwa mit „Das aktuelle Modell unterstützt keine Bildeingabe.“

Die beiden zu deklarierenden Felder

Fügen Sie für jedes Modell, das Sie mit Bildern verwenden möchten, hinzu:

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}
  • attachment: true teilt OpenCode mit, dass dieses Modell Anhänge akzeptiert.
  • modalities.input, das "image" enthält, teilt OpenCode mit, dass dieses Modell Bildeingabe unterstützt, sodass OpenCode das Bild in multimodalen image_url-Inhalt umwandelt.

Vollständiges Beispiel (GPT und Claude)

Laden Sie opencode.jsonc herunter (Felder bereits enthalten) oder führen Sie den Block provider.apimaster unten in Ihre bestehende Konfiguration zusammen:

{
  "$schema": "https://opencode.ai/config.json",
  "disabled_providers": [],
  "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"]
          },
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" },
            "xhigh": { "reasoningEffort": "xhigh" }
          }
        },
        "claude-sonnet-4-6": {
          "name": "claude-sonnet-4-6",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          },
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "claude-opus-4-7": {
          "name": "claude-opus-4-7",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          },
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" },
            "xhigh": { "reasoningEffort": "xhigh" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "claude-opus-4-8": {
          "name": "claude-opus-4-8",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          },
          "variants": {
            "low": { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high": { "reasoningEffort": "high" },
            "xhigh": { "reasoningEffort": "xhigh" },
            "max": { "reasoningEffort": "max" }
          }
        },
        "claude-haiku-4-5": {
          "name": "claude-haiku-4-5",
          "attachment": true,
          "modalities": {
            "input": ["text", "image"],
            "output": ["text"]
          }
        }
      }
    }
  }
}

Hinweise:

  • Um die Bildeingabe nur für gpt-5.5 zu aktivieren, fügen Sie attachment und modalities allein zu gpt-5.5 hinzu; lassen Sie die anderen unverändert.
  • Um nur Claude zu aktivieren, fügen Sie diese Felder nur den Claude-Modellen hinzu.
  • Behalten Sie die bestehenden Reasoning-Varianten jedes Modells (low / medium / high / xhigh / max) bei — Bildfelder und Reasoning kollidieren nicht.
  • Beenden Sie OpenCode nach dem Bearbeiten von opencode.jsonc vollständig und starten Sie es neu, oder beginnen Sie zumindest eine neue Sitzung, damit die Konfiguration neu geladen wird.
  • Legen Sie den API-Schlüssel niemals in dieser Datei ab — konfigurieren Sie ihn über /connect oder die UI (siehe Sicherheit unten).

Bildquelle: lokaler Upload / base64 bevorzugen

  • Empfohlen: Laden Sie ein lokales PNG / JPG in OpenCode hoch. Idealerweise wandelt OpenCode es in eine base64-Daten-URL (data:image/png;base64,...) um, bevor es an APIMaster gesendet wird — dies ist der verifizierte funktionierende Weg.
  • Das direkte Übergeben einer öffentlichen Bild-URL kann fehlschlagen. APIMaster / der Upstream kann ein öffentliches Bild aufgrund von Netzwerk, Format, Größe, MIME oder Hotlink-Schutz möglicherweise nicht herunterladen und gibt zurück:
    Error while downloading file. Upstream status code: 400.
    
    Verwenden Sie in diesem Fall eine base64-Daten-URL oder einen lokalen Upload, anstatt sich darauf zu verlassen, dass die Modellseite eine öffentliche URL herunterlädt.

Testen, ob die Bilderkennung funktioniert

Option A — In OpenCode testen

  1. Wechseln Sie im Modell-Dropdown zu apimaster/gpt-5.5 oder apimaster/claude-sonnet-4-6.
  2. Laden Sie ein PNG-/JPG-Bild hoch.
  3. Geben Sie ein:
    Describe the main content of this image.
    
  • Bei korrekter Konfiguration sollte das Modell den Bildinhalt beschreiben.
  • Wenn das Modell nur einen Datei-/Anhangnamen erwähnt oder mit „image input not supported“ antwortet, sendet OpenCode wahrscheinlich den Bildinhalt nicht — prüfen Sie die Felder attachment und modalities des Modells und starten Sie OpenCode neu.

Option B — Direkt über die API testen

Nützlich, um ein APIMaster-Modellproblem von einem OpenCode-Adapterproblem zu unterscheiden. Codieren Sie niemals einen echten Schlüssel fest — verwenden Sie eine Umgebungsvariable.

Linux / macOS:

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
  }'

Tauschen Sie model gegen claude-sonnet-4-6 aus, um Claude auf dieselbe Weise zu testen (verifiziert HTTP 200 mit Bilderkennung).

Windows PowerShell:

$env:APIMASTER_API_KEY = "your APIMaster API key"
# Convert a local image to base64, put it into image_url.url as data:image/png;base64,...
# Then call https://apimaster.ai/v1/chat/completions with the same JSON body.

Eine 200-Antwort, die das Bild beschreibt, bedeutet, dass die Bildeingabe auf APIMaster-Seite funktioniert; wenn OpenCode weiterhin fehlschlägt, liegt das Problem in der attachment-/modalities-Konfiguration von OpenCode oder an einem fehlenden Neustart.


Fehlerbehebung

UI-Einrichtung

Problem Lösung
401 Schlüssel prüfen; bei Offenlegung rotieren
Modell nicht gefunden Basis-URL muss https://apimaster.ai/v1 sein; Modell-ID muss mit dem Marktplatz übereinstimmen
Keine APIMaster-Modelle Anbieter in Einstellungen bearbeiten → Zuordnungen hinzufügen → Absenden
Langsam / Zeitüberschreitung Versuchen Sie ein anderes Modell; verwenden Sie den API-Schlüssel-Tester

Reasoning / jsonc

Warum nur high und max für DeepSeek?
Der offizielle OpenAI-kompatible Denkaufwand für DeepSeek ist high und max. Vermeiden Sie low / medium / xhigh, die unvorhersehbar neu zugeordnet werden.

Warum max für Claude Sonnet, nicht xhigh?
Die höchste Stufe von Sonnet ist max; xhigh ist für Opus (claude-opus-4-7 / claude-opus-4-8).

Warum keine Varianten für Haiku oder MiniMax M3?
Ohne dokumentierte reasoningEffort-Werte überspringen Sie Varianten — das Modell funktioniert trotzdem; die UI zeigt nur keine Reasoning-Unterstufen an.

Erhalten Sie immer noch 400?

  1. baseURL = https://apimaster.ai/v1 (nicht die Site-Root).
  2. Die Schreibweise der Modell-ID stimmt mit dem Marktplatz überein.
  3. Schlüssel über /connect oder UI konfiguriert.
  4. Entfernen Sie vorübergehend variants — wenn einfache Anfragen funktionieren, ist das gewählte reasoning_effort möglicherweise für dieses Modell nicht unterstützt.

Bildeingabe / Vision

Warum sagt OpenCode „Das aktuelle Modell unterstützt keine Bildeingabe“?

  • Die gpt-5.5- und mehrere Claude-Modelle von APIMaster.ai unterstützen Bildeingabe; diese Meldung bedeutet normalerweise, dass OpenCode das Bild nicht als multimodale Eingabe sendet.
  • Prüfen Sie, dass das Modell in opencode.jsonc Folgendes hat:
    "attachment": true,
    "modalities": {
      "input": ["text", "image"],
      "output": ["text"]
    }
    
  • Bestätigen Sie, dass Sie OpenCode neu gestartet haben nach der Bearbeitung.
  • Bestätigen Sie, dass baseURL https://apimaster.ai/v1 ist.
  • Bestätigen Sie, dass der APIMaster API-Schlüssel gültig ist.
  • Wenn eine öffentliche Bild-URL fehlschlägt, verwenden Sie eine base64-Daten-URL oder einen lokalen Upload.

Warum sieht das Modell nur den Anhangnamen und nicht das Bild?

  • Normalerweise hat OpenCode den Anhang nicht gelesen und in Bildeingabe umgewandelt — es hat nur den Datei-/Anhangnamen in den Prompt eingefügt.
  • Aktivieren Sie attachment: true und modalities.input: ["text", "image"] und verwenden Sie ein Modell, das Bildeingabe unterstützt.

Warum gibt eine öffentliche Bild-URL einen Fehler aus?

  • APIMaster oder der Upstream kann beim Herunterladen eines öffentlichen Bildes durch Netzwerk, Format, Dateigröße, MIME, Hotlink-Schutz oder Proxy eingeschränkt sein.
  • Bei Error while downloading file. Upstream status code: 400. wechseln Sie zu einer base64-Daten-URL.

Funktioniert es nach dem Hinzufügen von attachment immer noch nicht?

  1. Beenden und starten Sie OpenCode vollständig neu.
  2. Beginnen Sie eine neue Sitzung zum Testen.
  3. Bestätigen Sie, dass das aktive Modell der Sitzung dasjenige ist, das Sie mit Bildfeldern konfiguriert haben.
  4. Bestätigen Sie, dass der API-Schlüssel gültig ist.
  5. Prüfen Sie die OpenCode-Logs auf 401-/400-/unsupported image-/invalid content type-Fehler.
  6. Verwenden Sie Option B — Direkt über die API testen mit einem base64-Bild, um ein APIMaster-Modellproblem von einem OpenCode-Adapterproblem zu unterscheiden.

Sicherheit

  • Legen Sie den APIMaster API-Schlüssel nicht in opencode.jsonc ab; diese Datei enthält nur Anbieter, Modelle, Bildfähigkeiten und Reasoning.
  • Fügen Sie den Schlüssel nicht in Chats, Screenshots, Issues, öffentliche Dokumente oder Code-Repositories ein.
  • Rotieren Sie Schlüssel, die in Screenshots oder Logs aufgetaucht sind — widerrufen und neu generieren in der Konsole, dann den Anbieter in OpenCode aktualisieren.
  • Bevorzugen Sie den /connect-Ablauf von OpenCode, Umgebungsvariablen oder lokale Anmeldedatenspeicherung zur Verwaltung des API-Schlüssels.
  • OpenCode kann Dateien lesen/schreiben und Shell-Befehle ausführen — verwenden Sie nur vertrauenswürdige Arbeitsbereiche.

Checkliste

  • OpenCode Desktop installiert
  • Benutzerdefinierter Anbieter verbunden oder apimaster in opencode.jsonc
  • Basis-URL / baseURL = https://apimaster.ai/v1 (nicht https://apimaster.ai/)
  • API-Schlüssel über /connect oder UI (nicht in jsonc)
  • Mindestens ein Chat-Modell zugeordnet
  • (Optional) Reasoning-Varianten entsprechen den offiziellen Stufen
  • Testnachricht erfolgreich

Checkliste für Bildeingabe

  • baseURL ist https://apimaster.ai/v1 (nicht https://api.apimaster.ai/v1)
  • Verwendung eines Vision-fähigen Modells, z. B. gpt-5.5 oder ein Vision-fähiges Claude-Modell
  • Das Modell hat attachment: true
  • Die modalities.input des Modells enthält "image"
  • OpenCode nach dem Bearbeiten von opencode.jsonc neu gestartet
  • API-Schlüssel ist gültig
  • Testbild ist ein gängiges Format (PNG / JPG)
  • Wenn eine öffentliche Bild-URL fehlschlägt, eine base64-Daten-URL versucht

Zusammenfassung

  • Schlüssel: baseURL (https://apimaster.ai/v1), Modell-ID, API-Schlüssel (/connect oder UI), optionale Reasoning-Varianten.
  • Varianten-Namen = tatsächliche reasoning_effort-Werte.
  • Konfigurieren Sie Stufen pro Modell; überspringen Sie Varianten, wenn nicht unterstützt (Haiku, MiniMax M3).

Siehe auch