Skip to content

Getting Started

import { Card, CardGrid, Steps, Aside, Tabs, TabItem, LinkButton } from ‘starlight/components’;

30 DETIK SETUP 1 API key untuk v2 & v3 Multi-model · OpenAI-compatible

Satu baseURL, satu API key, langsung streaming. Tanpa kartu kredit.

Daftar & Ambil Key Lihat Harga

Pilih jalur: v3 atau v2

`https://balitechsolution.com/v3` · Rust · auto-failover antar provider. Throughput tertinggi, circuit breaker per provider. **Pakai ini dulu.** `https://balitechsolution.com/v2` · Go · parity 100% dengan v3. Fallback otomatis kalau v3 mengembalikan `503 server_busy`.

Model dipakai dengan slug yang sama di kedua jalur: bt/nama-model (mis. bt/qwen3.8-flash).

3 langkah — 60 detik

  1. Daftar & ambil key — buka console.balitechsolution.com/register, buat akun (gratis, tanpa kartu kredit), lalu ke menu API Keys dan copy key sk-db-....

  2. Ganti baseURL — di kode/SDK yang sudah pakai format OpenAI, cukup arahkan ke gateway:

    baseURL: "https://api.openai.com/v1"
    baseURL: "https://balitechsolution.com/v3"
  3. Kirim request pertama:

    Terminal window
    curl https://balitechsolution.com/v3/chat/completions \
    -H "Authorization: Bearer sk-db-ISI_KEY_KAMU" \
    -H "Content-Type: application/json" \
    -d '{"model":"bt/qwen3.8-flash","messages":[{"role":"user","content":"Halo!"}]}'

    Balasan 200 OK + stream data: {...} berarti setup beres.

Setting per tool: opencode, Hermes, Kilo Code

Pilih tab sesuai tool kamu. Semua butuh 3 nilai yang sama: baseURL https://balitechsolution.com/v3, apiKey sk-db-..., model bt/....

1. **Tentukan lokasi file.** Global (berlaku semua project): `~/.config/opencode/opencode.json`. Khusus satu project: `opencode.json` di root project. Belum ada? Buat baru.
2. **Paste config ini** (ganti `sk-db-...` dengan key kamu):
```json
{
"$schema": "https://opencode.ai/config.json",
"model": "balitech-v3/bt/sonnet4.5",
"small_model": "balitech-v3/bt/qwen3.8-flash",
"provider": {
"balitech-v3": {
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://balitechsolution.com/v3", "apiKey": "sk-db-..." },
"discoverModels": true
},
"balitech-v2": {
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://balitechsolution.com/v2", "apiKey": "sk-db-..." },
"discoverModels": true
}
}
}
```
3. **Verifikasi** — `discoverModels: true` mengambil daftar model otomatis dari `GET /v3/models`:
```bash
npx opencode models | grep balitech
# balitech-v3/bt/sonnet4.5
# balitech-v3/bt/qwen3.8-flash
npx opencode run -m balitech-v3/bt/qwen3.8-flash "Halo v3!"
```
Model tidak muncul? Cek: `baseURL` tanpa `/` di akhir, key diawali `sk-db-`, dan file JSON valid (`python3 -m json.tool opencode.json`).
Hermes menyimpan provider sebagai `custom_providers` + key lewat environment variable. Jalankan 3 perintah ini (ganti `sk-db-...`):
1. **Daftarkan provider Balitech:**
```bash
hermes config set model.provider custom
hermes config set model.base_url https://balitechsolution.com/v3
hermes config set model.default bt/qwen3.8-flash
```
2. **Simpan API key** sebagai environment variable (nama ini yang dibaca Hermes untuk base URL Balitech):
```bash
export HERMES_CUSTOM_BALITECHSOLUTION_COM_API_KEY="sk-db-ISI_KEY_KAMU"
echo 'export HERMES_CUSTOM_BALITECHSOLUTION_COM_API_KEY="sk-db-ISI_KEY_KAMU"' >> ~/.bashrc
```
3. **Verifikasi** — refresh daftar model lalu kirim satu pesan:
```bash
hermes model --refresh
hermes -z "Halo Hermes!"
```
Cadangan otomatis v2: `hermes fallback add` → pilih provider Balitech v2 (`https://balitechsolution.com/v2`, key sama) — dipakai saat v3 balas `503`/`429`.
Kilo Code (VS Code / JetBrains / Cursor) memakai provider bertipe **OpenAI Compatible**:
1. Buka **Settings** (ikon gear) → tab **Providers** → scroll ke bawah → **Custom provider**.
2. Isi dialog persis seperti ini:
| Field | Isi |
|-------|-----|
| Provider ID | `balitech-v3` |
| Display name | `BaliTech v3` |
| Provider API | `OpenAI Compatible` |
| Base URL | `https://balitechsolution.com/v3` |
| API key | `sk-db-ISI_KEY_KAMU` |
3. Klik **Submit**. Kilo otomatis membaca `GET /v3/models` dan menampilkan semua model `bt/...` di model picker — ketik mis. `sonnet` lalu pilih `bt/sonnet4.5`.
4. **Verifikasi:** buka chat Kilo, pilih model `BaliTech v3 / bt/qwen3.8-flash`, kirim `Halo!`.
Error `Invalid API Key` → key salah/expired, cek di console. `Model Not Found` → pakai ID persis dari picker (`bt/...`, bukan nama display). Jalur cadangan: ulangi langkah di atas dengan ID `balitech-v2` + Base URL `https://balitechsolution.com/v2`.

Ganti model default

Pakaimodelsmall_model
v3 (utama)balitech-v3/bt/sonnet4.5balitech-v3/bt/qwen3.8-flash
v2 (cadangan)balitech-v2/bt/sonnet4.5balitech-v2/bt/qwen3.8-flash

Failover manual: coba v3 dulu, kalau 503 server_busy retry ke v2 — slug bt/* sama persis. Katalog lengkap ada di Models.

Test per jalur

```bash curl https://balitechsolution.com/v3/chat/completions \ -H "Authorization: Bearer sk-db-..." -H "Content-Type: application/json" \ -d '{"model":"bt/qwen3.8-flash","messages":[{"role":"user","content":"Halo!"}]}' ``` ```bash curl https://balitechsolution.com/v2/chat/completions \ -H "Authorization: Bearer sk-db-..." -H "Content-Type: application/json" \ -d '{"model":"bt/qwen3.8-flash","messages":[{"role":"user","content":"Halo!"}]}' ``` ```ts import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://balitechsolution.com/v3", apiKey: "sk-db-...", }); await client.chat.completions.create({ model: "bt/qwen3.8-flash", messages: [{ role: "user", content: "Halo!" }], }); ``` ```py from openai import OpenAI client = OpenAI( base_url="https://balitechsolution.com/v3", api_key="sk-db-...", ) client.chat.completions.create( model="bt/qwen3.8-flash", messages=[{"role": "user", "content": "Halo!"}], ) ```

Referensi parity & quota: Settings API (v2 & v3). Butuh batch, audio, atau streaming? Lanjut ke Chat Completions dan Streaming.