Lỗi và giới hạn
MarkdownMã phản hồi, ý nghĩa và cách xử lý. Mọi lỗi đều ở dạng JSON và có Request ID.
Hướng dẫn đầy đủ
Định dạng lỗi
Lỗi được trả về theo định dạng của API mà bạn đã gọi: đối tượng error cho OpenAI, {"type": "error", "error": {...}} cho Anthropic và error với các trường status và details cho Gemini. Vì vậy, SDK nhận diện chúng như các lỗi API thông thường.
error.codevàerror.reason— lớp lỗi trong bảng bên dưới; hai giá trị này trùng nhau.error.type— giá trị tiêu chuẩn của định dạng (ví dụ,invalid_request_errorhoặcserver_error).error.request_id(trong Anthropic làrequest_idở cấp cao nhất), tiêu đềX-Request-IDvà phần cuối nội dung thông báo chứa mã định danh yêu cầu.- Trong Gemini, lớp lỗi nằm ở
error.details:ErrorInfo.reason— cùng mã đó viết bằng chữ hoa (ví dụ,MODEL_OVERLOADED),domain—ailoot.ai; mã định danh yêu cầu nằm ởRequestInfo.requestId. - Trong định dạng Gemini, lỗi 5xx không được phép tự động thử lại và
result_pending_checkđược trả về với trạng thái 409 vàstatusABORTED: nhờ vậy, Gemini SDK và CLI không tự gửi lại các yêu cầu đó. Lớp lỗi nằm ởErrorInfo.reason(ví dụ,MODEL_TIMEOUThoặcRESULT_PENDING_CHECK). - Phản hồi theo định dạng OpenAI còn có các trường cấp cao nhất
codevàmessage— dành cho ứng dụng khách cũ.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}{
"type": "error",
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"reason": "invalid_api_key",
"message": "… Nothing was charged. … Request ID: 94ed3e31-4373-41ce-bf8a-0d1ed3f7235e."
},
"request_id": "94ed3e31-4373-41ce-bf8a-0d1ed3f7235e"
}{
"error": {
"code": 401,
"status": "UNAUTHENTICATED",
"message": "The API key is not valid. Nothing was charged. … Request ID: e7aa743b-9d0d-4064-b206-2562609f545b.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "INVALID_API_KEY",
"domain": "ailoot.ai",
"metadata": {
"code": "invalid_api_key",
"reason": "invalid_api_key",
"request_id": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
},
{
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
]
}
}Mã lỗi
| HTTP | Lớp lỗi (reason) | Điều gì đã xảy ra | Cách xử lý |
|---|---|---|---|
| 400 | invalid_request | Yêu cầu không hợp lệ: nội dung hoặc tham số sai; mô hình không hỗ trợ trường, tệp đính kèm hoặc công cụ trong yêu cầu; khóa được gửi trong địa chỉ | Sửa yêu cầu theo nội dung lỗi: bỏ trường, tệp đính kèm hoặc công cụ không được hỗ trợ; gửi khóa trong tiêu đề. Việc từ chối do trường, tệp đính kèm hoặc công cụ không được hỗ trợ diễn ra trước khi giữ tiền — chưa có khoản tiền nào bị trừ |
| 400 | context_length_exceeded | Yêu cầu dài hơn cửa sổ ngữ cảnh của mô hình | Rút ngắn lịch sử hoặc chọn mô hình có cửa sổ ngữ cảnh lớn hơn |
| 400 | content_policy_violation | Yêu cầu bị từ chối theo quy tắc của mô hình | Diễn đạt lại yêu cầu |
| 401 | invalid_api_key | Thiếu khóa hoặc khóa không hợp lệ | Kiểm tra xem khóa đã được gửi đầy đủ hay chưa |
| 401 | api_key_disabled | Khóa đã bị vô hiệu hóa | Bật khóa hoặc tạo khóa mới |
| 402 | insufficient_balance, insufficient_quota | Số dư khả dụng không đủ ngay cả cho khoản giữ trước tối thiểu (insufficient_quota — cùng trường hợp đó, ở dạng quen thuộc với OpenAI SDK) | Nạp thêm số dư hoặc giảm max_tokens |
| 402 | api_key_quota_exhausted | Đã dùng hết hạn mức chi tiêu tổng của khóa | Tăng hạn mức của khóa trong trang quản lý tài khoản |
| 402 | payment_disputed | Tài khoản có khoản nợ từ giao dịch thanh toán bị tranh chấp | Tạm dừng yêu cầu mới cho đến khi thanh toán hết nợ — hãy liên hệ bộ phận hỗ trợ |
| 403 | api_key_expired | Khóa đã hết hạn | Tạo khóa mới |
| 403 | account_inactive | Tài khoản của bạn đã bị vô hiệu hóa | Liên hệ bộ phận hỗ trợ |
| 403 | permission_denied | Khóa không được phép thực hiện yêu cầu này (ví dụ, do giới hạn IP) | Kiểm tra các giới hạn của khóa |
| 404 | model_not_found | Không có mô hình này | Đối chiếu ID với /v1/models |
| 404 | unsupported_endpoint | Mô hình không hoạt động với định dạng này | Chọn định dạng hoặc mô hình khác |
| 404 | not_found | Không có đường dẫn hoặc đối tượng này (ví dụ, tác vụ) | Kiểm tra địa chỉ và mã định danh |
| 409 | duplicate_request | Thao tác có cùng khóa idempotency đã được chấp nhận và có thể đã hoàn tất | Kiểm tra kết quả của thao tác đầu tiên, không gửi thao tác mới |
| 409 | not_ready, video_not_ready | Video hoặc tác vụ khác chưa sẵn sàng | Kiểm tra trạng thái sau |
| 409, 503 | result_pending_check | Chúng tôi đang xác minh kết quả yêu cầu. Với tác vụ video, đây là cờ result_pending_check: true trong phản hồi trạng thái; bản thân tác vụ vẫn ở trạng thái in_progress | Không gửi lại yêu cầu — trạng thái sẽ xuất hiện trong lịch sử (GET https://ailoot.ai/api/v1/usage). Đừng tạo lại tác vụ video: hãy kiểm tra tác vụ đó sau qua GET /v1/videos/{id} |
| 410 | model_retired | Mô hình đã ngừng được cung cấp | Chọn phiên bản mới trong GET /v1/models |
| 413 | request_too_large | Nội dung yêu cầu quá lớn | Giảm kích thước tệp hoặc rút ngắn lịch sử |
| 429 | rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_full | Có quá nhiều yêu cầu hoặc yêu cầu đồng thời từ tài khoản của bạn | Hãy chờ (tiêu đề Retry-After, thường là 10 giây) rồi thử lại |
| 429 | usage_limit_reached | Đã dùng hết hạn mức chi tiêu của khóa trong cửa sổ thời gian (5 giờ, 1 ngày hoặc 7 ngày) | Chờ cửa sổ thời gian được làm mới hoặc tăng hạn mức của khóa |
| 500 | internal_error | Lỗi Ailoot | Liên hệ bộ phận hỗ trợ và cung cấp Request ID |
| 502 | invalid_model_response, empty_response, incomplete_response | Mô hình trả về câu trả lời không hợp lệ, trống hoặc không đầy đủ | Tìm Request ID trong lịch sử của trang tài khoản. Nếu đã có kết quả hoặc khoản ghi nợ, việc gửi lại sẽ tạo yêu cầu trả phí thứ hai. Không có bản ghi không xác nhận rằng yêu cầu chưa được gửi hoặc chưa được thực thi: đừng gửi lại yêu cầu có trạng thái gửi không rõ; hãy liên hệ bộ phận hỗ trợ kèm Request ID. |
| 502 | result_not_delivered | Kết quả không được chuyển đến do lỗi phía Ailoot; khoản giữ tiền hoặc tiền đã trừ được hoàn lại | Có thể gửi lại yêu cầu |
| 503 | model_overloaded | Mô hình tạm thời quá tải | Nếu X-Should-Retry: true — thử lại sau số giây trong Retry-After; nếu false — trước tiên kiểm tra Request ID trong lịch sử |
| 503 | model_unavailable | Mô hình tạm thời không khả dụng | Chọn mô hình khác. Nếu nhận được X-Should-Retry: true, hãy thử lại sau số giây trong Retry-After; nếu là false, trước hết hãy kiểm tra Request ID trong lịch sử |
| 503 | service_unavailable | Sự cố tạm thời phía Ailoot | Nếu X-Should-Retry: true — thử lại sau số giây trong Retry-After; nếu false — trước tiên kiểm tra Request ID trong lịch sử |
| 503 | charge_not_confirmed | Câu trả lời không được cung cấp: không thể xác nhận khoản trừ tiền; khoản giữ tiền đã được trả lại và chưa có tiền bị trừ | Nếu X-Should-Retry: true — thử lại sau số giây trong Retry-After; nếu false — trước tiên kiểm tra Request ID trong lịch sử |
| 504 | model_timeout | Mô hình không trả lời kịp thời; kết quả vẫn có thể xuất hiện sau | Không gửi lại yêu cầu trước khi kiểm tra Request ID trong lịch sử |
Các mã cho phản hồi của mô hình và việc xác minh kết quả (502, 503 và 504) hiện nêu mô hình hoặc yêu cầu: model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed và result_pending_check. Nếu mã của bạn so sánh error.code với các giá trị cũ, hãy thay bằng mã trong bảng; để biết mã cũ tương ứng với mã mới nào, hãy hỏi bộ phận hỗ trợ.
Khi nào nên thử lại yêu cầu
- Trước tiên, hãy xem X-Should-Retry: nếu là
false,result_pending_checkhoặcmodel_timeoutthì không tự động gửi lại. Tìm Request ID trong lịch sử của trang quản lý tài khoản: ở đó có kết quả và khoản trừ tiền. - Việc gửi lại an toàn khi nhận được X-Should-Retry: true: hãy chờ
Retry-Aftergiây. Với lỗi 5xx, chỉ mã trạng thái là chưa đủ: kết quả có thể đã có. Trước tiên, hãy kiểm tra lịch sử trong trang quản lý tài khoản hoặc liên hệ hỗ trợ và cung cấp Request ID. Điều này đặc biệt quan trọng với hình ảnh, video, âm nhạc và các bước tác vụ dài của tác nhân. - Thử lại sẽ không giúp giải quyết lỗi: 400, 401, 402, 403, 404 — trước hết hãy sửa yêu cầu, khóa hoặc số dư.
Giới hạn
Tần suất và số yêu cầu đồng thời được giới hạn cho toàn bộ tài khoản, không phải cho từng khóa riêng. Khi vượt giới hạn, bạn sẽ nhận được 429 rate_limit_exceeded với header Retry-After: 10. Nếu chính mô hình bị quá tải, bạn sẽ nhận được 503 model_overloaded với Retry-After: 30. Nếu cần xử lý tải lớn hơn, hãy liên hệ bộ phận hỗ trợ.
Hạn mức chi tiêu được đặt cho khóa: hạn mức tổng — 402 api_key_quota_exhausted, các cửa sổ 5 giờ, 1 ngày và 7 ngày — 429 usage_limit_reached. Xem thêm — Khóa và địa chỉ API.
Mô hình NVIDIA: hàng đợi
Bạn có thể lấy danh sách mô hình ngay cả khi số dư bằng không; để tạo nội dung, cần có số dư cho khoản giữ trước. Các mô hình NVIDIA (Nemotron và các mô hình khác) dùng chung một hàng đợi: khi tải cao, câu trả lời có thể đến muộn hơn hoặc có lỗi “mô hình tạm thời quá tải” kèm tiêu đề Retry-After — hãy thử lại sau thời gian được chỉ định. Giá nằm trong danh mục; tiền được trừ như với các mô hình khác.
Mô hình quyết định giới hạn kích thước: ngữ cảnh (số token có thể gửi) và độ dài câu trả lời tối đa. Các giới hạn này nằm trong danh mục.
Lịch sử và chi phí
Lịch sử và chi phí · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN
JWT ≠ sk-… · Đăng nhập và phiên