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
| Fitur | Method dan path | Keterangan |
|---|---|---|
| Home | GET /api/anime/home | Anime terbaru, ongoing, dan rekomendasi jika tersedia. |
| Jadwal | GET /api/anime/schedule | Jadwal rilis yang dikelompokkan per hari. |
| Anime tamat | GET /api/anime/complete-anime?page=1&limit=20 | Katalog anime tamat. |
| Anime ongoing | GET /api/anime/ongoing-anime?page=1&limit=20 | Katalog anime yang sedang tayang. |
| Daftar genre | GET /api/anime/genre | Slug dan nama genre yang ditemukan. |
| Anime per genre | GET /api/anime/genre/:slug?page=1&limit=20 | Anime pada genre tertentu, misalnya action. |
| Detail anime | GET /api/anime/anime/:slug | Metadata, sinopsis, genre, dan daftar episode. |
| Detail episode | GET /api/anime/episode/:slug | Detail episode, navigasi, pilihan server dan kualitas. |
| Pencarian | GET /api/anime/search/:keyword?page=1&limit=20 | Cari anime; encode spasi sebagai %20. |
| Batch | GET /api/anime/batch/:slug | Link batch yang tersedia pada halaman sumber. |
| Resolve server | GET /api/anime/server/:serverId | Proses ID server dari response detail episode. |
| All anime | GET /api/anime/unlimited?page=1&limit=20 | Katalog 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
- Panggil
GET /api/anime/episode/:slug. - Tampilkan pilihan dari
data.serversdandata.availableQualities. - Gunakan persis nilai
serverIddari response; jangan merakit ID sendiri. - Panggil
GET /api/anime/server/:serverIduntuk resolve pilihan. - Ikuti
type,streamUrl, danembedUrlyang 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.