ANZZZDECODING
Documentation / Anime API

README

Panduan endpoint katalog anime dan pemilihan server streaming Shiinime. Siap disalin atau diunduh sebagai Markdown.

Coba endpoint
Dokumentasi ini hanya mencakup data anime dan streaming publik. Panduan login, akun, profil, EXP, dan level tidak disertakan.

AnzzzDecoding — Shiinime Anime API

Base URL: https://shiinime.duckdns.org

Panduan ini hanya mencakup endpoint publik untuk data anime dan pilihan server/streaming. Login, akun, profil, EXP, level, favorit, dan riwayat tidak termasuk dalam panduan ini.

Mencoba API

Semua endpoint di bawah menggunakan HTTP GET dan mengembalikan JSON. Contoh:

curl "https://shiinime.duckdns.org/api/anime/home"

Endpoint katalog berhalaman menerima page (default 1) dan limit (default 20, maksimum 50).

Daftar endpoint

FiturMethod dan pathKeterangan
HomeGET /api/anime/homeAnime terbaru, ongoing, dan rekomendasi jika tersedia.
JadwalGET /api/anime/scheduleJadwal rilis yang dikelompokkan per hari.
Anime tamatGET /api/anime/complete-anime?page=1&limit=20Katalog anime tamat.
Anime ongoingGET /api/anime/ongoing-anime?page=1&limit=20Katalog anime yang sedang tayang.
Daftar genreGET /api/anime/genreSlug dan nama genre yang ditemukan.
Anime per genreGET /api/anime/genre/:slug?page=1&limit=20Anime pada genre tertentu, misalnya action.
Detail animeGET /api/anime/anime/:slugMetadata, sinopsis, genre, dan daftar episode.
Detail episodeGET /api/anime/episode/:slugDetail episode, navigasi, pilihan server dan kualitas.
PencarianGET /api/anime/search/:keyword?page=1&limit=20Cari anime; encode spasi sebagai %20.
BatchGET /api/anime/batch/:slugLink batch yang tersedia pada halaman sumber.
Resolve serverGET /api/anime/server/:serverIdProses ID server dari response detail episode.
All animeGET /api/anime/unlimited?page=1&limit=20Katalog ongoing berpaginasi, tidak diambil tanpa batas.

Contoh response katalog

{
  "success": true,
  "message": "Success",
  "data": [
    {
      "title": "Judul dari sumber",
      "slug": "slug-anime",
      "url": "https://otakudesu.blog/anime/slug-anime/",
      "poster": "https://otakudesu.blog/poster.jpg",
      "latestEpisode": "Episode 1"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "totalPages": null,
    "hasNext": true,
    "hasPrevious": false
  }
}

Nilai anime mengikuti sumber aktual. poster, latestEpisode, dan totalPages dapat bernilai null.

Pemilihan server dan streaming

  1. Panggil GET /api/anime/episode/:slug.
  2. Tampilkan pilihan dari data.servers dan data.availableQualities.
  3. Gunakan persis nilai serverId dari response; jangan merakit ID sendiri.
  4. Panggil GET /api/anime/server/:serverId untuk resolve pilihan.
  5. Ikuti type, streamUrl, dan embedUrl yang benar-benar dikembalikan.

Jika type adalah embed, URL tersebut adalah embed, bukan direct video.

Contoh response detail episode

{
  "success": true,
  "message": "Success",
  "data": {
    "title": "Episode 1",
    "servers": [{
      "serverId": "ID_OPAK_DARI_API",
      "serverName": "Nama server dari sumber",
      "quality": "720p",
      "isDefault": true
    }],
    "availableQualities": ["720p"],
    "defaultServerId": "ID_OPAK_DARI_API"
  },
  "pagination": null
}

Contoh response resolve

{
  "success": true,
  "message": "Success",
  "data": {
    "serverId": "ID_OPAK_DARI_API",
    "serverName": "Nama server dari sumber",
    "quality": "720p",
    "type": "embed",
    "streamUrl": null,
    "embedUrl": "URL_EMBED_DARI_RESPONSE_API"
  },
  "pagination": null
}

Contoh hanya menunjukkan bentuk JSON, bukan jaminan server, kualitas, atau URL tersedia. Gunakan data dan tautan sesuai izin dan ketentuan layanan sumber.

Format error

{
  "success": false,
  "message": "Anime not found",
  "data": null
}

Jika sumber tidak tersedia atau gagal diparse, API mengembalikan error dan tidak membuat data pengganti.