tài liệu
Trợ giúp

Lỗi và giới hạn

Markdown

Mã 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.code và 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_error hoặc server_error).
  • error.request_id (trong Anthropic là request_id ở cấp cao nhất), tiêu đề X-Request-ID và 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à status ABORTED: 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_TIMEOUT hoặc RESULT_PENDING_CHECK).
  • Phản hồi theo định dạng OpenAI còn có các trường cấp cao nhất code và 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. …"
}

Mã lỗi

HTTPLớp lỗi (reason)Điều gì đã xảy raCách xử lý
400invalid_requestYê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ừ
400context_length_exceededYêu cầu dài hơn cửa sổ ngữ cảnh của mô hìnhRút ngắn lịch sử hoặc chọn mô hình có cửa sổ ngữ cảnh lớn hơn
400content_policy_violationYêu cầu bị từ chối theo quy tắc của mô hìnhDiễn đạt lại yêu cầu
401invalid_api_keyThiế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
401api_key_disabledKhóa đã bị vô hiệu hóaBật khóa hoặc tạo khóa mới
402insufficient_balance, insufficient_quotaSố 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
402api_key_quota_exhaustedĐã dùng hết hạn mức chi tiêu tổng của khóaTăng hạn mức của khóa trong trang quản lý tài khoản
402payment_disputedTài khoản có khoản nợ từ giao dịch thanh toán bị tranh chấpTạ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ợ
403api_key_expiredKhóa đã hết hạnTạo khóa mới
403account_inactiveTài khoản của bạn đã bị vô hiệu hóaLiên hệ bộ phận hỗ trợ
403permission_deniedKhó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
404model_not_foundKhông có mô hình nàyĐối chiếu ID với /v1/models
404unsupported_endpointMô hình không hoạt động với định dạng nàyChọn định dạng hoặc mô hình khác
404not_foundKhô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
409duplicate_requestThao tác có cùng khóa idempotency đã được chấp nhận và có thể đã hoàn tấtKiểm tra kết quả của thao tác đầu tiên, không gửi thao tác mới
409not_ready, video_not_readyVideo hoặc tác vụ khác chưa sẵn sàngKiểm tra trạng thái sau
409, 503result_pending_checkChú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_progressKhô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}
410model_retiredMô hình đã ngừng được cung cấpChọn phiên bản mới trong GET /v1/models
413request_too_largeNội dung yêu cầu quá lớnGiảm kích thước tệp hoặc rút ngắn lịch sử
429rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_fullCó quá nhiều yêu cầu hoặc yêu cầu đồng thời từ tài khoản của bạnHãy chờ (tiêu đề Retry-After, thường là 10 giây) rồi thử lại
429usage_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
500internal_errorLỗi AilootLiên hệ bộ phận hỗ trợ và cung cấp Request ID
502invalid_model_response, empty_response, incomplete_responseMô 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.
502result_not_deliveredKế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ạiCó thể gửi lại yêu cầu
503model_overloadedMô hình tạm thời quá tảiNế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ử
503model_unavailableMô hình tạm thời không khả dụngChọ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ử
503service_unavailableSự cố tạm thời phía AilootNế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ử
503charge_not_confirmedCâ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ử
504model_timeoutMô hình không trả lời kịp thời; kết quả vẫn có thể xuất hiện sauKhô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_check hoặc model_timeout thì 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-After giâ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

Còn câu hỏi? Hãy gửi Request ID và mô tả — chúng tôi sẽ giúp tìm hiểu.Liên hệ hỗ trợ