Kavita Koreader API
The endpoint to interface with Koreader's Progress Sync plugin.
The endpoint to interface with Koreader's Progress Sync plugin.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/kavita:kavita-koreader-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Kavita Koreader API
description: Kavita provides a set of APIs authenticated via an Auth Key passed in the `x-api-key` header. Generate an Auth Key under User Settings → Manage Auth Keys, paste it into the Authorize panel, and all Try It requests will include it. Assume all fields of a payload are required unless marked optional. Built against v0.9.1.15
license:
name: GPL-3.0
url: https://github.com/Kareadita/Kavita/blob/develop/LICENSE
version: 0.9.1.15
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:5000
security:
- AuthKey: []
tags:
- name: Koreader
description: The endpoint to interface with Koreader's Progress Sync plugin.
paths:
/api/Koreader/{apiKey}/users/auth:
get:
tags:
- Koreader
parameters:
- name: apiKey
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
summary: Get api koreader by api key users auth
x-summary-source: derived
operationId: getApiKoreaderByApiKeyUsersAuth
x-operation-id-source: derived
/api/Koreader/{apiKey}/syncs/progress:
put:
tags:
- Koreader
summary: Syncs book progress with Kavita.
parameters:
- name: apiKey
in: path
description: ''
required: true
schema:
type: string
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/KoreaderBookDto'
text/json:
schema:
$ref: '#/components/schemas/KoreaderBookDto'
application/*+json:
schema:
$ref: '#/components/schemas/KoreaderBookDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/KoreaderProgressUpdateDto'
application/json:
schema:
$ref: '#/components/schemas/KoreaderProgressUpdateDto'
text/json:
schema:
$ref: '#/components/schemas/KoreaderProgressUpdateDto'
operationId: putApiKoreaderByApiKeySyncsProgress
x-operation-id-source: derived
/api/Koreader/{apiKey}/syncs/progress/{ebookHash}:
get:
tags:
- Koreader
summary: Gets book progress from Kavita, if not found will return a 400
parameters:
- name: apiKey
in: path
description: ''
required: true
schema:
type: string
- name: ebookHash
in: path
description: ''
required: true
schema:
type: string
responses:
'200':
description: OK
operationId: getApiKoreaderByApiKeySyncsProgressByEbookHash
x-operation-id-source: derived
components:
schemas:
KoreaderProgressUpdateDto:
type: object
properties:
document:
type:
- string
- 'null'
timestamp:
type: string
format: date-time
additionalProperties: false
KoreaderBookDto:
type: object
properties:
document:
type:
- string
- 'null'
device_id:
type:
- string
- 'null'
device:
type:
- string
- 'null'
percentage:
type: number
format: float
progress:
type:
- string
- 'null'
timestamp:
type: integer
format: int64
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header