Kavita Reading Profile API
The ReadingProfile API from Kavita — 12 operation(s) for readingprofile.
The ReadingProfile API from Kavita — 12 operation(s) for readingprofile.
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-readingprofile-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 Reading Profile 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: ReadingProfile
paths:
/api/reading-profile/all:
get:
tags:
- ReadingProfile
summary: Gets all non-implicit reading profiles for a user
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: getApiReadingProfileAll
x-operation-id-source: derived
/api/reading-profile/{libraryId}/{seriesId}:
get:
tags:
- ReadingProfile
summary: Returns the ReadingProfile that should be applied to the given series, walks up…
parameters:
- name: libraryId
in: path
description: ''
required: true
schema:
type: integer
format: int32
- name: seriesId
in: path
description: ''
required: true
schema:
type: integer
format: int32
- name: skipImplicit
in: query
description: ''
schema:
type: boolean
- name: deviceId
in: query
description: Defaults to currently active device
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: getApiReadingProfileByLibraryIdBySeriesId
x-operation-id-source: derived
/api/reading-profile/series:
get:
tags:
- ReadingProfile
summary: Returns all Reading Profiles bound to a series
parameters:
- name: seriesId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: getApiReadingProfileSeries
x-operation-id-source: derived
post:
tags:
- ReadingProfile
summary: Update the implicit reading profile for a series, creates one if none exists
description: Any modification to the reader settings during reading will create an implicit profile. Use "update-parent" to save to the bound series profile.
parameters:
- name: libraryId
in: query
description: ''
schema:
type: integer
format: int32
- name: seriesId
in: query
description: ''
schema:
type: integer
format: int32
- name: deviceId
in: query
description: Defaults to the currently active device
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: postApiReadingProfileSeries
x-operation-id-source: derived
/api/reading-profile/library:
get:
tags:
- ReadingProfile
summary: Returns all the Reading profiles bound to the library
parameters:
- name: libraryId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: getApiReadingProfileLibrary
x-operation-id-source: derived
/api/reading-profile/create:
post:
tags:
- ReadingProfile
summary: Creates a new reading profile for the current user
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: postApiReadingProfileCreate
x-operation-id-source: derived
/api/reading-profile/promote:
post:
tags:
- ReadingProfile
summary: Promotes the implicit profile to a user profile.
parameters:
- name: profileId
in: query
description: ''
schema:
type: integer
format: int32
- name: deviceId
in: query
description: Defaults to the currently active device
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: postApiReadingProfilePromote
x-operation-id-source: derived
/api/reading-profile/update-parent:
post:
tags:
- ReadingProfile
summary: Updates the non-implicit reading profile for the given series, and removes…
parameters:
- name: libraryId
in: query
description: ''
schema:
type: integer
format: int32
- name: seriesId
in: query
description: ''
schema:
type: integer
format: int32
- name: deviceId
in: query
description: Defaults to currently active device
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: postApiReadingProfileUpdateParent
x-operation-id-source: derived
/api/reading-profile:
post:
tags:
- ReadingProfile
summary: Updates the given reading profile, must belong to the current user
description: This does not update connected series and libraries.
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
application/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
text/json:
schema:
$ref: '#/components/schemas/UserReadingProfileDto'
operationId: postApiReadingProfile
x-operation-id-source: derived
delete:
tags:
- ReadingProfile
summary: Deletes the given profile, requires the profile to belong to the logged-in user
parameters:
- name: profileId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiReadingProfile
x-operation-id-source: derived
/api/reading-profile/series/{seriesId}:
post:
tags:
- ReadingProfile
summary: Sets the reading profile for a given series, removes the old one
parameters:
- name: seriesId
in: path
description: ''
required: true
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
type: array
items:
type: integer
format: int32
text/json:
schema:
type: array
items:
type: integer
format: int32
application/*+json:
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: OK
operationId: postApiReadingProfileSeriesBySeriesId
x-operation-id-source: derived
delete:
tags:
- ReadingProfile
summary: Clears the reading profile for the given series for the currently logged-in user
parameters:
- name: seriesId
in: path
description: ''
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiReadingProfileSeriesBySeriesId
x-operation-id-source: derived
/api/reading-profile/library/{libraryId}:
post:
tags:
- ReadingProfile
summary: Sets the reading profile for a given library, removes the old one
parameters:
- name: libraryId
in: path
description: ''
required: true
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
type: array
items:
type: integer
format: int32
text/json:
schema:
type: array
items:
type: integer
format: int32
application/*+json:
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: OK
operationId: postApiReadingProfileLibraryByLibraryId
x-operation-id-source: derived
delete:
tags:
- ReadingProfile
summary: Clears the reading profile for the given library for the currently logged-in…
parameters:
- name: libraryId
in: path
description: ''
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiReadingProfileLibraryByLibraryId
x-operation-id-source: derived
/api/reading-profile/bulk:
post:
tags:
- ReadingProfile
summary: Assigns the reading profile to all passes series, and deletes their implicit…
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/BulkSetSeriesProfiles'
text/json:
schema:
$ref: '#/components/schemas/BulkSetSeriesProfiles'
application/*+json:
schema:
$ref: '#/components/schemas/BulkSetSeriesProfiles'
responses:
'200':
description: OK
operationId: postApiReadingProfileBulk
x-operation-id-source: derived
/api/reading-profile/set-devices:
post:
tags:
- ReadingProfile
summary: Set the assigned devices for a reading profile
parameters:
- name: profileId
in: query
description: ''
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
type: array
items:
type: integer
format: int32
text/json:
schema:
type: array
items:
type: integer
format: int32
application/*+json:
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: OK
operationId: postApiReadingProfileSetDevices
x-operation-id-source: derived
components:
schemas:
BreakPoint:
enum:
- 0
- 768
- 1280
- 1440
type: integer
description: 'Members:
- `0` — Never
- `768` — Mobile
- `1280` — Tablet
- `1440` — Desktop'
format: int32
x-enum-varnames:
- Never
- Mobile
- Tablet
- Desktop
x-enum-descriptions:
- Never
- Mobile
- Tablet
- Desktop
ReaderMode:
enum:
- 0
- 1
- 2
type: integer
description: 'Members:
- `0` — Left and Right (LeftRight)
- `1` — Up and Down (UpDown)
- `2` — Webtoon'
format: int32
x-enum-varnames:
- LeftRight
- UpDown
- Webtoon
x-enum-descriptions:
- Left and Right
- Up and Down
- Webtoon
LayoutMode:
enum:
- 1
- 2
- 3
type: integer
description: 'Members:
- `1` — Single
- `2` — Double
- `3` — Double (manga) (DoubleReversed)'
format: int32
x-enum-varnames:
- Single
- Double
- DoubleReversed
x-enum-descriptions:
- Single
- Double
- Double (manga)
BulkSetSeriesProfiles:
type: object
properties:
profileIds:
type:
- array
- 'null'
items:
type: integer
format: int32
seriesIds:
type:
- array
- 'null'
items:
type: integer
format: int32
additionalProperties: false
UserReadingProfileDto:
required:
- allowAutomaticWebtoonReaderDetection
- autoCloseMenu
- backgroundColor
- bookReaderDisableBookmarkIcon
- bookReaderFontFamily
- bookReaderFontSize
- bookReaderImmersiveMode
- bookReaderLayoutMode
- bookReaderLineSpacing
- bookReaderMargin
- bookReaderReadingDirection
- bookReaderTapToPaginate
- bookReaderThemeName
- bookReaderWritingStyle
- emulateBook
- layoutMode
- pageSplitOption
- pdfScrollMode
- pdfSpreadMode
- pdfTheme
- readerMode
- readingDirection
- scalingOption
- showScreenHints
- swipeToPaginate
type: object
properties:
id:
type: integer
format: int32
userId:
type: integer
format: int32
name:
type:
- string
- 'null'
kind:
$ref: '#/components/schemas/ReadingProfileKind'
deviceIds:
type:
- array
- 'null'
items:
type: integer
format: int32
seriesIds:
type:
- array
- 'null'
items:
type: integer
format: int32
libraryIds:
type:
- array
- 'null'
items:
type: integer
format: int32
readingDirection:
$ref: '#/components/schemas/ReadingDirection'
scalingOption:
$ref: '#/components/schemas/ScalingOption'
pageSplitOption:
$ref: '#/components/schemas/PageSplitOption'
readerMode:
$ref: '#/components/schemas/ReaderMode'
autoCloseMenu:
type: boolean
showScreenHints:
type: boolean
emulateBook:
type: boolean
layoutMode:
$ref: '#/components/schemas/LayoutMode'
backgroundColor:
minLength: 1
type: string
swipeToPaginate:
type: boolean
allowAutomaticWebtoonReaderDetection:
type: boolean
widthOverride:
type:
- integer
- 'null'
format: int32
disableWidthOverride:
$ref: '#/components/schemas/BreakPoint'
bookReaderMargin:
type: integer
format: int32
bookReaderLineSpacing:
type: integer
format: int32
bookReaderFontSize:
type: integer
format: int32
bookReaderFontFamily:
minLength: 1
type: string
bookReaderTapToPaginate:
type: boolean
bookReaderReadingDirection:
$ref: '#/components/schemas/ReadingDirection'
bookReaderWritingStyle:
$ref: '#/components/schemas/WritingStyle'
bookReaderThemeName:
minLength: 1
type: string
bookReaderLayoutMode:
$ref: '#/components/schemas/BookPageLayoutMode'
bookReaderImmersiveMode:
type: boolean
bookReaderDisableBookmarkIcon:
type: boolean
pdfTheme:
$ref: '#/components/schemas/PdfTheme'
pdfScrollMode:
$ref: '#/components/schemas/PdfScrollMode'
pdfSpreadMode:
$ref: '#/components/schemas/PdfSpreadMode'
additionalProperties: false
PdfScrollMode:
enum:
- 0
- 1
- 3
type: integer
description: 'Members:
- `0` — Vertical
- `1` — Horizontal
- `3` — Page'
format: int32
x-enum-varnames:
- Vertical
- Horizontal
- Page
x-enum-descriptions:
- Vertical
- Horizontal
- Page
ScalingOption:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — FitToHeight
- `1` — FitToWidth
- `2` — Original
- `3` — Automatic'
format: int32
x-enum-varnames:
- FitToHeight
- FitToWidth
- Original
- Automatic
x-enum-descriptions:
- FitToHeight
- FitToWidth
- Original
- Automatic
PdfSpreadMode:
enum:
- 0
- 1
- 2
type: integer
description: 'Members:
- `0` — None
- `1` — Odd
- `2` — Even'
format: int32
x-enum-varnames:
- None
- Odd
- Even
x-enum-descriptions:
- None
- Odd
- Even
PdfTheme:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — Dark
- `1` — Light'
format: int32
x-enum-varnames:
- Dark
- Light
x-enum-descriptions:
- Dark
- Light
BookPageLayoutMode:
enum:
- 0
- 1
- 2
type: integer
description: 'Members:
- `0` — Default
- `1` — 1 Column (Column1)
- `2` — 2 Column (Column2)'
format: int32
x-enum-varnames:
- Default
- Column1
- Column2
x-enum-descriptions:
- Default
- 1 Column
- 2 Column
WritingStyle:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — Horizontal
- `1` — Vertical'
format: int32
x-enum-varnames:
- Horizontal
- Vertical
x-enum-descriptions:
- Horizontal
- Vertical
ReadingDirection:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — LeftToRight
- `1` — RightToLeft'
format: int32
x-enum-varnames:
- LeftToRight
- RightToLeft
x-enum-descriptions:
- LeftToRight
- RightToLeft
PageSplitOption:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — SplitLeftToRight
- `1` — SplitRightToLeft
- `2` — NoSplit
- `3` — FitSplit'
format: int32
x-enum-varnames:
- SplitLeftToRight
- SplitRightToLeft
- NoSplit
- FitSplit
x-enum-descriptions:
- SplitLeftToRight
- SplitRightToLeft
- NoSplit
- FitSplit
ReadingProfileKind:
enum:
- 0
- 1
- 2
type: integer
description: 'Members:
- `0` — Default
- `1` — User
- `2` — Implicit'
format: int32
x-enum-varnames:
- Default
- User
- Implicit
x-enum-descriptions:
- Default
- User
- Implicit
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header