---
title: "Syncs book progress with Kavita. Will attempt to save the underlying reader position if possible."
method: PUT
path: "/api/Koreader/{apiKey}/syncs/progress"
tags: ["Koreader"]
---

# Syncs book progress with Kavita. Will attempt to save the underlying reader position if possible.

`PUT /api/Koreader/{apiKey}/syncs/progress`

## Request

- Base URL: `http://localhost:5000`
- URL: `http://localhost:5000/api/Koreader/{apiKey}/syncs/progress`
- Auth: API key in header `x-api-key`

## Path parameters

- `apiKey` string, required

## Request body

- KoreaderBookDto
  - `document` string, nullable
  - `device_id` string, nullable
  - `device` string, nullable
  - `percentage` number, float
  - `progress` string, nullable
  - `timestamp` integer

## Response `200`

OK

- KoreaderProgressUpdateDto
  - `document` string, nullable
  - `timestamp` string, date-time

## Changes

- **2025-08-30** `e28764d251f1`: 3 info
  - added the new optional request property `timestamp` (media type: application/json)
  - added the new optional request property `timestamp` (media type: text/json)
  - added the new optional request property `timestamp` (media type: application/*+json)
- **2025-06-20** `2adc83663fa2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kareadita/apis/kavita/changes/api/Koreader/:apiKey/syncs/progress/put.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)
