Chuyển đến nội dung
javinfo

Lỗi

Mã trạng thái HTTP và nội dung lỗi do API javinfo trả về.

Yêu cầu thất bại không bị tính phí. Bạn chỉ trả cho 200.

Mã trạng thái

Trạng tháiÝ nghĩa
400Yêu cầu không hợp lệ. Kiểm tra đầu vào thất bại (thiếu tham số, giá trị ngoài phạm vi, enum sai), yêu cầu /query hoặc /idols không có q lẫn bộ lọc, hoặc id nhà cung cấp không tồn tại.
401Thiếu khóa API hoặc khóa không hợp lệ.
402Không đủ tín dụng. Retry-After là một giờ, gợi ý cho máy khách tự động; nạp tiền là thông ngay. Xem thanh toán.
404Không có kết quả. Do /movie, /random, /idols/{id}, /discover/similar, các tra cứu /analytics/idols/*, và /resolve, /resolve/provenance, /resolve/streams trả về.
422Chỉ /query: không nhà cung cấp nào hỗ trợ tổ hợp lọc/sắp xếp đó, nhà cung cấp đã ghim thì không, hoặc bạn vượt trang 50 mà không có q. Xem Lọc.
429Quá nhiều yêu cầu: giới hạn mỗi phút của tài khoản, hoặc hạn mức theo giờ của nhà cung cấp trực tiếp. Chờ hết Retry-After.
503Nhà cung cấp đã ghim (providers=) vượt hạn mức theo giờ. Bỏ ghim, hoặc chờ hết Retry-After.
499Máy khách đóng yêu cầu trước khi nhà cung cấp phản hồi.

/query không bao giờ trả 404. Không khớp gì là 200 với count: 0 và mảng results rỗng, không tốn phí — kiểm tra count. Tra cứu theo tên (/idols/{id}, /discover/similar, resolve) trả 404 khi thiếu mã hoặc diễn viên.

Nội dung lỗi

Lỗi từ handler dùng envelope oRPC: defined, code, status và message.

{
  "defined": false,
  "code": "NOT_FOUND",
  "status": 404,
  "message": "no title found for \"ZZZZ-99999\""
}

400 thêm data.issues, một mục cho mỗi quy tắc thất bại:

{
  "defined": false,
  "code": "BAD_REQUEST",
  "status": 400,
  "message": "Input validation failed",
  "data": {
    "issues": [
      {
        "expected": "string",
        "code": "invalid_type",
        "path": ["q"],
        "message": "Invalid input: expected string, received undefined"
      }
    ]
  }
}

422: cùng envelope, status: 422, code: "BAD_REQUEST":

{
  "defined": false,
  "code": "BAD_REQUEST",
  "status": 422,
  "message": "does not support sort \"rating\""
}

Yêu cầu bị chặn ở cổng, trước handler, thì ngắn hơn:

{ "error": "invalid api key" }

Không có khóa nào thì yêu cầu qua cổng và bị handler từ chối với body UNAUTHORIZED:

{
  "defined": false,
  "code": "UNAUTHORIZED",
  "status": 401,
  "message": "Unauthorized"
}

Bộ giới hạn mỗi phút cũng dùng dạng ngắn: { "error": "rate limit exceeded" }. Đừng cho rằng code luôn có — rẽ nhánh theo mã trạng thái và đọc nội dung.

Chờ trước khi thử lại

429, 402 và 503 kèm Retry-After tính bằng giây. Tôn trọng nó:

if ([429, 402, 503].includes(res.status)) {
  const wait = Number(res.headers.get('Retry-After') ?? 1);
  await new Promise((r) => setTimeout(r, wait * 1000));
}

Với 402, một giờ đó chỉ là gợi ý. Nếu có người theo dõi, nạp tiền và thử lại ngay.

Trong trang này