APIMaster.ai

Pengaturan Kunci API OpenCode AI — Konfigurasi Kompatibel OpenAI

Cara mengonfigurasi OpenCode AI dengan kunci API kustom dari APIMaster.ai. Tambahkan APIMaster sebagai penyedia kompatibel OpenAI di opencode.jsonc dan akses Claude, GPT-5.5, serta DeepSeek dengan input gambar (Vision) dan tingkatan Reasoning opsional.

OpenCode Desktop adalah klien grafis untuk OpenCode (saat ini beta): sesi agen lokal, pengeditan file, dan eksekusi shell. APIMaster.ai kompatibel dengan OpenAI — tambahkan di bawah Pengaturan → Penyedia → Penyedia Kustom.

Dapatkan Kunci API terlebih dahulu. Gunakan placeholder your_apimaster_key di bawah; tangkapan layar menyembunyikan kunci asli.


Prasyarat

  1. OpenCode Desktop terinstal dari opencode.ai/download.
    • Windows: opencode-desktop-win-x64.exe
    • macOS: brew install --cask opencode-desktop atau .dmg
    • Linux: .deb / .rpm / AppImage
  2. Kunci API APIMaster dari konsol.

Langkah 1 — Buka Penyedia

  1. Luncurkan OpenCode Desktop dan buka ruang kerja.
  2. Klik ikon roda gigi (kiri bawah).
  3. Pilih Penyedia di bilah sisi.
  4. Gulir ke Penyedia Kustom (Tambahkan penyedia yang kompatibel dengan OpenAI berdasarkan URL dasar).
  5. Klik + Hubungkan.

Pengaturan → Penyedia → Penyedia Kustom


Langkah 2 — Formulir penyedia kustom

Bidang Nilai
ID Penyedia apimaster
Nama Tampilan APIMaster.ai
URL Dasar https://apimaster.ai/v1
Kunci API Kunci APIMaster Anda

Formulir penyedia kustom

Biarkan Header kosong kecuali Anda melakukan autentikasi hanya melalui header.


Langkah 3 — Tambahkan model & Kirim

Pada layar berikutnya, petakan model (kiri = label di OpenCode, kanan = id model yang dikirim ke APIMaster — biasanya sama):

Kiri Kanan
gpt-5.4 gpt-5.4
claude-sonnet-4-6 claude-sonnet-4-6
  1. Klik + Tambah model untuk baris tambahan.
  2. Klik Kirim.

Tambah model dan Kirim

Pilih id dari marketplace. Hindari model khusus pembuatan gambar (mis. gpt-image-2) untuk obrolan agen.

Butuh pengenalan gambar (Vision)? gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, dan claude-haiku-4-5 mendukung input gambar, tetapi OpenCode memerlukan deklarasi kapabilitas tambahan — lihat Aktifkan input gambar untuk GPT dan Claude.


Langkah 4 — Pilih model

  1. Mulai atau buka sesi.
  2. Buka dropdown model di bawah input.
  3. Di bawah APIMaster.ai, pilih model (mis. claude-sonnet-4-6).

Pemilih model


Langkah 5 — Uji coba

Kirim hello atau tugas coding kecil. Balasan Asisten normal (pengeditan file / shell) berarti APIMaster terhubung.

Uji coba obrolan


Lanjutan: opencode.jsonc & Reasoning

Alur UI di atas cukup untuk memulai dengan cepat. Untuk mengonfigurasi tingkatan Reasoning / thinking effort (low, high, max, …) untuk id model yang sama, edit opencode.jsonc.

Lokasi file konfigurasi

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

Buat file jika tidak ada. Restart OpenCode Desktop atau mulai sesi baru setelah menyimpan.

Kunci API (jangan dimasukkan ke jsonc)

Jangan menyimpan Kunci API Anda di opencode.jsonc.

Gunakan:

  • /connect di terminal, atau
  • Pengaturan → Penyedia → Hubungkan Penyedia (sama dengan Langkah 1–2 di atas).

Simpan rahasia di penyimpanan autentikasi OpenCode; jsonc hanya mendefinisikan penyedia, model, dan varian Reasoning.

Penyedia APIMaster di jsonc

Provider id: apimaster. npm package: @ai-sdk/openai-compatible.

baseURL harus:

https://apimaster.ai/v1

Bukan https://apimaster.ai/ — OpenCode menambahkan /chat/completions. Tanpa /v1 Anda mendapatkan https://apimaster.ai/chat/completions404 Tidak Ditemukan.

Juga bukan https://api.apimaster.ai/v1 — host dengan awalan api. dapat menyebabkan kegagalan TLS / koneksi saat pengujian. Host yang benar adalah https://apimaster.ai/v1.

Contoh lengkap dengan varian Reasoning — unduh dan timpa konfigurasi OpenCode:

  1. Unduh opencode.jsonc
  2. Timpa (atau simpan sebagai):
    • macOS / Linux: ~/.config/opencode/opencode.jsonc
    • Windows: C:\Users\<username>\.config\opencode\opencode.jsonc
  3. Konfigurasikan Kunci API melalui /connect atau UI (jangan pernah di jsonc).
  4. Restart OpenCode Desktop atau mulai sesi baru.

Cadangkan file yang ada sebelum menimpa, atau gabungkan hanya blok provider.apimaster.

Minimal shape:

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

Bidang attachment dan modalities pada gpt-5.5 di atas mengaktifkan input gambar (Vision) — lihat Aktifkan input gambar untuk GPT dan Claude. Hilangkan keduanya jika Anda hanya perlu obrolan teks.

Prinsip Reasoning

  • variants = beberapa tingkatan Reasoning untuk satu id model di UI.
  • Untuk API yang kompatibel dengan OpenAI, OpenCode memetakan reasoningEffortreasoning_effort di body permintaan.
  • Nama varian harus cocok dengan parameter sebenarnya (high"reasoningEffort": "high").
  • Setiap model mendukung tingkatan yang berbeda — konfigurasikan sesuai dokumen resmi; tidak ada pemetaan ulang tersembunyi.

Tingkatan Reasoning per model

Model Varian Reasoning Catatan
gpt-5.4 low, medium, high, xhigh Penalaran GPT
gpt-5.5 low, medium, high, xhigh Penalaran GPT
deepseek-v4-flash high, max Pemikiran DeepSeek (disarankan)
deepseek-v4-pro high, max Pemikiran DeepSeek (disarankan)
claude-sonnet-4-6 low, medium, high, max Upaya Claude Sonnet
claude-opus-4-7 low, medium, high, xhigh, max Upaya Claude Opus
claude-opus-4-8 low, medium, high, xhigh, max Upaya Claude Opus
claude-haiku-4-5 none Tidak ada tingkatan upaya yang belum dikonfirmasi
minimax-m3 none Tidak ada tingkatan upaya yang belum dikonfirmasi

Lihat opencode.jsonc untuk file lengkap.

Mengganti Reasoning di OpenCode

  1. Simpan opencode.jsonc, lalu restart atau sesi baru.
  2. Gunakan dropdown model / Reasoning (mis. gpt-5.4 / high).
  3. Jika didukung di build Anda: Ctrl + Shift + D mengganti tingkatan Reasoning.

Aktifkan input gambar untuk GPT dan Claude

Model APIMaster.ai seperti gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8, dan claude-haiku-4-5 mendukung input gambar / Vision — membaca tangkapan layar, foto, bagan untuk pengenalan, deskripsi, OCR, atau coding dari sebuah gambar.

Model yang mendukung gambar ≠ OpenCode mengirimkan gambar tersebut. Meskipun model APIMaster.ai itu sendiri mendukung vision, Anda harus mendeklarasikan kapabilitas di opencode.jsonc. Jika tidak, OpenCode mungkin tidak mengirimkan gambar sebagai input multimodal — ia hanya memasukkan nama lampiran / file ke dalam prompt, dan model membalas sesuatu seperti "model saat ini tidak mendukung input gambar."

Dua bidang yang harus dideklarasikan

Untuk setiap model yang ingin Anda gunakan dengan gambar, tambahkan:

"attachment": true,
"modalities": {
  "input": ["text", "image"],
  "output": ["text"]
}
  • attachment: true memberi tahu OpenCode bahwa model ini menerima lampiran.
  • modalities.input yang berisi "image" memberi tahu OpenCode bahwa model ini mendukung input gambar, sehingga OpenCode mengonversi gambar menjadi konten multimodal image_url.

Contoh lengkap (GPT dan Claude)

Unduh opencode.jsonc (bidang sudah disertakan), atau gabungkan blok provider.apimaster di bawah ke dalam konfigurasi Anda yang ada:

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

Catatan:

  • Untuk mengaktifkan input gambar hanya untuk gpt-5.5, tambahkan attachment dan modalities hanya pada gpt-5.5; biarkan yang lain tidak berubah.
  • Untuk mengaktifkan hanya Claude, tambahkan bidang ini hanya pada model Claude.
  • Pertahankan varian Reasoning yang ada pada setiap model (low / medium / high / xhigh / max) — bidang gambar dan Reasoning tidak saling bertentangan.
  • Setelah mengedit opencode.jsonc, keluar sepenuhnya dan restart OpenCode, atau setidaknya mulai sesi baru, agar konfigurasi dimuat ulang.
  • Jangan pernah memasukkan Kunci API ke file ini — konfigurasikan melalui /connect atau UI (lihat Keamanan di bawah).

Sumber gambar: utamakan unggahan lokal / base64

  • Disarankan: unggah PNG / JPG lokal di OpenCode. Idealnya OpenCode mengonversinya menjadi data URL base64 (data:image/png;base64,...) sebelum mengirim ke APIMaster — ini adalah jalur kerja yang terverifikasi.
  • Melewatkan URL gambar publik secara langsung dapat gagal. APIMaster / upstream mungkin gagal mengunduh gambar publik karena jaringan, format, ukuran, MIME, atau proteksi hotlink, mengembalikan:
    Error while downloading file. Upstream status code: 400.
    
    Dalam kasus itu, gunakan data URL base64 atau unggahan lokal alih-alih mengandalkan sisi model untuk mengunduh URL publik.

Uji bahwa pengenalan gambar berfungsi

Opsi A — Uji di OpenCode

  1. Beralih ke apimaster/gpt-5.5 atau apimaster/claude-sonnet-4-6 di dropdown model.
  2. Unggah gambar PNG / JPG.
  3. Ketik:
    Describe the main content of this image.
    
  • Dengan konfigurasi yang benar, model seharusnya mendeskripsikan konten gambar.
  • Jika model hanya menyebutkan nama file / lampiran, atau membalas "image input not supported," kemungkinan OpenCode tidak mengirimkan konten gambar — periksa bidang attachment dan modalities model dan restart OpenCode.

Opsi B — Uji melalui API secara langsung

Berguna untuk membedakan masalah model APIMaster dari masalah adaptor OpenCode. Jangan pernah menuliskan kunci asli secara hardcode — gunakan variabel lingkungan.

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

Ganti model ke claude-sonnet-4-6 untuk menguji Claude dengan cara yang sama (terverifikasi HTTP 200 dengan pengenalan gambar).

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.

Respons 200 yang mendeskripsikan gambar berarti input gambar berfungsi di sisi APIMaster; jika OpenCode masih gagal, masalahnya ada di konfigurasi attachment / modalities OpenCode atau restart yang terlewat.


Pemecahan Masalah

Pengaturan UI

Masalah Perbaikan
401 Periksa kunci; rotasi jika terekspos
Model tidak ditemukan URL Dasar harus https://apimaster.ai/v1; id model harus cocok dengan marketplace
Tidak ada model APIMaster Edit penyedia di Pengaturan → tambahkan pemetaan → Kirim
Lambat / waktu habis Coba model lain; gunakan Penguji Kunci API

Reasoning / jsonc

Mengapa hanya high dan max untuk DeepSeek?
Upaya pemikiran resmi yang kompatibel dengan OpenAI untuk DeepSeek adalah high dan max. Hindari low / medium / xhigh yang dipetakan ulang secara tidak terduga.

Mengapa max untuk Claude Sonnet, bukan xhigh?
Tingkatan tertinggi Sonnet adalah max; xhigh untuk Opus (claude-opus-4-7 / claude-opus-4-8).

Mengapa tidak ada varian untuk Haiku atau MiniMax M3?
Tanpa nilai reasoningEffort yang terdokumentasi, lewati varian — model tetap berfungsi; UI hanya tidak akan menampilkan sub-tingkatan Reasoning.

Masih mendapatkan 400?

  1. baseURL = https://apimaster.ai/v1 (bukan root situs).
  2. Ejaan id model cocok dengan marketplace.
  3. Kunci dikonfigurasi melalui /connect atau UI.
  4. Hapus variants sementara — jika permintaan biasa berfungsi, reasoning_effort yang dipilih mungkin tidak didukung untuk model tersebut.

Input gambar / Vision

Mengapa OpenCode mengatakan "the current model does not support image input"?

  • gpt-5.5 dan beberapa model Claude APIMaster.ai memang mendukung input gambar; pesan ini biasanya berarti OpenCode tidak mengirimkan gambar sebagai input multimodal.
  • Periksa bahwa model di opencode.jsonc memiliki:
    "attachment": true,
    "modalities": {
      "input": ["text", "image"],
      "output": ["text"]
    }
    
  • Pastikan Anda me-restart OpenCode setelah mengedit.
  • Pastikan baseURL adalah https://apimaster.ai/v1.
  • Pastikan Kunci API APIMaster valid.
  • Jika URL gambar publik gagal, gunakan data URL base64 atau unggahan lokal.

Mengapa model hanya melihat nama lampiran, bukan gambarnya?

  • Biasanya OpenCode tidak membaca dan mengonversi lampiran menjadi input gambar — ia hanya memasukkan nama file / lampiran ke dalam prompt.
  • Aktifkan attachment: true dan modalities.input: ["text", "image"], dan gunakan model yang mendukung input gambar.

Mengapa URL gambar publik mengalami error?

  • APIMaster atau upstream mungkin terbatas oleh jaringan, format, ukuran file, MIME, proteksi hotlink, atau proxy saat mengunduh gambar publik.
  • Pada Error while downloading file. Upstream status code: 400., beralih ke data URL base64.

Masih tidak berfungsi setelah menambahkan attachment?

  1. Keluar sepenuhnya dan restart OpenCode.
  2. Mulai sesi baru untuk menguji.
  3. Pastikan model aktif sesi adalah model yang Anda konfigurasikan dengan bidang gambar.
  4. Pastikan Kunci API valid.
  5. Periksa log OpenCode untuk error 401 / 400 / unsupported image / invalid content type.
  6. Gunakan Opsi B — Uji melalui API secara langsung dengan gambar base64 untuk memisahkan masalah model APIMaster dari masalah adaptor OpenCode.

Keamanan

  • Jangan memasukkan Kunci API APIMaster ke opencode.jsonc; file itu hanya menyimpan penyedia, model, kapabilitas gambar, dan Reasoning.
  • Jangan menempelkan kunci ke obrolan, tangkapan layar, issue, dokumen publik, atau repo kode.
  • Rotasi kunci yang muncul di tangkapan layar atau log — cabut dan buat ulang di konsol, lalu perbarui penyedia di OpenCode.
  • Utamakan alur /connect OpenCode, variabel lingkungan, atau penyimpanan kredensial lokal untuk mengelola Kunci API.
  • OpenCode dapat membaca/menulis file dan menjalankan perintah shell — gunakan hanya ruang kerja tepercaya.

Daftar Periksa

  • OpenCode Desktop terinstal
  • Penyedia kustom terhubung atau apimaster di opencode.jsonc
  • URL Dasar / baseURL = https://apimaster.ai/v1 (bukan https://apimaster.ai/)
  • Kunci API melalui /connect atau UI (bukan di jsonc)
  • Setidaknya satu model obrolan dipetakan
  • (Opsional) Varian Reasoning sesuai dengan tingkatan resmi
  • Pesan uji berhasil

Daftar periksa input gambar

  • baseURL adalah https://apimaster.ai/v1 (bukan https://api.apimaster.ai/v1)
  • Menggunakan model berkemampuan vision, mis. gpt-5.5 atau model Claude berkemampuan Vision
  • Model memiliki attachment: true
  • modalities.input model berisi "image"
  • OpenCode di-restart setelah mengedit opencode.jsonc
  • Kunci API valid
  • Gambar uji adalah format umum (PNG / JPG)
  • Jika URL gambar publik gagal, sudah mencoba data URL base64

Ringkasan

  • Kunci: baseURL (https://apimaster.ai/v1), id model, Kunci API (/connect atau UI), opsional varian Reasoning.
  • Nama varian = nilai reasoning_effort sebenarnya.
  • Konfigurasikan tingkatan per model; lewati varian jika tidak didukung (Haiku, MiniMax M3).

Lihat juga