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

Claude Code “API Error: bad_response_status_code” — đọc mã trạng thái bên dưới

Lỗi này cho biết lệnh gọi thất bại nhưng hầu như không cho biết lý do. Thông tin hữu ích — mã trạng thái và thông báo của nhà cung cấp — chỉ cần bật một cờ debug, và mỗi trạng thái dẫn đến một cách khắc phục khác nhau.

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

Lỗi này cho biết lệnh gọi thất bại nhưng hầu như không cho biết lý do. Thông tin hữu ích — mã trạng thái và thông báo của nhà cung cấp — chỉ cần bật một cờ debug, và mỗi trạng thái dẫn đến một cách khắc phục khác nhau.

Lỗi

terminal
API Error: bad_response_status_code

(no status, no provider message — the wrapper hides both)

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

Nguyên nhânCách khắc phục
401 / 403 bên dướiThông tin xác thực hoặc header không khớp với base URL tùy chỉnh. Kiểm tra biến xác thực nào đang được thiết lập.
404 bên dướiHoặc id mô hình không được máy chủ đó biết đến, hoặc base URL có thêm một đoạn đường dẫn.
402 bên dướiVí gateway đã hết tiền. Nạp thêm; không có vấn đề gì trong cấu hình client.
429 / 529 bên dướiBị giới hạn tốc độ hoặc thượng nguồn quá tải. Hãy thử lại với backoff thay vì cấu hình lại.
Phần thân không phải JSON với mã 200Captive portal, proxy doanh nghiệp hoặc trang lỗi. Trạng thái có thể đúng nhưng phần thân vẫn không thể sử dụng.

Biến lớp bọc thành lỗi thực sự

Đầu ra debug của Claude Code in ra yêu cầu và phản hồi thượng nguồn. Chạy một lệnh gọi lỗi với debug bật và đọc dòng trạng thái — mọi bước sau đó đều phụ thuộc vào nội dung dòng này.

debug.sh
claude --debug 2>&1 | tee claude-debug.log

grep -iE 'status|http/|error' claude-debug.log | head -20

Tái hiện cùng lệnh gọi bằng curl

Lấy base URL và thông tin xác thực ra khỏi công cụ rồi gửi yêu cầu trực tiếp. Cách này phân biệt “máy chủ từ chối chúng ta” với “client bị định dạng sai” chỉ trong một bước — và phần thân thô thường nêu vấn đề bằng ngôn ngữ rõ ràng mà lớp bọc đã loại bỏ.

reproduce.sh
curl -i "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

Kiểm tra base URL không có đường dẫn ở cuối

Claude Code tự thêm đường dẫn `/v1/...`. Base URL vốn đã kết thúc bằng `/v1` sẽ tạo thành `/v1/v1/messages`, khiến mọi máy chủ trả về 404 — một lần nữa được bọc thành bad_response_status_code. Chỉ đặt origin.

base-url.sh
# Wrong — doubles the version segment
export ANTHROPIC_BASE_URL="https://api.kunavo.com/v1"

# Right — origin only
export ANTHROPIC_BASE_URL="https://api.kunavo.com"

Nếu bạn gọi qua Kunavo

Hai trạng thái cần nhận biết ngay khi làm việc với Kunavo là 402 và 401: 402 nghĩa là ví không đủ để chi trả yêu cầu — vấn đề nằm ở số dư, không phải cấu hình — còn 401 nghĩa là Kunavo không nhận được khóa sk-kn- hợp lệ. Khóa được đọc từ Authorization: Bearer hoặc x-api-key, vì vậy hãy kiểm tra chính xác Claude Code đã gửi gì: khóa trong ANTHROPIC_API_KEY cần được phê duyệt một lần trong phiên tương tác và sẽ bị bỏ qua nếu bị từ chối, còn ANTHROPIC_AUTH_TOKEN được dùng ngay. Cả hai trạng thái đều trả về phần thân JSON nêu rõ lý do, nên nhật ký gỡ lỗi sẽ cho câu trả lời dứt khoát. Các yêu cầu thất bại không bị tính phí. Biến cần đặt và lý do được trình bày trong hướng dẫn về biến xác thực.

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

Lỗi này có bao giờ là lỗi của chính Claude Code không?

Hiếm khi. Đây là lớp bọc ở cấp truyền tải: có thứ gì đó đã trả lời, nhưng câu trả lời không phải là thành công. Tái hiện bằng curl sẽ xác định rõ — nếu curl cũng thất bại thì vấn đề không nằm ở ứng dụng khách.

Nó hoạt động với API chính thức nhưng không hoạt động với gateway của tôi.

Khi đó khác biệt nằm ở thông tin xác thực hoặc base URL, không phải công cụ. Hãy kiểm tra header xác thực mà gateway yêu cầu và xem base URL của bạn đã chứa /v1 hay chưa.

Tôi có nên tự động thử lại không?

Chỉ sau khi bạn biết trạng thái. Thử lại 401 hoặc 404 là vô ích; thử lại 429 hoặc 529 với thời gian chờ tăng dần là đúng.

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.