Quay lại hướng dẫn
Khắc phục sự cố·28 tháng 8, 2026·Đọc 6 phút

Claude Code “API Error: 401 authentication_error” với base URL tùy chỉnh — mọi nguyên nhân

401 ở đây liên quan đến thông tin xác thực hoặc base URL, không bao giờ liên quan đến mô hình — vấn đề mô hình trả về 404 với thông báo nêu tên mô hình. Chỉ một phân biệt này đã giải quyết phần lớn trường hợp bằng một lệnh curl.

Được xem xét lần cuối vào .

401 ở đây liên quan đến thông tin xác thực hoặc base URL, không bao giờ liên quan đến mô hình — vấn đề mô hình trả về 404 với thông báo nêu tên mô hình. Chỉ một phân biệt này đã giải quyết phần lớn trường hợp bằng một lệnh curl.

Lỗi

terminal
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Missing or invalid API key"}}

Tổng quan nguyên nhân và cách khắc phục

Nguyên nhânCách khắc phục
Đặt ANTHROPIC_API_KEY trong khi cần ANTHROPIC_AUTH_TOKENDùng AUTH_TOKEN cho base URL của bên thứ ba; API_KEY sẽ yêu cầu phê duyệt một lần.
Base URL chứa đường dẫn /v1Chỉ đặt origin — Claude Code tự nối /v1/messages.
Key bị thu hồi hoặc tài khoản bị đình chỉCả hai đều trả về 401, không bao giờ là 403. Tạo key mới và kiểm tra tài khoản.
Mô hình mà endpoint Messages không phục vụTrường hợp này trả về 404 và nêu tên mô hình, không phải 401 — vì vậy cách khắc phục khác.

In ba biến và kiểm tra base URL không có đường dẫn

Nguyên nhân phổ biến nhất hiển thị ở đây. Base URL phải là origin — không có /v1, không có đường dẫn ở cuối — vì client tự nối endpoint. Base URL kết thúc bằng /v1 sẽ tạo request đến /v1/v1/messages.

check-env.sh
env | grep -E '^ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY|MODEL)='

# Right: https://api.kunavo.com
# Wrong: https://api.kunavo.com/v1

Gọi endpoint trực tiếp theo cả hai cách

/v1/messages của Kunavo chấp nhận thông tin xác thực dưới dạng x-api-key hoặc Authorization: Bearer, vì vậy Claude Code không cần plugin hay proxy phía trước. Nếu curl thành công mà CLI không thành công, vấn đề nằm trong môi trường shell chứ không phải máy chủ.

probe.sh
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"

Bỏ đặt biến bạn không dùng

Nếu cả ANTHROPIC_API_KEY và ANTHROPIC_AUTH_TOKEN đều được đặt, biến sai có thể được ưu tiên. Bỏ đặt ANTHROPIC_API_KEY, mở shell mới và thử lại — một export cũ trong cấu hình shell sẽ tồn tại lâu hơn mọi cách khắc phục khác.

Nếu trạng thái là 404, hãy dừng gỡ lỗi key

Lỗi 404 có thông báo nêu tên mô hình nghĩa là thông tin xác thực đã được chấp nhận nhưng chuỗi mô hình thì chưa. Hãy sửa ANTHROPIC_MODEL; khóa không có vấn đề gì. Trong thiết lập mới, nguyên nhân thường gặp là không có cấu hình cố định mô hình: khi đó Claude Code gửi mô hình mặc định tích hợp sẵn, Opus mới nhất, mà Kunavo có thể chưa cung cấp; và /model sonnet yêu cầu Sonnet 5.5, mô hình mà Kunavo không cung cấp — hãy đặt ANTHROPIC_MODEL, ANTHROPIC_DEFAULT_OPUS_MODEL và ANTHROPIC_DEFAULT_SONNET_MODEL thành các ID lấy từ GET /v1/models.

Nếu bạn gọi qua Kunavo

401 từ Kunavo thu hẹp còn năm nguyên nhân: không có key nào đến trong Authorization: Bearer hoặc x-api-key; key không có tiền tố sk-kn-; đó là key sk-kn- mà Kunavo chưa cấp (do gõ sai hoặc dán thiếu); key đã bị thu hồi; hoặc tài khoản bị đình chỉ. Không nguyên nhân nào trả về 403, nên chỉ mã trạng thái đã cho biết bạn thuộc nhóm nào — và key hợp lệ trỏ đến mô hình mà endpoint Messages không phục vụ sẽ trả về 404 với tên mô hình trong thông báo, không phải 401. Đó là toàn bộ cây chẩn đoán.

Câu hỏi thường gặp

Tại sao key hoạt động trong curl nhưng không trong Claude Code?

Gần như luôn do một biến thứ hai được đặt trong cấu hình shell, hoặc base URL có đường dẫn. Endpoint chấp nhận cả hai kiểu header, nên khác biệt không nằm ở header.

ANTHROPIC_AUTH_TOKEN hay ANTHROPIC_API_KEY?

AUTH_TOKEN cho base URL của bên thứ ba — được dùng ngay. API_KEY trước tiên kích hoạt lời nhắc phê duyệt một lần, thường bị nhầm là lỗi.

Gói đăng ký Claude có bao gồm base URL tùy chỉnh không?

Không. Gói đăng ký xác thực với endpoint riêng của nhà cung cấp; khi trỏ CLI sang nơi khác, bạn dùng credential của endpoint đó và endpoint đó tính phí.

Hướng dẫn liên quan

Thông tin chi tiết hơn về ý nghĩa lỗi có trong tài liệu tham chiếu lỗi; bạn chỉ mất một phút để lấy khóa qua đăng ký và hướng dẫn xác thực.