---
title: "Bookmarks a page against a Chapter"
method: POST
path: "/api/Reader/bookmark"
tags: ["Reader"]
---

# Bookmarks a page against a Chapter

`POST /api/Reader/bookmark`

## Request

- Base URL: `http://localhost:5000`
- URL: `http://localhost:5000/api/Reader/bookmark`
- Auth: API key in header `x-api-key`

This has a side effect of caching the chapter files to disk

## Request body

- BookmarkDto
  - `id` integer
  - `page` integer, required
  - `volumeId` integer, required
  - `seriesId` integer, required
  - `chapterId` integer, required
  - `imageOffset` integer
  - `xPath` string, nullable
  - `series` SeriesDto
    - `id` integer
    - `name` string, nullable
    - `originalName` string, nullable
    - `localizedName` string, nullable
    - `sortName` string, nullable
    - `pages` integer
    - `coverImageLocked` boolean
    - `lastChapterAdded` string, date-time
    - `lastChapterAddedUtc` string, date-time
    - `userRating` number, float
    - `hasUserRated` boolean
    - `totalReads` integer
    - `pagesRead` integer
    - `latestReadDate` string, date-time
    - `format` 0 | 1 | 2 | 3 | 4: Members: - `0` — Image - `1` — Archive - `2` — Unknown - `3` — EPUB (Epub) - `4` — PDF (Pdf)
    - `created` string, date-time
    - `sortNameLocked` boolean
    - `localizedNameLocked` boolean
    - `nameLocked` boolean
    - `wordCount` integer
    - `libraryId` integer
    - `libraryName` string, nullable
    - `minHoursToRead` integer
    - `maxHoursToRead` integer
    - `avgHoursToRead` number, float
    - `folderPath` string, nullable
    - `lowestFolderPath` string, nullable
    - `lastFolderScanned` string, date-time
    - `dontMatch` boolean
    - `isBlacklisted` boolean
    - `isStandAlone` boolean
    - `metadataProviderOverride` 2 | 3 | 4: Members: - `2` — Hardcover - `3` — Mangabaka - `4` — ComicBookRoundup
    - `coverImage` string, nullable
    - `primaryColor` string, nullable
    - `secondaryColor` string, nullable
    - `aniListId` integer
    - `malId` integer
    - `hardcoverId` integer
    - `metronId` integer
    - `comicVineId` string, nullable
    - `mangaBakaId` integer
    - `mangaBakaEditionId` string, nullable
    - `cbrId` integer
  - `chapterTitle` string, nullable

## Response `200`

OK

## Changes

- **2026-08-19** `8f6bc4f38f06`: 3 breaking, 3 info
  - the `series/mangaBakaId` request property format changed from `int64` to `int32` (media type: application/json)
  - the `series/mangaBakaId` request property format changed from `int64` to `int32` (media type: text/json)
  - the `series/mangaBakaId` request property format changed from `int64` to `int32` (media type: application/*+json)
  - added the new optional request property `series/metadataProviderOverride` (media type: application/json)
  - …2 more
- **2026-07-23** `751a92d6effc`: 9 info
  - added the new optional request property `series/isStandAlone` (media type: application/json)
  - added the new optional request property `series/isStandAlone` (media type: text/json)
  - added the new optional request property `series/isStandAlone` (media type: application/*+json)
  - added the new optional request property `series/mangaBakaEditionId` (media type: application/json)
  - …5 more
- **2026-05-19** `f23d18415096`: 3 info
  - added the new optional request property `series/cbrId` (media type: application/json)
  - added the new optional request property `series/cbrId` (media type: text/json)
  - added the new optional request property `series/cbrId` (media type: application/*+json)
- …earlier changes not shown

[Operation history](https://skmtc.dev/kareadita/apis/kavita/changes/api/Reader/bookmark/post.md)

---

[API](https://skmtc.dev/kareadita/apis/kavita.md) - [All operations](https://skmtc.dev/kareadita/apis/kavita/llms.txt) - [OpenAPI document](https://skmtc.dev/kareadita/apis/kavita/revisions/d266465eeb67?raw)
