Dokumentasi
ANTHROPIC_BASE_URL
Variabel lingkungan yang mengarahkan Claude Code dan Anthropic SDK ke endpoint selain api.anthropic.com — mencakup referensi variabel lengkap, konfigurasi per klien, serta dua jebakan yang menyebabkan hampir semua kegagalan.
ANTHROPIC_BASE_URL memberi tahu Anthropic SDK dan Claude Code host tujuan pengiriman permintaan API, menggantikan https://api.anthropic.com default. Atur ke origin tanpa path — klien menambahkan /v1/messages sendiri — lalu pasangkan dengan ANTHROPIC_AUTH_TOKEN, yang menjadi header Authorization: Bearer.
# The origin only — no trailing /v1, no trailing slash.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...Buka terminal baru setelahnya: Claude Code dan SDK membaca variabel ini saat proses dimulai, sehingga sesi yang sudah berjalan tetap menggunakan endpoint lama.
https://api.kunavo.com/v1 menghasilkan permintaan ke /v1/v1/messages dan setiap panggilan mengembalikan 404. OpenAI SDK menggunakan konvensi sebaliknya dan memang memerlukan /v1 di base_url-nya — perbedaan ini adalah kesalahan konfigurasi yang paling umum di sini.Setiap variabel dan fungsinya
Daftar lengkap variabel yang dibaca Claude Code tersedia di referensi variabel lingkungan Anthropic. Inilah variabel yang penting saat Anda mengalihkan endpoint.
| Variabel | Nilai | Fungsi |
|---|---|---|
ANTHROPIC_ | https://api. | Origin tujuan semua permintaan. Tanpa path dan tanpa garis miring di akhir. |
ANTHROPIC_ | sk-kn-… | Kredensial yang dikirim sebagai Authorization: Bearer. Inilah yang diperlukan gateway. |
ANTHROPIC_ | sk-ant-… | Kredensial yang dikirim sebagai header x-api-key, format yang diharapkan api. |
ANTHROPIC_ | claude-sonnet-5 | Model utama yang digunakan Claude Code untuk percakapan. |
ANTHROPIC_ | claude-opus-5-5 | Model di balik alias opus (/model opus). Default Claude Code sendiri adalah Opus terbaru, jadi tetapkan ke model yang disediakan endpoint. Opus 5.5 memerlukan Claude Code v2.1.280 atau yang lebih baru. |
ANTHROPIC_ | claude-sonnet-5 | Model di balik alias sonnet (/model sonnet). Alias ini secara default meminta Sonnet 5.5, jadi tetapkan ke Sonnet yang disediakan endpoint. |
ANTHROPIC_ | claude-haiku-4-5 | Model yang digunakan oleh alias haiku (/model haiku dan subagen yang ditetapkan ke haiku), serta model yang dipakai Claude Code untuk panggilan latar belakangnya sendiri. Sejak v2.1.293, alias tersebut meminta Haiku 5.5, jadi patok alias itu ke Haiku yang disediakan endpoint. |
GET /v1/models.Konfigurasi per klien
Claude Code
Masukkan perintah ekspor ke profil shell yang digunakan untuk memulai Claude Code, lalu buka terminal baru. Instalasi dan alur kerja tidak berubah.
# ~/.zshrc (or ~/.bashrc) — applies to every Claude Code session.
export ANTHROPIC_BASE_URL=https://api.kunavo.com
export ANTHROPIC_AUTH_TOKEN=sk-kn-...
# Pin models this endpoint serves. Claude Code's default and its opus/sonnet
# aliases follow Anthropic's newest models, which may not be served here —
# unpinned, those calls 404.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5Jalankan /status di Claude Code untuk memastikan endpoint yang digunakan sesi saat ini. Panduan langkah demi langkah, termasuk cara membuat kunci: tetapkan kunci API di Claude Code.
Anthropic SDK (Python / TypeScript)
SDK membaca variabel lingkungan yang sama, dan kedua pengaturan juga dapat diteruskan ke konstruktor — berguna jika satu proses berkomunikasi dengan lebih dari satu endpoint.
from anthropic import Anthropic
# The Anthropic SDK appends /v1/messages, so pass the origin — not .../v1.
client = Anthropic(
base_url="https://api.kunavo.com",
auth_token="sk-kn-...", # sets the Authorization: Bearer header
)
msg = client.messages.create(
model="claude-sonnet-5",
max_tokens=512,
messages=[{"role": "user", "content": "Say hi"}],
)
print(msg.content[0].text)OpenAI SDK — konvensi yang berbeda
Jika kode Anda sudah menggunakan OpenAI, Anda sama sekali tidak memerlukan ANTHROPIC_BASE_URL. Arahkan base_url ke path yang kompatibel dengan OpenAI — kali ini dengan /v1 — lalu panggil model Claude yang sama melalui /v1/chat/completions.
from openai import OpenAI
# The OpenAI SDK is the other convention: it wants the /v1 in the base_url.
client = OpenAI(
api_key="sk-kn-...",
base_url="https://api.kunavo.com/v1",
)
r = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Say hi"}],
)
print(r.choices[0].message.content)Cline, Roo Code, Kilo Code, Cursor
Sebagian besar agen editor menyediakan dua pengaturan yang sama melalui UI masing-masing, bukan melalui lingkungan: kolom "base URL" atau "custom endpoint" dan kolom kunci API. Aturannya tetap sama — origin tanpa /v1 untuk penyedia bergaya Anthropic, dan kunci di kolom kunci API. Panduan per klien: Cline, Roo Code, Kilo Code.
Pastikan konfigurasi berhasil
Satu perintah curl menguji URL dasar dan kredensial sekaligus. Respons 200 dengan isi JSON berarti keduanya sudah benar.
# 200 and a JSON body means the base URL and the token are both right.
curl -sS https://api.kunavo.com/v1/messages \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "content-type: application/json" \
-d '{"model":"claude-haiku-4-5","max_tokens":16,
"messages":[{"role":"user","content":"ping"}]}'
# In Claude Code, /status shows the endpoint the session is actually using.Jika tidak berfungsi
| Gejala | Penyebab | Perbaikan |
|---|---|---|
| 404 pada setiap permintaan | /v1 masih berada di akhir ANTHROPIC_ | Tetapkan origin saja. Klien menambahkan /v1/ |
| 401 / x-api-key tidak valid | Kredensial ditetapkan sebagai ANTHROPIC_ padahal endpoint menggunakan autentikasi token bearer | Gunakan ANTHROPIC_ sebagai gantinya — selengkapnya tentang perbedaannya |
| Masih mengarah ke api. | Variabel diekspor setelah sesi dimulai, atau ditetapkan di profil yang tidak dibaca shell | Buka terminal baru; konfirmasikan dengan echo $ANTHROPIC_ |
| 404 model_ | ID model tidak tersedia di endpoint | Tetapkan ANTHROPIC_ ke ID dari GET /v1/models |
| Claude Code menyatakan saldo kredit terlalu rendah | Permintaan mencapai endpoint dan ditagihkan ke kunci, bukan ke langganan | Sesuai perkiraan — isi saldo, atau hapus token untuk kembali menggunakan paket. Lihat kredit tidak mencukupi |
Dampaknya terhadap langganan Pro atau Max
Selama variabel kredensial ditetapkan, Claude Code membebankan biaya ke kunci, bukan ke langganan yang sedang digunakan untuk masuk: batas paket tidak lagi berlaku dan penggunaan ditagihkan kepada pemilik kunci. Langganan itu sendiri tidak berubah — hapus variabel tersebut, buka terminal baru, dan Claude Code akan kembali menggunakan paket. Keduanya tidak pernah digabungkan, dan perhitungan biayanya dijelaskan di harga Claude Code.
Berikutnya
Pertanyaan umum
Apa itu ANTHROPIC_BASE_URL?
ANTHROPIC_BASE_URL adalah variabel lingkungan yang memberi tahu Anthropic SDK dan Claude Code host tujuan pengiriman permintaan API, sebagai pengganti https://api.anthropic.com. Atur ke origin tanpa path — klien menambahkan /v1/messages sendiri — lalu pasangkan dengan ANTHROPIC_AUTH_TOKEN, yang menjadi header Authorization: Bearer. Endpoint apa pun yang kompatibel dengan Anthropic dapat digunakan; di Kunavo, nilainya adalah https://api.kunavo.com.
Apakah ANTHROPIC_BASE_URL harus menyertakan /v1?
Tidak. ANTHROPIC_BASE_URL hanya menerima origin — https://api.kunavo.com, bukan https://api.kunavo.com/v1 — karena Anthropic SDK dan Claude Code menambahkan path /v1/messages sendiri. Menyertakan /v1 menghasilkan permintaan ke /v1/v1/messages, yang mengembalikan 404. OpenAI SDK menggunakan konvensi sebaliknya dan memang memerlukan /v1 di base_url-nya. Karena itu, gateway yang sama ditulis dengan dua cara berbeda, bergantung pada klien yang memanggilnya.
Apa perbedaan ANTHROPIC_AUTH_TOKEN dan ANTHROPIC_API_KEY?
ANTHROPIC_AUTH_TOKEN mengirim kredensial melalui header Authorization: Bearer, sedangkan ANTHROPIC_API_KEY mengirimkannya melalui header x-api-key yang diharapkan api.anthropic.com. Gateway yang menggunakan autentikasi token bearer memerlukan ANTHROPIC_AUTH_TOKEN; menetapkan ANTHROPIC_API_KEY sebagai gantinya adalah penyebab paling umum terjadinya 401 setelah ANTHROPIC_BASE_URL diubah. Tetapkan salah satunya saja, jangan keduanya — jika keduanya ada, perilakunya bergantung pada versi klien.
Bagaimana cara menetapkan URL dasar kustom di Claude Code?
Ekspor ANTHROPIC_BASE_URL dan ANTHROPIC_AUTH_TOKEN di profil shell yang digunakan untuk memulai Claude Code (~/.zshrc atau ~/.bashrc), lalu buka terminal baru agar variabel tersebut diwariskan. Claude Code membacanya saat dimulai, sehingga sesi yang sudah berjalan tetap menggunakan endpoint lama. Jalankan /status di Claude Code untuk memastikan endpoint yang digunakan sesi saat ini.
Apakah menetapkan ANTHROPIC_BASE_URL menonaktifkan langganan Claude Pro atau Max saya?
Selama variabel kredensial seperti ANTHROPIC_AUTH_TOKEN ditetapkan, Claude Code membebankan biaya ke kunci, bukan ke langganan yang sedang digunakan untuk masuk. Dengan demikian, batas paket Pro dan Max tidak lagi berlaku dan penggunaan ditagihkan kepada pemilik kunci. Langganan itu sendiri tidak terpengaruh dan tetap aktif — hapus variabel tersebut lalu buka terminal baru, dan Claude Code akan kembali menggunakan paket langganan.