Pakai GenZi AI di coding agent
Satu API key GenZi untuk Claude Code, Codex CLI, Cursor, Cline, Continue, Aider, dan klien OpenAI/Anthropic apa pun. Semua jalur lewat billing yang sama: hold → upstream → settle, dan request yang gagal tidak ditagih.
1. Ringkasan — 3 jalur, 1 kunci
| Jalur | Base URL | Auth | Dipakai oleh |
|---|---|---|---|
| OpenAI-compatible Chat Completions | https://ai.genzicorp.com/v1 | Authorization: Bearer | Codex CLI (wire_api="chat"), Cursor, Cline, Roo, Continue, Aider, SDK openai |
| Anthropic Messages API | https://ai.genzicorp.com | x-api-key atau Authorization | Claude Code, Agent SDK, SDK anthropic, Cline mode Anthropic |
| Responses API | https://ai.genzicorp.com/v1 | Authorization: Bearer | Codex CLI (wire_api="responses"), klien yang bicara protokol Responses |
Langkah awalnya sama untuk semua tool:
1. Daftar / login → https://ai.genzicorp.com/app?auth=register
2. Top up saldo → QRIS / VA / DANA / OVO (minimum Rp10.000)
3. Konversi IDR → USD → tombol manual di tab Billing (konversi TIDAK otomatis)
4. Buat API key → tab "API Keys" (format gzi_...)
5. Tempel base URL + key ke coding agent kamu (contoh di bawah)
6. Cek saldo & pemakaian di console (tab Usage)
2. Claude Code (Anthropic Messages API)
Claude Code menerima base URL gateway lewat environment variable. Set sekali di shell profile:
export ANTHROPIC_BASE_URL="https://ai.genzicorp.com"
export ANTHROPIC_AUTH_TOKEN="gzi_..." # API key GenZi
export ANTHROPIC_MODEL="claude-sonnet-5" # slug apa pun dari GET /v1/models
Atau lewat ~/.claude/settings.json supaya ikut ke semua sesi:
{
"env": {
"ANTHROPIC_BASE_URL": "https://ai.genzicorp.com",
"ANTHROPIC_AUTH_TOKEN": "gzi_...",
"ANTHROPIC_MODEL": "claude-sonnet-5"
}
}
Cek koneksi: jalankan claude lalu perintah /status — kalau base URL GenZi kelihatan di sana, request sudah lewat gateway. Model non-Anthropic (DeepSeek, Qwen, GLM, Kimi, dsb.) juga bisa dipakai: ganti ANTHROPIC_MODEL ke slug katalog, contoh deepseek-v4.1-flash untuk menghemat.
ANTHROPIC_MODEL, atau tambahkan ANTHROPIC_CUSTOM_MODEL_OPTION (fitur resmi CLI) agar slug katalog ikut tampil di daftar /model.3. OpenAI Codex CLI
Codex CLI membaca ~/.codex/config.toml. Daftarkan GenZi sebagai provider, lalu pilih model dari katalog:
model = "gpt-5.3-codex"
model_provider = "genzi"
[model_providers.genzi]
name = "GenZi AI"
base_url = "https://ai.genzicorp.com/v1"
env_key = "GENZI_API_KEY" # isi env-nya: export GENZI_API_KEY="gzi_..."
wire_api = "responses"
Ganti wire_api jadi "chat" kalau kamu pakai model non-codex (mis. claude-sonnet-5, deepseek-v4.1-flash) — jalur chat completions biasa. Bisa juga dipilih saat menjalankan:
codex --config model_provider=genzi --model gpt-5.1-codex "refactor fungsi ini"
codex --config model_provider=genzi --model deepseek-v4.1-flash "tulis unit test"
gpt-5.x-codex, gpt-5.4-pro) dilayani lewat protokol Responses → wire_api="responses". Model chat biasa pakai wire_api="chat".4. Cursor
Settings → Models → bagian OpenAI API Key:
| Field | Nilai |
|---|---|
| API Key | gzi_... |
| Override OpenAI Base URL | https://ai.genzicorp.com/v1 |
| Add model | tulis slug dari GET /v1/models, mis. claude-sonnet-5, gpt-6.1-sol, deepseek-v4.1-flash |
/v1/embeddings. Yang diarahkan ke GenZi adalah model chat/agent kamu.5. Cline / Roo Code (VS Code)
Buka panel Cline → ikon gear → Providers:
| Field | Nilai |
|---|---|
| API Provider | OpenAI Compatible (bukan "OpenAI" — yang itu terkunci ke api.openai.com) |
| Base URL | https://ai.genzicorp.com/v1 |
| API Key | gzi_... |
| Model ID | slug katalog, mis. claude-sonnet-5 |
Klik Verify. Roo Code (fork Cline) memakai kolom yang sama. Alternatif jalur Anthropic: pilih provider Anthropic → centang "Use custom base URL" → https://ai.genzicorp.com + API key GenZi di kolom Anthropic API Key.
6. Continue (VS Code / JetBrains)
Edit ~/.continue/config.yaml:
name: GenZi
version: 1.0.0
schema: v1
models:
- name: "Claude Sonnet 5 (GenZi)"
provider: openai
model: claude-sonnet-5
apiBase: "https://ai.genzicorp.com/v1"
apiKey: "gzi_..."
roles: [chat, edit, apply]
- name: "DeepSeek V4.1 Flash (GenZi) — murah"
provider: openai
model: deepseek-v4.1-flash
apiBase: "https://ai.genzicorp.com/v1"
apiKey: "gzi_..."
roles: [chat, edit, apply]
autocomplete: pakai model chat biasa juga bisa, tapi FIM/autocomplete khusus tidak disediakan gateway — pakai role chat/edit/apply dulu.7. Aider
# ~/.aider.conf.yml atau flag CLI
openai-api-base: "https://ai.genzicorp.com/v1"
openai-api-key: "gzi_..."
model: "openai/claude-sonnet-5" # prefix openai/ = endpoint OpenAI-compatible
weak-model: "openai/deepseek-v4.1-flash"
aider --openai-api-base https://ai.genzicorp.com/v1 --openai-api-key gzi_... \
--model openai/claude-sonnet-5
Aider menghapus prefix openai/ sebelum mengirim ke endpoint — jadi slug akhirnya tetap slug katalog GenZi.
8. SDK & curl
# Python (SDK openai)
from openai import OpenAI
client = OpenAI(base_url="https://ai.genzicorp.com/v1", api_key="gzi_...")
r = client.chat.completions.create(model="claude-sonnet-5",
messages=[{"role":"user","content":"jelaskan fungsi ini"}])
print(r.choices[0].message.content)
# Python (SDK anthropic → jalur Messages API)
from anthropic import Anthropic
client = Anthropic(base_url="https://ai.genzicorp.com", api_key="gzi_...")
msg = client.messages.create(model="claude-sonnet-5", max_tokens=512,
messages=[{"role":"user","content":"ping"}])
print(msg.content[0].text)
# Node / TypeScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://ai.genzicorp.com/v1", apiKey: process.env.GENZI_API_KEY });
# curl (OpenAI-compatible)
curl https://ai.genzicorp.com/v1/chat/completions \
-H "Authorization: Bearer gzi_..." -H "Content-Type: application/json" \
-d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"halo"}]}'
# curl (Anthropic Messages API)
curl https://ai.genzicorp.com/v1/messages \
-H "x-api-key: gzi_..." -H "anthropic-version: 2023-06-01" -H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":64,"messages":[{"role":"user","content":"halo"}]}'
Klien OpenAI-compatible lain (OpenHands, n8n, LangChain, LlamaIndex, Zed, dsb.) cukup diberi base URL https://ai.genzicorp.com/v1 + API key GenZi.
9. Pilih model
Harga di bawah ditarik live dari GET /v1/models saat halaman ini dibuka (USD per 1M token). Kolom "cocok untuk" = rekomendasi praktis, bukan klaim vendor.
| Slug | Input / Output | Konteks | Cocok untuk |
|---|---|---|---|
| claude-sonnet-5 vision | — | — | default coding agent: kualitas/biaya seimbang |
| claude-opus-5 vision | — | — | tugas berat: refactor besar, arsitektur |
| claude-haiku-5-5 vision | — | — | model kecil/cepat: sub-task, ringkas, judul commit |
| gpt-6.1-sol vision | — | — | alternatif OpenAI-family yang murah |
| gpt-5.3-codex responses | — | — | agent coding CLI (Codex) — jalur Responses |
| gpt-5.1-codex responses | — | — | versi codex lebih murah |
| gpt-5.4-pro responses | — | — | reasoning terkuat (tier mahal) — pakai hemat |
| deepseek-v4.1-flash vision | — | — | agent loop panjang & murah (konteks 1M) |
| glm-5.3-flash vision | — | — | paling murah untuk task massal |
| qwen3.7-plus vision | — | — | murah + bisa lihat gambar/screenshot |
| gemini-3.8-flash vision | — | — | konteks ~1jt token, gambar/screenshot |
| kimi-k3.1-pro-highspeed | — | — | output sangat panjang (maks output besar) |
| kimi-k2.7-code-highspeed | — | — | khusus kerja coding, konteks 256k |
| deepseek-v4-pro-0813 | — | — | maks output 384k, harga menengah |
| mimo-v2.6-pro vision | — | — | viable murah untuk chat/edit rutin |
Memuat harga live… katalog penuh: /catalog · JSON: /v1/models
10. Tips & batasan
| Hal | Perilaku |
|---|---|
| Streaming | Didukung di /v1/chat/completions, /v1/messages, dan /v1/responses — agent CLI butuh ini untuk output bertahap. |
| Gambar / screenshot | Kirim sebagai data: URL (inline base64) atau URL publik, pada model ber-badge vision. |
| Ukuran body | Maks 4 MB per request (di atas itu 413 request_too_large). Repo besar: kirim per-file / pakai /v1/messages/count_tokens untuk estimasi dulu. |
| Estimasi token | POST /v1/messages/count_tokens — perkiraan chars/4, tanpa inference dan tanpa tagihan. |
| Rate limit | 120 request/menit per API key + cap biaya per key (lihat header X-RateLimit-Limit). |
| Retry aman | Kirim header Idempotency-Key — retry dengan key sama tidak menghasilkan tagihan dobel. |
| Request gagal | Tidak ditagih: error upstream, koneksi putus, atau respons kosong dicatat sebagai waived (biaya 0). |
| Bukan bagian gateway | Embeddings (/v1/embeddings = 404), Batch API, Files API, dan server-side prompt caching. Blok cache_control pada format Anthropic dibuang dan dicatat di log server. |
| Paket token | Kalau volume besar, ada paket token (Token Plan) yang dihitung satuan unit — halaman console tab paket token. |
11. Error yang sering muncul
| Status | Arti | Yang dilakukan |
|---|---|---|
| 401 | API key salah / sudah dicabut | Buat key baru di console, perbarui konfigurasi agent |
| 402 | Saldo tidak cukup untuk hold request itu (insufficient_balance) | Top up, lalu konversi IDR → USD di tab Billing |
| 404 | Slug model tidak dikenal di jalur itu | Pakai slug persis dari GET /v1/models |
| 409 | model_unpriced — model belum punya harga (tidak bisa ditagih) | Pilih model lain, atau laporkan slug-nya |
| 413 | Body > 4 MB | Pecah request / kurangi konteks |
| 429 | Kena rate limit atau cap biaya key | Tunggu, atau naikkan cap di console |
| 5xx | Error upstream/transport (mis. supplier sedang gangguan) | Retry dengan Idempotency-Key; request gagal tidak ditagih |
Butuh detail format dan field lengkap? Lihat /docs · jalur Anthropic: /anthropic · base URL & contoh lain: /connect · katalog: /catalog