Dokumentasi
NextChat
NextChat yang dihosting sendiri terhubung ke Kunavo melalui variabel yang sudah tersedia untuk OpenAI: OPENAI_API_KEY menyimpan kunci, BASE_URL menyimpan origin, dan CUSTOM_MODELS menyimpan ID. Tidak perlu fork atau patch.
Tiga variabel lingkungan — OPENAI_API_KEY, BASE_URL (origin tanpa tambahan), dan CUSTOM_MODELS — menempatkan NextChat yang di-host sendiri pada Claude dan GPT melalui satu key.
CODE=your-access-password
OPENAI_API_KEY=sk-kn-...
BASE_URL=https://api.kunavo.com
HIDE_USER_API_KEY=1
CUSTOM_MODELS=-all,+claude-sonnet-5@OpenAI,+claude-opus-5@OpenAI,+claude-haiku-4-5@OpenAI,+gpt-5-6-sol@OpenAI,+gpt-5-6-terra@OpenAIBASE_URL menggunakan origin dasar, tanpa /v1. Halaman dokumentasi tidak menjelaskan sufiks ini dalam kalimat, tetapi nilai default pada barisnya memastikan bahwa yang digunakan adalah https://api.openai.com, bukan https://api.openai.com/v1 — NextChat menambahkan sisa jalurnya sendiri. Jika /v1 ditambahkan secara manual, hasilnya menjadi /v1/v1/chat/completions dan mengembalikan 404, yang tampak seperti endpoint rusak alih-alih kesalahan ketik.OPENAI_API_KEY ditetapkan, server memanggil Kunavo dengan kunci Anda, dan siapa pun yang berhasil melewati CODE akan menggunakan saldo Anda. HIDE_USER_API_KEY=1 didokumentasikan sebagai "If you do not want users to input their own API key, set this value to 1". Jika dibiarkan tanpa nilai, setiap pengunjung dapat memasukkan kuncinya sendiri di Settings. Inilah konfigurasi yang sesuai untuk instans bersama.-all dan sufiks @OpenAI tidak tercantum dalam tabel dokumentasi, yang hanya mencakup +, -, dan name=displayName. Informasi tersebut berasal dari kode pengumpulan model NextChat sendiri, yang diperiksa pada hari yang sama: -all mengosongkan daftar bawaan agar pemilih tidak menawarkan ID yang akan ditolak Kunavo, sedangkan @OpenAI menetapkan penyedia OpenAI untuk setiap ID baru agar ID tersebut dikirim ke BASE_URL. ID yang ditulis tanpa sufiks itu akan mendapatkan nama penyedia yang sama dengan ID-nya dan tidak melewati jalur yang Anda konfigurasi. Penggunaan huruf besar dan kecil harus persis.ENABLE_BALANCE_QUERY tidak ditetapkan juga: pemeriksaan saldo memanggil jalur penagihan dasbor OpenAI sendiri, yang tidak termasuk dalam antarmuka kompatibel OpenAI. Saldo Anda dapat dilihat di /app/billing.sk-kn-) dan tambahkan kredit mulai dari $10 — panggilan dibayar dari saldo tersebut, dan panggilan yang gagal tidak ditagihkan. Dasbor kemudian terbuka pada penyiapan NextChat.Langkah demi langkah
- Buat key di
/app/keysdan salin — key hanya ditampilkan sekali. - Atur
OPENAI_API_KEYke kunci tersebut danBASE_URLkehttps://api.kunavo.com. Di Vercel, keduanya adalah variabel lingkungan proyek; di Docker, keduanya berupa flag-e; untuk penggunaan lokal, masukkan ke.env.local. - Atur
CODEke kata sandi akses, atau deployment Anda terbuka bagi siapa pun yang menemukan URL-nya, sementara kunci Anda yang menanggung biayanya. - Cantumkan id yang Anda inginkan di
CUSTOM_MODELS, masing-masing dengan sufiks@OpenAI, dan awali dengan-alluntuk menghapus id bawaan. - Lakukan deployment ulang — server membaca variabel lingkungan, jadi proyek Vercel memerlukan deployment baru dan kontainer perlu dimulai ulang. Mengedit variabel saja tidak mengubah apa pun pada instans yang sedang berjalan.
- Buka aplikasi, pilih salah satu id Anda dari pemilih model, lalu kirim pesan. Jika balasan diterima, ketiga variabel tersebut sudah sesuai.
Diperiksa terhadap Halaman Variabel Lingkungan NextChat pada 21 September 2026. Pengaturan pihak ketiga dapat berubah; jika nama bidang di sini tidak lagi sama dengan yang Anda lihat, halaman tersebut adalah acuan, bukan halaman ini.
Verifikasi sebelum men-debug klien
Satu permintaan menentukan apakah masalahnya ada pada endpoint, kunci, atau berkas konfigurasi. Jika ini mengembalikan JSON, base URL dan kunci yang sama berfungsi di NextChat.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."ID model yang harus dimasukkan ke bidang
Setiap model teks dapat diakses melalui ID model — daftar terkininya ada di GET /v1/models, dan katalog beserta harga ada di halaman model. Tarif dalam USD per 1 juta token, input / output.
| ID model | Kunavo masuk / keluar | Kegunaannya di NextChat |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | percakapan sehari-hari — obrolan panjang tanpa harus mengawasi saldo |
claude-opus-5 | $3.50 / $17.50 | satu pertanyaan setiap minggu yang layak dijawab dengan model mahal |
claude-haiku-4-5 | $0.70 / $3.50 | merangkum, mengganti nama obrolan, dan percakapan singkat yang mendominasi instans bersama |
gpt-5-6-sol | $2.00 / $12.00 | keluarga model kedua dalam pemilih yang sama, dengan kunci yang sama |
gpt-5-6-terra | $0.70 / $4.20 | dokumen panjang yang ditempelkan, saat jendela konteks menjadi fitur penentu |
Pertanyaan umum
Bagaimana cara mengarahkan NextChat ke endpoint API khusus?
Atur BASE_URL ke origin endpoint dan OPENAI_API_KEY ke kunci yang diberikan, keduanya sebagai variabel lingkungan pada deployment yang di-host sendiri. Halaman Variabel Lingkungan NextChat sendiri mendokumentasikan BASE_URL sebagai "Override OpenAI API request base URL", jadi tidak perlu melakukan patch: aplikasi tetap menggunakan format wire OpenAI dan mengirim permintaan ke tempat lain. Lakukan deployment ulang setelahnya — nilai-nilai tersebut dibaca di server, sehingga instans yang sedang berjalan tidak akan menggunakannya.
Apakah BASE_URL NextChat perlu diakhiri dengan /v1?
Tidak. NextChat menambahkan segmen versi dan rutenya sendiri. Karena itu, nilai default BASE_URL yang didokumentasikan adalah origin tanpa jalur https://api.openai.com, bukan https://api.openai.com/v1. Tulis https://api.kunavo.com saja. Menambahkan sufiks sendiri akan menggandakan jalur dan menghasilkan 404, yang mudah disalahartikan sebagai endpoint yang sedang tidak tersedia.
Bagaimana cara menambahkan model khusus ke daftar model NextChat?
CUSTOM_MODELS menerima daftar dipisahkan koma: + menambahkan model, - menyembunyikan model, dan name=displayName mengganti namanya. Id yang belum dikenal NextChat akan dibuat saat itu juga, jadi +claude-sonnet-5@OpenAI memasukkan id tersebut ke pemilih. Ada dua detail yang perlu disalin persis: awali daftar dengan -all agar id OpenAI bawaan dihapus, alih-alih gagal saat seseorang memilihnya, dan pertahankan sufiks @OpenAI agar id diarahkan melalui BASE_URL, bukan ke penyedia yang namanya diambil dari nama model.
Sebaiknya NextChat menggunakan kunci API server atau membiarkan tiap pengguna memasukkan kuncinya sendiri?
Keduanya didukung; pilihannya bergantung pada siapa yang membayar. Kunci di OPENAI_API_KEY adalah milik server, jadi setiap pengunjung yang melewati kata sandi CODE menggunakan saldo yang sama — masuk akal untuk instans pribadi, tetapi mahal untuk tautan bersama. Jika HIDE_USER_API_KEY tidak diatur, pengunjung dapat memasukkan kunci sendiri di Pengaturan dan membayar sendiri; jika nilainya diatur ke 1, kolom tersebut dihapus. Bagaimanapun, kunci tidak akan sampai ke browser kecuali pengguna mengetikkannya di sana.