{"openapi":"3.0.3","info":{"title":"Murunime Public API","version":"1.0.0","description":"API gratis, read-only, untuk katalog anime & komik Murunime.\n\n- **Autentikasi:** tidak diperlukan.\n- **CORS:** terbuka (`*`).\n- **Rate limit:** 120 permintaan/menit/IP (balas `429` + header `Retry-After`).\n- **Amplop:** sukses `{ \"ok\": true, \"data\": ... }`, error `{ \"ok\": false, \"error\": { code, message } }`.\n- URL gambar pada respons sudah berupa proxy siap-pakai.\n\n**Membangun dengan AI?** Tempel URL spesifikasi ini — `https://murunime.online/openapi.json` — ke asisten AI (Claude, ChatGPT, dsb.) untuk otomatis membuat client SDK, tipe data, atau integrasi.\n\nMohon cache respons & gunakan secara wajar.","contact":{"name":"Murunime","url":"https://murunime.online/"},"license":{"name":"Penggunaan wajar"}},"servers":[{"url":"https://murunime.online/api/v1","description":"Production"}],"tags":[{"name":"Anime","description":"Katalog & streaming anime"},{"name":"Komik","description":"Katalog & baca komik / manga / manhwa"}],"paths":{"/anime":{"get":{"tags":["Anime"],"summary":"Daftar anime","operationId":"listAnime","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["ongoing","completed"],"default":"ongoing"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Nomor halaman"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"status":{"type":"string"},"page":{"type":"integer"},"totalPages":{"type":"integer"},"hasNext":{"type":"boolean"},"list":{"type":"array","items":{"$ref":"#/components/schemas/AnimeItem"}}}}}}}}}}}},"/anime/search":{"get":{"tags":["Anime"],"summary":"Cari anime","operationId":"searchAnime","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Kata kunci pencarian"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"query":{"type":"string"},"list":{"type":"array","items":{"$ref":"#/components/schemas/AnimeItem"}}}}}}}}}}}},"/anime/genres":{"get":{"tags":["Anime"],"summary":"Daftar genre anime","operationId":"animeGenres","responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"list":{"type":"array","items":{"$ref":"#/components/schemas/Genre"}}}}}}}}}}}},"/anime/genres/{genreId}":{"get":{"tags":["Anime"],"summary":"Anime per genre","operationId":"animeByGenre","parameters":[{"name":"genreId","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Nomor halaman"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"genre":{"type":"string"},"page":{"type":"integer"},"list":{"type":"array","items":{"$ref":"#/components/schemas/AnimeItem"}}}}}}}}}}}},"/anime/{animeId}":{"get":{"tags":["Anime"],"summary":"Detail anime + daftar episode","operationId":"getAnime","parameters":[{"name":"animeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"$ref":"#/components/schemas/AnimeDetail"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/episode/{episodeId}":{"get":{"tags":["Anime"],"summary":"Sumber streaming & unduhan episode","operationId":"getEpisode","parameters":[{"name":"episodeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"$ref":"#/components/schemas/EpisodeDetail"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/server/{serverId}":{"get":{"tags":["Anime"],"summary":"Resolve server/kualitas ke URL embed","operationId":"getServer","parameters":[{"name":"serverId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"url":{"type":"string","format":"uri"}}}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/komik":{"get":{"tags":["Komik"],"summary":"Daftar komik","operationId":"listKomik","parameters":[{"name":"sort","in":"query","schema":{"type":"string","enum":["popular","latest","lokal"],"default":"popular"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Nomor halaman"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"sort":{"type":"string"},"page":{"type":"integer"},"totalPages":{"type":"integer"},"hasNext":{"type":"boolean"},"list":{"type":"array","items":{"$ref":"#/components/schemas/KomikItem"}}}}}}}}}}}},"/komik/search":{"get":{"tags":["Komik"],"summary":"Cari komik","operationId":"searchKomik","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Kata kunci pencarian"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"query":{"type":"string"},"list":{"type":"array","items":{"$ref":"#/components/schemas/KomikItem"}}}}}}}}}}}},"/komik/genres":{"get":{"tags":["Komik"],"summary":"Daftar genre komik","operationId":"komikGenres","responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"list":{"type":"array","items":{"$ref":"#/components/schemas/Genre"}}}}}}}}}}}},"/komik/genres/{genreId}":{"get":{"tags":["Komik"],"summary":"Komik per genre","operationId":"komikByGenre","parameters":[{"name":"genreId","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1},"description":"Nomor halaman"}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"type":"object","properties":{"genre":{"type":"string"},"page":{"type":"integer"},"hasNext":{"type":"boolean"},"list":{"type":"array","items":{"$ref":"#/components/schemas/KomikItem"}}}}}}}}}}}},"/komik/chapter/{chapterId}":{"get":{"tags":["Komik"],"summary":"Halaman-halaman satu chapter","operationId":"getChapter","parameters":[{"name":"chapterId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"$ref":"#/components/schemas/ChapterData"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}},"/komik/{mangaId}":{"get":{"tags":["Komik"],"summary":"Detail komik + daftar chapter","operationId":"getKomik","parameters":[{"name":"mangaId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sukses","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","example":true},"data":{"$ref":"#/components/schemas/KomikDetail"}}}}}},"404":{"$ref":"#/components/responses/Error"}}}}},"components":{"schemas":{"Genre":{"type":"object","properties":{"id":{"type":"string","example":"action"},"title":{"type":"string","example":"Action"}}},"AnimeItem":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"poster":{"type":"string","format":"uri","description":"URL proxy gambar siap-pakai"},"episodes":{"type":"string"},"score":{"type":"string"},"status":{"type":"string"}}},"AnimeDetail":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"japanese":{"type":"string"},"poster":{"type":"string","format":"uri"},"score":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"episodes":{"type":"string"},"duration":{"type":"string"},"aired":{"type":"string"},"studios":{"type":"string"},"producers":{"type":"string"},"synopsis":{"type":"string"},"genres":{"type":"array","items":{"$ref":"#/components/schemas/Genre"}},"episodeList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}}}}}},"EpisodeDetail":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"animeId":{"type":"string"},"stream":{"type":"string","format":"uri","description":"URL embed default"},"servers":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string","example":"720p"},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}}},"download":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"size":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"host":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}}},"prev":{"type":"object","nullable":true,"properties":{"id":{"type":"string"}}},"next":{"type":"object","nullable":true,"properties":{"id":{"type":"string"}}}}},"KomikItem":{"type":"object","properties":{"id":{"type":"string","description":"ID komik (sebagian diawali `km:`)"},"title":{"type":"string"},"cover":{"type":"string","format":"uri"},"type":{"type":"string","example":"manga"},"status":{"type":"string"},"lastChapter":{"type":"string"}}},"KomikDetail":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"altTitle":{"type":"string"},"cover":{"type":"string","format":"uri"},"type":{"type":"string"},"status":{"type":"string"},"year":{"type":"string"},"description":{"type":"string"},"genres":{"type":"array","items":{"type":"string"}},"readVia":{"type":"string","enum":["primary","mirror"],"description":"Sumber baca yang dipakai untuk judul ini (`mirror` = cermin cadangan yang lebih stabil)."},"chapters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chapter":{"type":"string"},"title":{"type":"string"},"date":{"type":"string"}}}}}},"ChapterData":{"type":"object","properties":{"id":{"type":"string"},"mangaId":{"type":"string"},"mangaTitle":{"type":"string"},"chapter":{"type":"string"},"cover":{"type":"string","format":"uri"},"pages":{"type":"array","items":{"type":"string","format":"uri"},"description":"URL gambar halaman, urut, siap dipasang di <img>"},"prev":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"chapter":{"type":"string"}}},"next":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"chapter":{"type":"string"}}},"chapters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"chapter":{"type":"string"}}}}}},"Error":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"error":{"type":"object","properties":{"code":{"type":"integer","example":404},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}