Lewati ke konten
javinfo

Error

Kode status HTTP dan body error yang dikembalikan API javinfo.

Permintaan gagal tidak ditagih. Anda hanya membayar 200.

Kode status

StatusArti
400Permintaan 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.
401Kunci API hilang atau tidak valid.
402Kredit tidak cukup. Retry-After satu jam, petunjuk untuk klien otomatis; isi ulang langsung membuka blokir. Lihat tagihan.
404Tidak ada hasil. Dikembalikan /movie, /random, /idols/{id}, /discover/similar, pencarian /analytics/idols/*, serta /resolve, /resolve/provenance, dan /resolve/streams.
422Hanya /query: tidak ada penyedia yang mendukung kombinasi filter/pengurutan itu, penyedia yang disematkan tidak, atau Anda melewati halaman 50 tanpa q. Lihat Pemfilteran.
429Terlalu banyak permintaan: batas per menit akun, atau jatah per jam penyedia langsung. Tunggu Retry-After.
503Penyedia yang disematkan (providers=) melewati jatah per jam. Lepas sematan, atau tunggu Retry-After.
499Klien 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.

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.

Di halaman ini