Chuyển đến nội dung chính

Envelope lỗi

Hầu hết các phản hồi lỗi dùng định dạng JSON tương thích OpenAI:
{
  "error": {
    "message": "Descriptive error message",
    "type": "orcarouter_api_error",
    "code": "model_not_found"
  }
}
type là một danh mục rộng, code là một định danh cụ thể. Một số thất bại đường nhanh (đáng chú ý là 429 cấp workspace) chỉ trả về mã trạng thái HTTP với các header liên quan và không có thân JSON.

Mã trạng thái HTTP

StatusÝ nghĩaNguyên nhân điển hình
400Yêu cầu saiTham số không hợp lệ, thiếu trường bắt buộc, vi phạm lược đồ
401Chưa xác thựcThiếu hoặc khóa API không hợp lệ
403CấmHết hạn mức, hoặc khóa không thể gọi mô hình này
404Không tìm thấyMô hình hoặc endpoint không tồn tại
429Quá nhiều yêu cầuĐụng giới hạn tốc độ — xem Giới hạn tốc độ. Phản hồi luôn bao gồm header Retry-After.
500Lỗi nội bộLỗi phía OrcaRouter
502Lỗi upstreamTất cả nhà cung cấp upstream thất bại (bao gồm mọi chuỗi dự phòng)
503Dịch vụ không khả dụngMô hình yêu cầu tạm thời không khả dụng tại upstream

Các loại lỗi bạn có thể thấy trong error.type

error.typeĐến từ đâu
orcarouter_api_errorLỗi phía gateway (xác thực, hạn mức, giới hạn tốc độ, nội bộ)
upstream_errorNhà cung cấp upstream trả lỗi hoặc hết giờ
openai_errorLỗi upstream tương thích OpenAI được giữ nguyên
claude_errorLỗi upstream Anthropic được giữ nguyên
gemini_errorLỗi upstream Gemini được giữ nguyên

Các mã lỗi bạn có thể thấy trong error.code

Đây là các mã do gateway phát sinh cho các thất bại bắt nguồn từ OrcaRouter (không phải upstream):
error.codeHTTPÝ nghĩa
insufficient_user_quota403Đã hết tín dụng tài khoản. Hãy nạp thêm.
model_not_found503Mô hình này không khả dụng cho tài khoản của bạn.
model_price_error400Giá cho mô hình này chưa được thiết lập. Liên hệ hỗ trợ.
api_not_implemented400Endpoint hoặc thao tác không được hỗ trợ cho mô hình bạn đã chọn.
bad_request_body400Thân yêu cầu không thể phân tích được.
prompt_blocked400Chính sách an toàn của nhà cung cấp đã chặn prompt trước khi sinh.
sensitive_words_detected400Bộ lọc nội dung nhạy cảm đã từ chối prompt.
Nếu bạn cần phân biệt theo chương trình, hãy khớp theo error.code trước (cụ thể) rồi dự phòng theo error.type (danh mục rộng).

Lỗi khi streaming

Các lỗi trong phản hồi streamed không thể dùng mã trạng thái HTTP (trạng thái đã được gửi khi luồng mở). Định dạng phụ thuộc vào endpoint:

/v1/chat/completions/v1/responses (tương thích OpenAI)

Lỗi đến như một chunk data: {...} trong luồng:
data: {"error":{"message":"...","type":"upstream_error","code":""}}

data: [DONE]
Phân tích mỗi chunk data: thành JSON; nếu có trường error, coi luồng là thất bại.

/v1/messages (tương thích Anthropic)

Anthropic dùng sự kiện SSE có tên. Một thất bại trong luồng đến như:
event: error
data: {"type":"error","error":{"type":"overloaded_error","message":"..."}}
Luồng kết thúc với event: message_stop (hoặc bị cắt) sau sự kiện lỗi.

Lỗi dự phòng

Khi extra_body.models được đặt và mọi mô hình trong chuỗi đều thất bại, bạn nhận 502 với chi tiết về lỗi upstream cuối cùng. Các header phản hồi X-Orca-Fallback-LevelX-Orca-Fallback-Model cho biết dự phòng nào đang được thử khi chuỗi cạn. Xem Header phản hồi.