Error
Kode status HTTP dan body error yang dikembalikan API javinfo.
Permintaan gagal tidak ditagih. Anda hanya membayar 200.
Kode status
| Status | Arti |
|---|---|
400 | Permintaan tidak valid. Validasi gagal (parameter hilang, nilai di luar rentang, enum salah), permintaan /query atau /idols tanpa q maupun filter, atau id penyedia tidak dikenal. |
401 | Kunci API hilang atau tidak valid. |
402 | Kredit tidak cukup. Retry-After satu jam, petunjuk untuk klien otomatis; isi ulang langsung membuka blokir. Lihat tagihan. |
404 | Tidak ada hasil. Dikembalikan /movie, /random, /idols/{id}, /discover/similar, pencarian /analytics/idols/*, serta /resolve, /resolve/provenance, dan /resolve/streams. |
422 | Hanya /query: tidak ada penyedia yang mendukung kombinasi filter/pengurutan itu, penyedia yang disematkan tidak, atau Anda melewati halaman 50 tanpa q. Lihat Pemfilteran. |
429 | Terlalu banyak permintaan: batas per menit akun, atau jatah per jam penyedia langsung. Tunggu Retry-After. |
503 | Penyedia yang disematkan (providers=) melewati jatah per jam. Lepas sematan, atau tunggu Retry-After. |
499 | Klien menutup permintaan sebelum penyedia merespons. |
/query tidak pernah mengembalikan 404. Tanpa kecocokan hasilnya 200 dengan count: 0
dan array results kosong, gratis — periksa count. Pencarian nama (/idols/{id},
/discover/similar, resolve) mengembalikan 404 bila kode atau pemeran tidak ada.
Body error
Error handler memakai amplop oRPC: defined, code, status, dan message.
{
"defined": false,
"code": "NOT_FOUND",
"status": 404,
"message": "no title found for \"ZZZZ-99999\""
}400 menambahkan data.issues, satu per aturan yang gagal:
{
"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: amplop sama, status: 422, code: "BAD_REQUEST":
{
"defined": false,
"code": "BAD_REQUEST",
"status": 422,
"message": "does not support sort \"rating\""
}Penolakan di gerbang, sebelum handler, lebih pendek:
{ "error": "invalid api key" }Tanpa kunci sama sekali, permintaan lolos gerbang dan ditolak handler dengan body UNAUTHORIZED:
{
"defined": false,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Unauthorized"
}Pembatas per menit juga memakai bentuk pendek: { "error": "rate limit exceeded" }.
Jangan anggap code selalu ada — putuskan lewat kode status dan baca body.
Menunggu sebelum mencoba lagi
429, 402, dan 503 membawa Retry-After dalam detik. Patuhi:
if ([429, 402, 503].includes(res.status)) {
const wait = Number(res.headers.get('Retry-After') ?? 1);
await new Promise((r) => setTimeout(r, wait * 1000));
}Untuk 402, satu jam itu anjuran. Kalau ada manusia mengawasi, isi ulang dan coba lagi.