API SahabatMobile tidak bisa dipakai di 9router / Hermes / OpenCode
Masalah yang Dialami
Laporan pelanggan (28 Okt 2026): "Hermes, saya tautkan API sahabatmobile ke 9router, dan menambahkan custom provider 9router ke Hermes, saya masukkan API sahabatmobile menggunakan custom provider OpenAI compatible. Coba, ada cara saya bisa hubungkan ke opencode atau aplikasi lain?" Gejala: 1. API key sudah dibuat dan saldo kredit cukup, tetapi request gagal (error "Invalid API key" atau "Model sedang tidak tersedia"). 2. Pelanggan bingung karena sudah mengikuti langkah dasar tapi tetap tidak jalan. 3. Pelanggan juga bertanya cara memakai key yang sama di OpenCode atau aplikasi lain. Kronologi analisis (28 Okt 2026): 1. Cek database: akun pelanggan aktif, API key valid (hash cocok), saldo 725+ credits. 2. Tes langsung ke API: model google/gemini-2.5-flash BERHASIL — artinya key dan sistem SahabatMobile normal. 3. Ketemu akar masalah #1: pelanggan memakai slug pendek (gemini-2.5-flash) yang belum dikenali sistem — hanya google/gemini-2.5-flash yang ada di katalog. 4. Ketemu akar masalah #2: rantai 9router kadang menimpa/mem-drop header Authorization sehingga key tidak sampai ke SahabatMobile. 5. Ketemu akar masalah #3: model MiniMax/MiMo/eksklusif ditolak untuk pengguna PAYG (tanpa paket).
Langkah Munculkan Masalah
1. Pelanggan generate API key PAYG di dashboard SahabatMobile (/ai/api-keys). 2. Daftarkan key itu ke 9router sebagai custom provider OpenAI-compatible. 3. Tambahkan 9router sebagai custom provider OpenAI-compatible di Hermes. 4. Masukkan API key SahabatMobile pada kolom API Key di Hermes. 5. Kirim pesan / pilih model (contoh: gemini-2.5-flash). 6. Hasil: error "Invalid API key" atau "Model sedang tidak tersedia". 7. Pertanyaan lanjutan: "Ada cara hubungkan ke OpenCode atau aplikasi lain?"
Pemecahan
=== BAGIAN A: PERIKSA DULU (5 menit) ===
Langkah A1 — Pastikan akun aktif
Buka https://sahabatmobile.com/ai/dashboard
Kalau tidak bisa login atau status nonaktif → hubungi CS dulu.
Langkah A2 — Pastikan ada API key dan saldo
API key : https://sahabatmobile.com/ai/api-keys (untuk PAYG)
Saldo : https://sahabatmobile.com/ai/billing (minimal 100 credits)
Belum punya key? Klik "Buat API Key Baru", beri nama, klik Buat.
PENTING: key hanya ditampilkan SEKALI saat dibuat — langsung copy dan simpan.
Langkah A3 — Tes key langsung (bypass 9router dulu!)
Buka terminal / PowerShell, jalankan perintah ini (ganti GANTI_DENGAN_KEY_ANDA):
curl -X POST https://sahabatmobile.com/api/v1/chat/completions ^
-H "Authorization: Bearer GANTI_DENGAN_KEY_ANDA" ^
-H "Content-Type: application/json" ^
-d "{\"model\":\"gemini-2.5-flash\",\"messages\":[{\"role\":\"user\",\"content\":\"halo\"}]}"
(Linux/macOS pakai \ bukan ^ di akhir baris)
HASIL:
- Ada balasan "halo" → key BAGUS, masalahnya di 9router/Hermes → lanjut Bagian B
- Error "Invalid API key" → key salah/sudah dihapus → buat key baru di A2
- Error "insufficient_credits" → saldo kurang → top-up dulu
=== BAGIAN B: SAMBUNGKAN KE HERMES (lewat 9router) ===
Langkah B1 — Daftarkan key di 9router
Buka 9router → Providers → Add Custom Provider:
Name : SahabatMobile
Base URL : https://sahabatmobile.com/api/v1
API Key : sk-... (key dari A2)
Auth type : Bearer / OpenAI-compatible
Simpan, lalu klik Test kalau ada tombolnya.
Langkah B2 — Tambahkan 9router di Hermes
Buka Hermes → Settings → Providers → Custom Endpoints → Add:
Name : SahabatMobile (atau 9router)
Endpoint URL: URL 9router Anda (atau langsung https://sahabatmobile.com/api/v1)
API Key : key yang benar
API Mode : Chat Completions
Model : gemini-2.5-flash
Klik Test → kalau lalu klik Save.
Langkah B3 — Kalau tetap gagal, HAPUS PERANTARA
Rantai 9router sering menimpa header Authorization (penyebab error 401).
Solusi paling aman: hubungkan Hermes LANGSUNG ke SahabatMobile:
Endpoint URL: https://sahabatmobile.com/api/v1
API Key : sk-... (key Anda)
Model : gemini-2.5-flash
Test lagi.
Langkah B4 — Pilih model yang benar
Untuk PAYG (tanpa paket), gunakan SLUG INI (persis, tanpa prefix):
gemini-2.5-flash → Gemini 2.5 Flash
gemini-2.5-pro → Gemini 2.5 Pro
claude-haiku-5.5 → Claude Haiku 5.5
gpt-5.6-luna → GPT-5.6 Luna (atau tulis: luna)
JANGAN pakai: google/gemini-..., anthropic/claude-... (prefix penuh juga boleh,
tapi slug pendek di atas sudah didukung otomatis).
MiniMax-M3 / MiniMax-M2.7 / mimo-* HANYA untuk pelanggan paket —
kalau dipakai PAYG akan ditolak (403 model_requires_package).
=== BAGIAN C: SAMBUNGKAN KE OPENCODE (CLI) ===
Langkah C1 — Install OpenCode (kalau belum)
Buka terminal, jalankan:
npm install -g opencode-ai
(atau ikuti cara install di https://opencode.ai)
Langkah C2 — Buat file konfigurasi
Buka folder project Anda, buat file bernama opencode.json, isi:
{
"provider": {
"sahabatmobile": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://sahabatmobile.com/api/v1",
"apiKey": "sk-...PASTE_KEY_ANDA_DI_SINI"
},
"models": {
"gemini-2.5-flash": { "name": "Gemini Flash" },
"claude-haiku-5.5": { "name": "Claude Haiku" }
}
}
}
}
Langkah C3 — Jalankan
Di folder yang sama, jalankan:
opencode
Pilih provider sahabatmobile, pilih model, mulai chat.
Langkah C4 — Aplikasi lain (Hermes, Continue.dev, LangChain, dll)
Semua aplikasi yang mendukung OpenAI-compatible cukup isi:
Base URL : https://sahabatmobile.com/api/v1
API Key : sk-... (key Anda)
Model : gemini-2.5-flash (atau model lain dari Bagian B4)
=== BAGIAN D: TROUBLESHOOTING CEPAT ===
| Error | Penyebab | Solusi |
|-------|----------|--------|
| 401 Invalid API key | Key salah, sudah dihapus, atau header hilang di 9router | Buat key baru; langsungkan Hermes ke SahabatMobile (B3) |
| 400 model_not_available | Slug model salah | Pakai slug pendek di B4 |
| 403 model_requires_package | MiniMax/MiMo tanpa paket | Ganti model non-eksklusif atau beli paket |
| 402 insufficient_credits | Saldo kurang | Top-up di /ai/billing |
| 429 kuota habis | Kuota paket/rate limit | Tunggu reset atau pindah model |
| Error terus di 9router tapi langsung jalan | 9router menimpa Authorization | Hubungkan langsung (B3) |
| "model does not support image input" | Model teks-only | Kirim screenshot sebagai teks, atau pakai model vision (gpt-4o-mini, gemini-2.5-flash) |
Catatan & Referensi
INFORMASI KONEKSI
Base URL : https://sahabatmobile.com/api/v1
Auth : Authorization: Bearer sk-...
Format : OpenAI-compatible (chat/completions)
SLUG MODEL UNTUK PAYG (tanpa paket)
Gemini : gemini-2.5-flash, gemini-2.5-pro
Claude : claude-haiku-5.5, claude-sonnet-5, claude-opus-5
GPT : gpt-5.6-luna, gpt-5.6-sol (atau tulis: luna)
MODEL EKSKLUSIF PAKET (tidak bisa PAYG)
MiniMax : MiniMax-M3, MiniMax-M2.7, MiniMax-M2.5
MiMo : mimo-v2.5, xiaomi/*
→ Tidak muncul di daftar model untuk PAYG; kalau dipanggil langsung ditolak 403.
TIPS PENTING
- Test key langsung dulu (A3) sebelum menyalahkan 9router/Hermes.
- Rantai 9router sering menimpa header Authorization → paling aman langsung.
- File opencode.json bisa diedit pakai Notepad/VS Code biasa.
- Restart opencode setelah edit config (config tidak hot-reload).
- Key hanya ditampilkan sekali saat dibuat — simpan di tempat aman.
BUKTI PENYELESAIAN (28 Okt 2026)
- Tes langsung: gemini-2.5-flash, gemini-2.5-pro, claude-haiku-5.5,
gpt-5.6-luna, luna → semua BERHASIL balas dari API SahabatMobile.
- Redirect slug pendek ditambahkan (config/ai.php model_redirects).
- Daftar /api/v1/models untuk PAYG menyembunyikan MiniMax & MiMo.
- Solusi 403 model_requires_package tercatat di dokumentasi error.
Bukti Penyelesaian
Terverifikasi & Tes Langsung
Kasus ini ditelusuri dari data pelanggan, dites langsung di API, dan solusi sudah dikonfirmasi berhasil. Kode kasus KAS-0001 bisa dirujuk untuk konsistensi.