401 di sini berkaitan dengan kredensial atau base URL Anda, bukan model — masalah model menghasilkan 404 dengan pesan yang menyebut nama model. Perbedaan tunggal ini menyelesaikan sebagian besar kasus dengan satu curl.
Error
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Missing or invalid API key"}}Ringkasan penyebab dan perbaikan
| Penyebab | Perbaikan |
|---|---|
| ANTHROPIC_API_KEY ditetapkan saat seharusnya menggunakan ANTHROPIC_AUTH_TOKEN | Gunakan AUTH_TOKEN untuk base URL pihak ketiga; API_KEY memicu prompt persetujuan satu kali. |
| Base URL membawa path /v1 | Tetapkan hanya origin — Claude Code sendiri menambahkan /v1/messages. |
| Kunci dicabut atau akun ditangguhkan | Keduanya menghasilkan 401, bukan 403. Buat kunci baru dan periksa akun. |
| Model yang tidak dilayani endpoint Messages | Ini menghasilkan 404 yang menyebut model, bukan 401 — jadi perbaikannya berbeda. |
Cetak ketiga variabel dan pastikan base URL tidak memiliki path
Penyebab paling umum terlihat di sini. Base URL harus berupa origin — tanpa /v1 dan tanpa path akhir — karena klien menambahkan endpoint sendiri. Base URL yang berakhir dengan /v1 menghasilkan permintaan ke /v1/v1/messages.
env | grep -E '^ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY|MODEL)='
# Right: https://api.kunavo.com
# Wrong: https://api.kunavo.com/v1Panggil endpoint secara langsung, dengan kedua cara
/v1/messages Kunavo menerima kredensial melalui x-api-key maupun Authorization: Bearer, sehingga Claude Code tidak memerlukan plugin atau proxy. Jika curl berhasil tetapi CLI tidak, masalahnya ada di lingkungan shell Anda, bukan di server.
curl -s https://api.kunavo.com/v1/messages -H "x-api-key: $ANTHROPIC_AUTH_TOKEN" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" -d '{"model":"claude-sonnet-5","max_tokens":8,
"messages":[{"role":"user","content":"hi"}]}'
# Same call, other header style — both are accepted:
# -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN"Hapus variabel yang tidak Anda gunakan
Jika ANTHROPIC_API_KEY dan ANTHROPIC_AUTH_TOKEN sama-sama ditetapkan, yang salah dapat dipilih. Hapus ANTHROPIC_API_KEY, mulai shell baru, lalu coba lagi — ekspor lama di profil shell bertahan lebih lama daripada perbaikan lain.
Jika statusnya 404, berhenti men-debug kunci
404 yang pesannya menyebut model berarti kredensial diterima, tetapi string model tidak diterima. Perbaiki ANTHROPIC_MODEL; tidak ada masalah dengan kuncinya. Pada penyiapan baru, penyebab yang umum adalah tidak ada yang menetapkan model: Claude Code kemudian mengirim default bawaannya, yaitu Opus terbaru, yang mungkin belum disediakan Kunavo; dan /model sonnet meminta Sonnet 5.5, yang tidak disediakan Kunavo — tetapkan ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL, dan ANTHROPIC_DEFAULT_SONNET_MODEL ke ID dari GET /v1/models.
Jika Anda melakukan panggilan melalui Kunavo
401 dari Kunavo mengarah pada lima penyebab: tidak ada kunci pada Authorization: Bearer atau x-api-key, kunci tidak memiliki awalan sk-kn-, kunci sk-kn- tersebut tidak pernah diterbitkan Kunavo, kunci dicabut, atau akun ditangguhkan. Tidak satu pun menghasilkan 403, sehingga kode status menunjukkan kelompok masalahnya — dan kunci valid yang diarahkan ke model yang tidak dilayani endpoint Messages menghasilkan 404 dengan nama model, bukan 401. Itulah keseluruhan pohon diagnosis.
Pertanyaan umum
Mengapa kunci saya bekerja di curl tetapi tidak di Claude Code?
Hampir selalu karena variabel kedua di profil shell atau base URL yang memiliki path. Endpoint menerima kedua gaya header, jadi perbedaannya bukan pada header.
ANTHROPIC_AUTH_TOKEN atau ANTHROPIC_API_KEY?
AUTH_TOKEN untuk base URL pihak ketiga — langsung digunakan. API_KEY memicu prompt persetujuan satu kali terlebih dahulu, yang sering disangka kegagalan.
Apakah langganan Claude mencakup base URL khusus?
Tidak. Langganan mengautentikasi ke endpoint milik vendor; jika CLI diarahkan ke tempat lain, gunakan kredensial endpoint tersebut dan penagihannya berasal dari endpoint itu.
Panduan terkait
- Claude API 401 authentication_error / invalid x-api-key — semua penyebab
- Instal Claude Code — perintah untuk setiap OS, login pertama, dan kesalahan yang sering ditemui
- “Organisasi Anda telah menonaktifkan akses langganan Claude untuk Claude Code” — tiga penyebab dan solusi yang berhasil
Detail semantik error lainnya tersedia di referensi error; mendapatkan kunci hanya perlu satu menit melalui pendaftaran dan panduan autentikasi.