Kembali ke panduan
Pemecahan masalah·17 Juli 2026·Baca 6 menit

Claude API 401 authentication_error / invalid x-api-key — semua penyebab

401 dari Claude selalu disebabkan oleh salah satu dari lima hal: header yang salah, jenis kunci yang salah untuk endpoint, variabel lingkungan yang salah format, kunci yang dicabut, atau base URL yang salah untuk kunci tersebut. Jalankan diagnosis di bawah ini dan Anda akan menemukan penyebabnya dalam waktu kurang dari satu menit.

Terakhir ditinjau pada .

401 dari Claude selalu disebabkan oleh salah satu dari lima hal: header yang salah, jenis kunci yang salah untuk endpoint, variabel lingkungan yang salah format, kunci yang dicabut, atau base URL yang salah untuk kunci tersebut. Jalankan diagnosis di bawah ini dan Anda akan menemukan penyebabnya dalam waktu kurang dari satu menit.

Error

respons (HTTP 401)
{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "invalid x-api-key"
  }
}

Ringkasan penyebab dan perbaikan

PenyebabPerbaikan
Header salah untuk endpoint tersebutAPI native Anthropic memerlukan x-api-key + anthropic-version; endpoint yang kompatibel dengan OpenAI memerlukan Authorization: Bearer.
Ketidakcocokan kunci/endpointKunci sk-ant-… hanya berfungsi pada api.anthropic.com; kunci gateway (misalnya sk-kn-…) hanya berfungsi pada URL gateway-nya sendiri.
Spasi atau tanda kutip terselip dalam variabel lingkunganEkspor ulang tanpa tanda kutip/baris baru; cetak len(key) untuk mendeteksi \n di akhir akibat salin-tempel.
Kunci dicabut atau workspace dinonaktifkanBuat kunci baru di konsol dan rotasikan kunci tersebut di pengelola secret Anda.

Reproduksi dengan curl mentah (mengeluarkan SDK Anda dari persamaan)

Jika curl berfungsi tetapi aplikasi Anda tidak, bug berada pada pengelolaan environment, bukan pada kunci:

diagnose.sh
# Native Anthropic wire (works on api.anthropic.com and Kunavo /v1/messages)
curl -s https://api.kunavo.com/v1/messages \
  -H "x-api-key: $KUNAVO_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'

# OpenAI-compatible wire (Bearer header instead)
curl -s https://api.kunavo.com/v1/chat/completions \
  -H "Authorization: Bearer $KUNAVO_API_KEY" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'

# Check the key isn't carrying whitespace
python3 -c "import os; k=os.environ['KUNAVO_API_KEY']; print(repr(k[:12]), len(k))"

Cocokkan awalan kunci dengan base URL

sk-ant-… → api.anthropic.com. sk-kn-… → api.kunavo.com/v1. Mengirim kunci gateway ke Anthropic (atau sebaliknya) selalu menghasilkan 401 — pesan kesalahan tidak pernah menyebut "wrong host", sehingga penyebab ini mudah terlewat.

Rotasikan kunci jika pernah masuk ke repositori atau log

Jika kunci sudah benar tetapi tetap ditolak, anggap kunci telah dicabut (pemindai otomatis dengan cepat mencabut kunci yang bocor). Buat kunci baru dan simpan di pengelola secret, bukan di file .env yang dapat ter-commit.

Jika Anda melakukan panggilan melalui Kunavo

Kunci Kunavo (sk-kn-…) dapat diautentikasi melalui kedua header di setiap endpoint — Authorization: Bearer seperti yang dikirim SDK OpenAI, atau x-api-key seperti yang digunakan SDK Anthropic — jadi SDK mana pun yang Anda gunakan, hanya base URL yang berubah. Kunci dibuat dan dicabut secara instan di dashboard. Setelah kunci berhasil diautentikasi, tarif yang dikenakan tercantum di Daftar harga Claude API Anthropic.

Pertanyaan umum

Mengapa kunci saya berfungsi di curl tetapi tidak di aplikasi?

Hampir selalu karena pengelolaan environment: baris baru di akhir akibat salin-tempel, tanda kutip ikut tersimpan dalam nilainya, variabel tidak diekspor ke proses, atau environment yang berbeda dimuat di production. Cetak repr dan panjang kunci di dalam proses yang gagal.

Bisakah saya menggunakan kunci Anthropic Console pada gateway yang kompatibel dengan OpenAI?

Tidak. Setiap layanan hanya mengautentikasi kuncinya sendiri: kunci sk-ant adalah milik api.anthropic.com, sedangkan kunci gateway adalah milik gateway. Dapatkan kunci dari base URL yang sedang Anda panggil.

Detail semantik error lainnya tersedia di referensi error; mendapatkan kunci hanya perlu satu menit melalui pendaftaran dan panduan autentikasi.