Claude Code "invalid x-api-key": permintaan Anda terkirim ke Anthropic
Wokey Team · 2026-09-24
Jawaban singkat: jika Anda melihat invalid x-api-key, permintaan Anda terkirim ke api.anthropic.com milik Anthropic, bukan ke gateway yang Anda konfigurasikan. Wokey tidak pernah mengembalikan pesan itu; error key dari Wokey adalah invalid_api_key, dengan garis bawah. Jadi jangan ganti key Anda dulu. Cari tahu mengapa base URL tidak diterapkan.
Pertama, cari tahu siapa yang menjawab
Cocokkan JSON di error Anda dengan tabel ini untuk melihat ke mana permintaan sebenarnya sampai. Setiap baris adalah respons mentah yang ditangkap dengan curl:
| Respons berisi | Dijawab oleh | Arti |
|---|---|---|
"message":"invalid x-api-key" |
Anthropic | Key sk- dikirim sebagai Authorization: Bearer, atau nilai x-api-key tidak tampak seperti key |
"message":"API key is invalid." |
Anthropic | Key sk- yang bukan terbitan Anthropic dikirim sebagai x-api-key |
"message":"x-api-key header is required" |
Anthropic | Tidak ada key yang dikirim sama sekali |
"message":"Invalid bearer token" |
Anthropic | Nilai bearer tidak diawali sk- |
"code":"invalid_api_key" |
Wokey | Permintaan sampai ke Wokey, tetapi key tidak ada, salah ketik, atau sudah dihapus |
Respons lengkap dari Anthropic terlihat seperti ini. Perhatikan "type":"error" di tingkat terluar dan, biasanya, sebuah request_id:
{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011C..."}
Respons Wokey tidak punya type: "error" di tingkat terluar, dan code-nya memakai garis bawah:
{"error":{"code":"invalid_api_key","message":"Invalid API key. Make sure you copied the complete Wokey API key, or create a new one at https://wokey.ai/api.","type":"invalid_request_error"}}
Key Wokey diawali sk-. Jika key itu ditaruh di ANTHROPIC_AUTH_TOKEN (dikirim sebagai bearer token) dan permintaannya sampai ke Anthropic, Anda mendapat invalid x-api-key. Jika ditaruh di ANTHROPIC_API_KEY (dikirim sebagai x-api-key), Anda mendapat API key is invalid. Penyebabnya sama di kedua kasus.
Mengapa base URL tidak diterapkan
1. Variabelnya tidak ada di proses yang menjalankan claude. export hanya berlaku untuk terminal saat ini. Variabel yang diatur di terminal lain, yang ditambahkan ke ~/.zshrc tanpa membuka terminal baru, atau editor yang dibuka dari Dock atau menu Start tidak akan melihatnya. Di terminal yang menjalankan claude, periksa apakah kedua variabel ada:
env | grep ANTHROPIC
2. Nama variabelnya salah. Claude Code hanya membaca ANTHROPIC_BASE_URL. ANTHROPIC_API_BASE, ANTHROPIC_BASE, CLAUDE_BASE_URL, dan OPENAI_BASE_URL semuanya diabaikan, dan permintaan diam-diam menuju alamat resmi.
3. settings.json berisi key tetapi tidak berisi alamat. Jika blok env di ~/.claude/settings.json mengatur ANTHROPIC_AUTH_TOKEN tanpa ANTHROPIC_BASE_URL, key dikirim ke Anthropic. Selalu tulis keduanya bersama:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.wokey.ai",
"ANTHROPIC_AUTH_TOKEN": "your Wokey API key"
}
}
4. Anda memakai ekstensi VS Code. Pemeriksaan login ekstensi tidak membaca variabel shell. Atur variabelnya di claudeCode.environmentVariables pada pengaturan pengguna VS Code; lihat panduan ekstensi VS Code.
5. Anda memakai aplikasi desktop Claude. Aplikasi desktop tidak membaca ANTHROPIC_BASE_URL maupun settings.json. Atur gateway di Developer → Configure Third-Party Inference; lihat pemecahan masalah aplikasi desktop dengan API pihak ketiga.
6. Anda memanggil SDK dari kode sendiri. SDK Python dan TypeScript dari Anthropic secara bawaan memakai alamat resmi. Berikan base_url secara eksplisit (baseURL di TypeScript), juga tanpa /v1:
from anthropic import Anthropic
client = Anthropic(base_url="https://api.wokey.ai", api_key="your Wokey API key")
Konfirmasi di dalam Claude Code
Jalankan /status di Claude Code. Tab Status seharusnya menampilkan baris Anthropic base URL bernilai https://api.wokey.ai. Jika baris itu tidak ada, Claude Code memakai alamat resmi dan salah satu penyebab di atas berlaku.
Bandingkan dengan curl
Di terminal yang sama dengan yang menjalankan claude, jalankan:
curl -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":1,"messages":[{"role":"user","content":"."}]}'
Arti hasilnya:
curl: (3) URL rejected: No host part in the URL:ANTHROPIC_BASE_URLkosong; variabelnya tidak pernah diatur.- Diawali
{"id":"msg_: gateway dan key sudah benar. Masalahnya ada di konfigurasi yang dibaca Claude Code; telusuri penyebab 3 sampai 5 di atas. invalid_api_key: permintaan sampai ke Wokey, jadi sekarang masalahnya memang di key. Periksa di konsol apakah key disalin utuh dan belum dihapus.
Jika muncul saat memakai API resmi
Jika Anda memakai API Anthropic secara langsung, invalid x-api-key berarti persis seperti tulisannya: key salah atau sudah dicabut, atau tersalin bersama baris baru atau spasi yang tidak sengaja. Claude Code memblokir key yang mengandung baris baru sebelum mengirimnya, dengan error seperti Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break.
Pertanyaan umum
Apakah Wokey mengembalikan "invalid x-api-key"?
Tidak. Pesan itu berasal dari API milik Anthropic sendiri. Untuk key yang tidak ada atau salah, Wokey mengembalikan 401 dengan {"error":{"code":"invalid_api_key",...}}. Jika Anda melihat "invalid x-api-key", permintaan tidak pernah sampai ke Wokey karena ANTHROPIC_BASE_URL tidak diterapkan.
Bagaimana cara memeriksa base URL mana yang dipakai Claude Code?
Jalankan /status di Claude Code dan lihat Anthropic base URL. Dengan Wokey, nilainya seharusnya https://api.wokey.ai. Jika baris itu tidak ada atau menampilkan alamat Anthropic, variabelnya tidak sampai ke proses yang sedang berjalan.
echo menampilkan variabelnya, lalu mengapa masih gagal?
Biasanya variabel diatur tanpa export, atau Claude Code dijalankan dari terminal lain, IDE, atau ikon desktop yang tidak pernah melihatnya. Cara paling andal adalah menaruh ANTHROPIC_BASE_URL dan ANTHROPIC_AUTH_TOKEN di blok env pada ~/.claude/settings.json.
Bagaimana jika ekstensi VS Code atau aplikasi desktop menampilkan error ini?
Untuk ekstensi VS Code, atur variabelnya di claudeCode.environmentVariables pada pengaturan pengguna Anda. Aplikasi desktop Claude mengabaikan variabel lingkungan: konfigurasikan gateway di Developer → Configure Third-Party Inference, lalu klik Save & Restart.
Bisakah key Wokey dipakai langsung di Anthropic?
Tidak. Key Wokey berupa sk- diikuti 32 karakter heksadesimal dan hanya berfungsi di api.wokey.ai. Jika dikirim ke Anthropic, hasilnya 401.