Skip to main content

Manga API Guide

The client.manga service provides access to MyAnimeList manga metadata, rankings, and user reading list management.

API Reference

These methods interact with the official MyAnimeList Manga Endpoints.

Searching Manga​

Search for manga by title or keyword using getMangaList:

val searchResult = client.manga.getMangaList(
query = "Berserk",
limit = 10,
offset = 0
)

searchResult.data.forEach { manga ->
println("${manga.id}: ${manga.title}")
}

Fetching Manga Details​

Fetch complete information for a specific manga by its ID:

import io.github.rribeiro5.koani.manga.MangaField

val manga = client.manga.getMangaDetails(
mangaId = 2,
fields = listOf(
MangaField.SYNOPSIS,
MangaField.MEAN,
MangaField.GENRES,
MangaField.NUM_CHAPTERS,
MangaField.NUM_VOLUMES
)
)

println("Title: ${manga.title}")
println("Score: ${manga.mean}")
println("Chapters: ${manga.numChapters}")

Manga Rankings​

Query top-ranked manga by category using MangaRankingType:

import io.github.rribeiro5.koani.manga.MangaRankingType

val topManga = client.manga.getMangaRanking(
rankingType = MangaRankingType.ALL,
limit = 5
)

topManga.data.forEach { ranked ->
println("#${ranked.ranking.rank}: ${ranked.node.title}")
}
  • Available Ranking Types: ALL, MANGA, NOVELS, ONESHOTS, DOUJIN, MANHWA, MANHUA, BY_POPULARITY, FAVORITE.
  • API Endpoint: GET /manga/ranking

User Manga List Management​

Authentication Required

Updating or reading user reading lists requires an authenticated session.

Get User Manga List​

Fetch a user's manga reading list:

import io.github.rribeiro5.koani.manga.UserMangaListStatusType

val userMangaList = client.manga.getUserMangaList(
userName = "@me", // or specific username
status = UserMangaListStatusType.READING,
limit = 20
)

userMangaList.data.forEach { item ->
println("${item.node.title} - Chapters Read: ${item.listStatus?.numChaptersRead}")
}

Update Manga List Item​

Add or update a manga entry's status, chapters read, or score:

import io.github.rribeiro5.koani.manga.UserMangaListStatus

val updatedStatus = client.manga.updateUserMangaListStatus(
mangaId = 2,
status = UserMangaListStatus.READING,
score = 10,
numChaptersRead = 150,
numVolumesRead = 18
)

println("Updated status: ${updatedStatus.status}, Chapters Read: ${updatedStatus.numChaptersRead}")

Delete Manga List Item​

Remove an entry from the user's manga reading list:

client.manga.deleteUserMangaListItem(mangaId = 2)