{ data, error, request, response }; pass flat parameters first and { client } second.
Book read progress
Progress lifecycle
A book with noreadProgress is unread. Setting page while completed is false makes it in progress; setting completed: true makes it read. Deleting progress removes the server record and returns the book to unread. The page value is one-based: page 1 is the first page.
Mark a book as read
readProgressUpdateDto is the generated body parameter. page can be omitted when completion is explicit:
Update page progress
completed can be omitted; Komga determines it from the page passed and the book’s total page count:
Mark a book as unread
Series read progress
These operations update every book in the series. They are useful for an explicit “mark all” action; they do not preserve each book’s previous page position:OPDS progression
OPDS progression stores an exact Readium position and device metadata. Use it for EPUB readers; use page-based progress for comics and manga.getBookProgression can return no position when the user has never opened the book.
Get a position
Save a position
r2Progression requires device, locator, and an ISO timestamp. The locations object requires fragments, even when it is empty; position and totalProgression are optional:
modified timestamp and only overwrite it when the local position is newer according to your application’s conflict policy.
Workflows
Build a reading tracker
The currentgetBooks operation requires a bookSearch object. The lifecycle fields on BookDto make it possible to compute all three states without a second request:
Resume in-progress books
BookDto.readProgress includes the current page, total page count is in book.media.pagesCount, lastModified tracks progress updates, and readDate is the completion timestamp when available:
Mark books in a series as read
UsegetBooks with a seriesId condition so pagination and filtering use the current list operation. BookDto.number is numeric, unlike the display string in metadata:
Filter by read status
Read status values areUNREAD, IN_PROGRESS, and READ. Put the condition inside bookSearch; the removed top-level readStatus body field is not a 1.0 parameter:
Sync a position across devices
Compare timestamps before writing a local position so an older mobile event does not overwrite a newer server position:Handle failures
Generated calls do not throw for an HTTP error by default. Inspecterror and response; a 401 means authentication is missing or invalid, while a 403 means the user lacks the operation’s permission:
unwrap when your application prefers exceptions. It throws KomgaApiError for an unsuccessful response; see Quickstart for the throwing boundary.
Next steps
Books
Learn more about book operations.
Series
Manage series and their metadata.