APIMaster.ai

OpenCode AI APIキー設定 — OpenAI互換の構成方法

APIMaster.aiのカスタムAPIキーでOpenCode AIを設定する手順。opencode.jsoncにAPIMasterをOpenAI互換プロバイダーとして追加し、Claude、GPT-5.5、DeepSeekを画像入力(Vision)やオプションのReasoning階層で利用可能に。

OpenCode DesktopOpenCode のグラフィカルクライアントです(現在ベータ版)。ローカルエージェントセッション、ファイル編集、シェル実行を提供します。APIMaster.aiOpenAI 互換 です — 設定 → プロバイダ → カスタムプロバイダ で追加できます。

まず API キーを取得 してください。以下ではプレースホルダ your_apimaster_key を使用します。スクリーンショットでは実際のキーはマスクされています。


前提条件

  1. opencode.ai/download から OpenCode Desktop をインストールします。
    • Windows: opencode-desktop-win-x64.exe
    • macOS: brew install --cask opencode-desktop または .dmg
    • Linux: .deb / .rpm / AppImage
  2. コンソール から APIMaster API キーを取得します。

ステップ 1 — プロバイダを開く

  1. OpenCode Desktop を起動し、ワークスペースを開きます。
  2. 歯車アイコン(左下)をクリックします。
  3. サイドバーで プロバイダ を選択します。
  4. カスタムプロバイダベース URL で OpenAI 互換プロバイダを追加)までスクロールします。
  5. + 接続 をクリックします。

設定 → プロバイダ → カスタムプロバイダ


ステップ 2 — カスタムプロバイダフォーム

フィールド
プロバイダ ID apimaster
表示名 APIMaster.ai
ベース URL https://apimaster.ai/v1
API キー あなたの APIMaster キー

カスタムプロバイダフォーム

ヘッダーのみで認証する場合を除き、ヘッダー は空のままにします。


ステップ 3 — モデルを追加して送信

次の画面でモデルをマッピングします(左 = OpenCode でのラベル、右 = APIMaster に送信される モデル ID — 通常は同じです)。

gpt-5.4 gpt-5.4
claude-sonnet-4-6 claude-sonnet-4-6
  1. 行を追加するには + モデルを追加 をクリックします。
  2. 送信 をクリックします。

モデルを追加して送信

ID はマーケットプレイスから選択してください。エージェントチャットでは画像生成専用モデル(例: gpt-image-2)は避けてください。

画像認識(Vision)が必要ですか? gpt-5.5claude-sonnet-4-6claude-opus-4-7claude-opus-4-8claude-haiku-4-5 は画像入力をサポートしていますが、OpenCode では追加の capability 宣言が必要です — GPT と Claude で画像入力を有効にするを参照してください。


ステップ 4 — モデルを選択

  1. セッションを開始または開きます。
  2. 入力欄の下にある モデルドロップダウン を開きます。
  3. APIMaster.ai の下からモデルを選択します(例: claude-sonnet-4-6)。

モデルピッカー


ステップ 5 — テスト

hello または小さなコーディングタスクを送信します。通常のアシスタント応答(ファイル編集/シェル)が返ってくれば、APIMaster は接続されています。

チャットテスト


詳細設定: opencode.jsonc と Reasoning

上記の UI フローで簡単に開始できます。同じモデル ID に対して Reasoning / thinking effort の階層(lowhighmax など)を設定するには、opencode.jsonc を編集します。

設定ファイルの場所

OS パス
macOS / Linux ~/.config/opencode/opencode.jsonc
Windows C:\Users\<ユーザー名>\.config\opencode\opencode.jsonc

ファイルがない場合は作成してください。保存後、OpenCode Desktop を再起動するか、新しいセッション を開始します。

API キー(jsonc には記述しないでください)

API キーを opencode.jsonc に保存 しないでください

以下のいずれかを使用してください。

  • ターミナルで /connect を実行、または
  • 設定 → プロバイダ → プロバイダに接続(ステップ 1〜2 と同じ)

シークレットは OpenCode の認証ストアに保管し、jsonc にはプロバイダ、モデル、Reasoning バリアントのみを定義します。

jsonc での APIMaster プロバイダ

プロバイダ ID: apimaster。npm パッケージ: @ai-sdk/openai-compatible

baseURL は次のように指定する必要があります:

https://apimaster.ai/v1

https://apimaster.ai/ ではありません — OpenCode は /chat/completions を追加します。/v1 がないと https://apimaster.ai/chat/completions になり、404 Not Found になります。

https://api.apimaster.ai/v1 も使用しないでくださいapi. プレフィックス付きホストはテストで TLS / 接続の失敗 を引き起こす場合があります。正しいホストは https://apimaster.ai/v1 です。

Reasoning バリアントを含む完全な例 — ダウンロードして OpenCode の設定を上書きします。

  1. opencode.jsonc をダウンロード
  2. 以下に上書き(または保存):
    • macOS / Linux: ~/.config/opencode/opencode.jsonc
    • Windows: C:\Users\<ユーザー名>\.config\opencode\opencode.jsonc
  3. /connect または UI で API キーを設定(jsonc には絶対に記述しない)。
  4. OpenCode Desktop を再起動 するか、新しいセッションを開始します。

上書きする前に既存ファイルをバックアップするか、provider.apimaster ブロックのみをマージしてください。

最小構成:

{
  "$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" }
          }
        }
      }
    }
  }
}

上記の gpt-5.5attachment および modalities フィールドは 画像入力(Vision)を有効にしますGPT と Claude で画像入力を有効にするを参照してください。テキストチャットのみを利用する場合は省略してください。

Reasoning の基本原則

  • variants = 1 つのモデル ID に対して複数の Reasoning 階層を UI で提供します。
  • OpenAI 互換 API では、OpenCode が reasoningEffort をリクエストボディの reasoning_effort にマッピングします。
  • バリアント名は実際のパラメータと一致させる必要がありますhigh"reasoningEffort": "high")。
  • モデルごとにサポートされる階層は異なります — 公式ドキュメントに従って設定してください。隠れた再マッピングはありません。

モデル別 Reasoning 階層

モデル Reasoning バリアント 備考
gpt-5.4 low, medium, high, xhigh GPT reasoning
gpt-5.5 low, medium, high, xhigh GPT reasoning
deepseek-v4-flash high, max DeepSeek thinking(推奨)
deepseek-v4-pro high, max DeepSeek thinking(推奨)
claude-sonnet-4-6 low, medium, high, max Claude Sonnet effort
claude-opus-4-7 low, medium, high, xhigh, max Claude Opus effort
claude-opus-4-8 low, medium, high, xhigh, max Claude Opus effort
claude-haiku-4-5 なし 未確認の effort 階層なし
minimax-m3 なし 未確認の effort 階層なし

完全なファイルは opencode.jsonc を参照してください。

OpenCode での Reasoning 切り替え

  1. opencode.jsonc を保存し、再起動 または 新しいセッション を開始します。
  2. モデル / Reasoning ドロップダウン を使用します(例: gpt-5.4 / high)。
  3. ビルドでサポートされている場合: Ctrl + Shift + D で Reasoning 階層を切り替えます。

GPT と Claude で画像入力を有効にする

APIMaster.ai の gpt-5.5claude-sonnet-4-6claude-opus-4-7claude-opus-4-8claude-haiku-4-5 などのモデルは 画像入力 / Vision をサポートしています — スクリーンショット、写真、チャートの読み取り、認識、説明、OCR、画像からのコーディングが可能です。

モデルが画像をサポートすること ≠ OpenCode が画像を送信すること。 APIMaster.ai のモデル自体が Vision をサポートしていても、opencode.jsonccapability を宣言する 必要があります。宣言しないと、OpenCode は画像をマルチモーダル入力として送信せず、添付ファイル / ファイル名 をプロンプトに入れるだけになり、モデルは「現在のモデルは画像入力をサポートしていません」のような応答を返します。

宣言すべき 2 つのフィールド

画像で使用したい各モデルに、次を追加します。

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}
  • attachment: true は、このモデルが 添付ファイルを受け入れる ことを OpenCode に伝えます。
  • modalities.input"image" を含めること は、このモデルが 画像入力をサポートする ことを OpenCode に伝え、OpenCode が画像をマルチモーダルな image_url コンテンツに変換します。

完全な例(GPT と Claude)

opencode.jsonc(フィールドを既に含む)をダウンロードするか、以下の provider.apimaster ブロックを既存の設定にマージしてください。

{
  "$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"]
          }
        }
      }
    }
  }
}

備考:

  • gpt-5.5 のみで画像入力を有効にするには、gpt-5.5 にだけ attachmentmodalities を追加し、他は変更しないでください。
  • Claude のみを有効にするには、これらのフィールドを Claude モデルにだけ追加してください。
  • 各モデルの既存の Reasoning バリアントlow / medium / high / xhigh / max)はそのまま残してください — 画像フィールドと Reasoning は競合しません。
  • opencode.jsonc を編集した後は OpenCode を完全に終了して再起動するか、少なくとも 新しいセッション を開始して設定を再読み込みしてください。
  • このファイルに API キーを記述しないでください/connect または UI で設定してください(下記のセキュリティを参照)。

画像ソース: ローカルアップロード / base64 を優先

  • 推奨: OpenCode でローカルの PNG / JPG をアップロードします。理想的には、OpenCode が APIMaster に送信する前に base64 データ URLdata:image/png;base64,...)に変換します — これが検証済みの動作するパスです。
  • 公開画像 URL を直接渡すと失敗する場合があります。 APIMaster / 上流は、ネットワーク、フォーマット、サイズ、MIME、ホットリンク保護などの理由で公開画像のダウンロードに失敗し、次を返すことがあります。
    Error while downloading file. Upstream status code: 400.
    
    その場合は、モデル側での公開 URL のダウンロードに頼らず、base64 データ URL またはローカルアップロードを使用してください。

画像認識が機能することをテストする

オプション A — OpenCode でテスト

  1. モデルドロップダウンで apimaster/gpt-5.5 または apimaster/claude-sonnet-4-6 に切り替えます。
  2. PNG / JPG 画像をアップロードします。
  3. 次を入力します。
    Describe the main content of this image.
    
  • 設定が正しければ、モデルは 画像の内容を説明する はずです。
  • モデルが ファイル / 添付ファイル名 のみに言及したり、「画像入力はサポートされていません」と応答したりする場合、OpenCode が 画像コンテンツを送信していない 可能性があります — モデルの attachmentmodalities フィールドを確認し、OpenCode を再起動してください。

オプション B — API を直接テスト

APIMaster モデルの問題OpenCode アダプタの問題 を切り分けるのに便利です。実際のキーをハードコーディングしないでください — 環境変数を使用してください。

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

modelclaude-sonnet-4-6 に変更すると、同じ方法で Claude をテストできます(画像認識で HTTP 200 を確認済み)。

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.

画像を説明する 200 応答は APIMaster 側で画像入力が機能している ことを意味します。それでも OpenCode で失敗する場合、問題は OpenCode の attachment / modalities 設定、または再起動の欠如にあります。


トラブルシューティング

UI 設定

問題 解決策
401 キーを確認。露出した場合はローテーション。
モデルが見つからない ベース URL が https://apimaster.ai/v1 であること、モデル ID がマーケットプレイスと一致していることを確認。
APIMaster モデルが表示されない 設定でプロバイダを編集 → マッピングを追加 → 送信。
遅い / タイムアウト 別のモデルを試す。API Key Tester を使用。

Reasoning / jsonc

なぜ DeepSeek では highmax だけなのか?
DeepSeek の公式 OpenAI 互換 thinking effort は highmax です。low / medium / xhigh は予測不能に再マッピングされるため避けてください。

なぜ Claude Sonnet では xhigh ではなく max なのか?
Sonnet の最上位階層は max です。xhigh は Opus(claude-opus-4-7 / claude-opus-4-8)用です。

なぜ Haiku や MiniMax M3 にはバリアントがないのか?
reasoningEffort の値が文書化されていないため、バリアントはスキップします。モデルは動作しますが、UI に Reasoning サブ階層は表示されません。

それでも 400 エラーが出る場合

  1. baseURL = https://apimaster.ai/v1(サイトルートではありません)。
  2. モデル ID のスペルがマーケットプレイスと一致していること。
  3. /connect または UI でキーが設定されていること。
  4. variants を一時的に削除 — プレーンなリクエストが成功する場合、選択した reasoning_effort がそのモデルでサポートされていない可能性があります。

画像入力 / Vision

なぜ OpenCode は「現在のモデルは画像入力をサポートしていません」と表示するのか?

  • APIMaster.ai の gpt-5.5 といくつかの Claude モデルは 画像入力をサポートしています。このメッセージは通常、OpenCode が画像をマルチモーダル入力として送信していない ことを意味します。
  • opencode.jsonc のモデルに次があることを確認してください。
    "attachment": true,
    "modalities": {
      "input": ["text", "image"],
      "output": ["text"]
    }
    
  • 編集後に OpenCode を再起動 したことを確認してください。
  • baseURLhttps://apimaster.ai/v1 であることを確認してください。
  • APIMaster API キーが有効であることを確認してください。
  • 公開画像 URL が失敗する場合は、base64 データ URL またはローカルアップロードを使用してください。

なぜモデルは画像ではなく添付ファイル名だけを見るのか?

  • 通常、OpenCode が添付ファイルを読み取って画像入力に変換せず、ファイル / 添付ファイル名 をプロンプトに入れただけです。
  • attachment: truemodalities.input: ["text", "image"] を有効にし、画像入力をサポートするモデルを使用してください。

なぜ公開画像 URL がエラーになるのか?

  • APIMaster または上流は、公開画像のダウンロード時にネットワーク、フォーマット、ファイルサイズ、MIME、ホットリンク保護、プロキシによって制限される場合があります。
  • Error while downloading file. Upstream status code: 400. が出た場合は、base64 データ URL に切り替えてください。

attachment を追加してもまだ機能しない場合

  1. OpenCode を 完全に終了して再起動 します。
  2. 新しいセッション を開始してテストします。
  3. セッションのアクティブなモデルが、画像フィールドで設定したモデル であること を確認します。
  4. API キーが有効であることを確認します。
  5. OpenCode のログで 401 / 400 / unsupported image / invalid content type エラーを確認します。
  6. オプション B — API を直接テストで base64 画像を使用し、APIMaster モデルの問題OpenCode アダプタの問題 を切り分けます。

セキュリティ

  • APIMaster API キーを opencode.jsonc に記述 しないでください。このファイルにはプロバイダ、モデル、画像 capability、Reasoning のみを保持します。
  • キーをチャット、スクリーンショット、Issue、公開ドキュメント、コードリポジトリに貼り付け ないでください
  • スクリーンショットやログに表示されたキーはローテーションしてください — コンソールで取り消して再生成し、OpenCode のプロバイダを更新してください。
  • API キーの管理には OpenCode の /connect フロー、環境変数、またはローカルの認証情報ストレージを優先してください。
  • OpenCode はファイルの読み書きやシェルコマンドの実行が可能です — 信頼できるワークスペースのみを使用してください。

チェックリスト

  • OpenCode Desktop をインストール
  • カスタムプロバイダに接続 または opencode.jsoncapimaster を設定
  • ベース URL / baseURL = https://apimaster.ai/v1https://apimaster.ai/ ではない)
  • /connect または UI で API キーを設定(jsonc には記述しない)
  • 少なくとも 1 つのチャットモデルをマッピング
  • (オプション)Reasoning バリアントが公式階層と一致している
  • テストメッセージが成功する

画像入力チェックリスト

  • baseURLhttps://apimaster.ai/v1 である(https://api.apimaster.ai/v1 ではない
  • Vision 対応モデルを使用(例: gpt-5.5 または Vision 対応の Claude モデル)
  • モデルに attachment: true がある
  • モデルの modalities.input"image" が含まれている
  • opencode.jsonc を編集後、OpenCode を 再起動 した
  • API キーが有効である
  • テスト画像が一般的なフォーマット(PNG / JPG)である
  • 公開画像 URL が失敗する場合、base64 データ URL を試した

まとめ

  • キー: baseURLhttps://apimaster.ai/v1)、モデル IDAPI キー/connect または UI)、オプションの Reasoning バリアント
  • バリアント 名 = 実際の reasoning_effort
  • 階層は モデルごとに 設定。サポートされていない場合はバリアントをスキップ(Haiku、MiniMax M3 など)。

関連項目