Kavita Chapter API
The Chapter API from Kavita — 4 operation(s) for chapter.
The Chapter API from Kavita — 4 operation(s) for chapter.
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-chapter-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 Chapter 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: Chapter
paths:
/api/Chapter:
get:
tags:
- Chapter
summary: Gets a single chapter
parameters:
- name: chapterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/ChapterDto'
application/json:
schema:
$ref: '#/components/schemas/ChapterDto'
text/json:
schema:
$ref: '#/components/schemas/ChapterDto'
operationId: getApiChapter
x-operation-id-source: derived
delete:
tags:
- Chapter
summary: Removes a Chapter
parameters:
- name: chapterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: boolean
application/json:
schema:
type: boolean
text/json:
schema:
type: boolean
operationId: deleteApiChapter
x-operation-id-source: derived
/api/Chapter/delete-multiple:
post:
tags:
- Chapter
summary: Deletes multiple chapters and any volumes with no leftover chapters
parameters:
- name: seriesId
in: query
description: The ID of the series
schema:
type: integer
format: int32
requestBody:
description: The IDs of the chapters to be deleted
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteChaptersDto'
text/json:
schema:
$ref: '#/components/schemas/DeleteChaptersDto'
application/*+json:
schema:
$ref: '#/components/schemas/DeleteChaptersDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: boolean
application/json:
schema:
type: boolean
text/json:
schema:
type: boolean
operationId: postApiChapterDeleteMultiple
x-operation-id-source: derived
/api/Chapter/update:
post:
tags:
- Chapter
summary: Update chapter metadata
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateChapterDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateChapterDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateChapterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/ChapterDto'
application/json:
schema:
$ref: '#/components/schemas/ChapterDto'
text/json:
schema:
$ref: '#/components/schemas/ChapterDto'
operationId: postApiChapterUpdate
x-operation-id-source: derived
/api/Chapter/chapter-detail-plus:
get:
tags:
- Chapter
summary: Returns Ratings and Reviews for an individual Chapter
parameters:
- name: chapterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/ChapterDetailPlusDto'
application/json:
schema:
$ref: '#/components/schemas/ChapterDetailPlusDto'
text/json:
schema:
$ref: '#/components/schemas/ChapterDetailPlusDto'
operationId: getApiChapterChapterDetailPlus
x-operation-id-source: derived
components:
schemas:
UpdateChapterDto:
type: object
properties:
id:
type: integer
format: int32
summary:
type:
- string
- 'null'
genres:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/GenreTagDto'
tags:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/TagDto'
writers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
coverArtists:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
publishers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
characters:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
pencillers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
inkers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
imprints:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
colorists:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
letterers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
editors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
translators:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
teams:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
locations:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
ageRating:
$ref: '#/components/schemas/AgeRating'
language:
type:
- string
- 'null'
ageRatingLocked:
type: boolean
titleNameLocked:
type: boolean
genresLocked:
type: boolean
tagsLocked:
type: boolean
writerLocked:
type: boolean
characterLocked:
type: boolean
coloristLocked:
type: boolean
editorLocked:
type: boolean
inkerLocked:
type: boolean
imprintLocked:
type: boolean
lettererLocked:
type: boolean
pencillerLocked:
type: boolean
publisherLocked:
type: boolean
translatorLocked:
type: boolean
teamLocked:
type: boolean
locationLocked:
type: boolean
coverArtistLocked:
type: boolean
languageLocked:
type: boolean
summaryLocked:
type: boolean
isbnLocked:
type: boolean
releaseDateLocked:
type: boolean
sortOrder:
type: number
format: float
sortOrderLocked:
type: boolean
webLinks:
type:
- string
- 'null'
isbn:
type:
- string
- 'null'
releaseDate:
type: string
format: date-time
titleName:
type:
- string
- 'null'
aniListId:
type:
- integer
- 'null'
format: int32
malId:
type:
- integer
- 'null'
format: int64
hardcoverId:
type:
- integer
- 'null'
format: int32
metronId:
type:
- integer
- 'null'
format: int64
comicVineId:
type:
- string
- 'null'
mangaBakaId:
type:
- integer
- 'null'
format: int32
cbrId:
type:
- integer
- 'null'
format: int32
additionalProperties: false
MangaFormat:
enum:
- 0
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `0` — Image
- `1` — Archive
- `2` — Unknown
- `3` — EPUB (Epub)
- `4` — PDF (Pdf)'
format: int32
x-enum-varnames:
- Image
- Archive
- Unknown
- Epub
- Pdf
x-enum-descriptions:
- Image
- Archive
- Unknown
- EPUB
- PDF
MangaFileDto:
type: object
properties:
id:
type: integer
format: int32
filePath:
type:
- string
- 'null'
pages:
type: integer
format: int32
bytes:
type: integer
format: int64
format:
$ref: '#/components/schemas/MangaFormat'
created:
type: string
format: date-time
extension:
type:
- string
- 'null'
koreaderHash:
type:
- string
- 'null'
additionalProperties: false
TagDto:
required:
- title
type: object
properties:
id:
type: integer
format: int32
title:
type:
- string
- 'null'
additionalProperties: false
UserReviewDto:
type: object
properties:
tagline:
type:
- string
- 'null'
body:
type:
- string
- 'null'
bodyJustText:
type:
- string
- 'null'
seriesId:
type: integer
format: int32
chapterId:
type:
- integer
- 'null'
format: int32
libraryId:
type: integer
format: int32
username:
type:
- string
- 'null'
userId:
type: integer
format: int32
totalVotes:
type: integer
format: int32
rating:
type: number
format: float
rawBody:
type:
- string
- 'null'
score:
type: integer
format: int32
siteUrl:
type:
- string
- 'null'
isExternal:
type: boolean
provider:
$ref: '#/components/schemas/ScrobbleProvider'
authority:
$ref: '#/components/schemas/RatingAuthority'
additionalProperties: false
DeleteChaptersDto:
type: object
properties:
chapterIds:
type:
- array
- 'null'
items:
type: integer
format: int32
additionalProperties: false
ChapterDetailPlusDto:
type: object
properties:
rating:
type: number
format: float
hasBeenRated:
type: boolean
reviews:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/UserReviewDto'
ratings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/RatingDto'
additionalProperties: false
ScrobbleProvider:
enum:
- 0
- 1
- 2
- 4
- 5
- 6
type: integer
description: 'Members:
- `0` — Kavita
- `1` — AniList
- `2` — Mal
- `4` — Cbr
- `5` — Hardcover
- `6` — MangaBaka'
format: int32
x-enum-varnames:
- Kavita
- AniList
- Mal
- Cbr
- Hardcover
- MangaBaka
x-enum-descriptions:
- Kavita
- AniList
- Mal
- Cbr
- Hardcover
- MangaBaka
PublicationStatus:
enum:
- 0
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `0` — Ongoing (OnGoing)
- `1` — Hiatus
- `2` — Completed
- `3` — Cancelled
- `4` — Ended'
format: int32
x-enum-varnames:
- OnGoing
- Hiatus
- Completed
- Cancelled
- Ended
x-enum-descriptions:
- Ongoing
- Hiatus
- Completed
- Cancelled
- Ended
GenreTagDto:
required:
- title
type: object
properties:
id:
type: integer
format: int32
title:
type:
- string
- 'null'
additionalProperties: false
ChapterDto:
type: object
properties:
id:
type: integer
format: int32
range:
type:
- string
- 'null'
number:
type:
- string
- 'null'
deprecated: true
minNumber:
type: number
format: float
maxNumber:
type: number
format: float
sortOrder:
type: number
format: float
pages:
type: integer
format: int32
isSpecial:
type: boolean
title:
type:
- string
- 'null'
files:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MangaFileDto'
pagesRead:
type: integer
format: int32
totalReads:
type: integer
format: int32
lastReadingProgressUtc:
type: string
format: date-time
lastReadingProgress:
type: string
format: date-time
coverImageLocked:
type: boolean
volumeId:
type: integer
format: int32
createdUtc:
type: string
format: date-time
lastModifiedUtc:
type: string
format: date-time
created:
type: string
format: date-time
releaseDate:
type: string
format: date-time
titleName:
type:
- string
- 'null'
summary:
type:
- string
- 'null'
ageRating:
$ref: '#/components/schemas/AgeRating'
wordCount:
type: integer
format: int64
volumeTitle:
type:
- string
- 'null'
minHoursToRead:
type: integer
format: int32
maxHoursToRead:
type: integer
format: int32
avgHoursToRead:
type: number
format: float
webLinks:
type:
- string
- 'null'
isbn:
type:
- string
- 'null'
writers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
coverArtists:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
publishers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
characters:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
pencillers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
inkers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
imprints:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
colorists:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
letterers:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
editors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
translators:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
teams:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
locations:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonDto'
genres:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/GenreTagDto'
tags:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/TagDto'
publicationStatus:
$ref: '#/components/schemas/PublicationStatus'
language:
type:
- string
- 'null'
count:
type: integer
format: int32
totalCount:
type: integer
format: int32
languageLocked:
type: boolean
summaryLocked:
type: boolean
ageRatingLocked:
type: boolean
publicationStatusLocked:
type: boolean
genresLocked:
type: boolean
tagsLocked:
type: boolean
writerLocked:
type: boolean
characterLocked:
type: boolean
coloristLocked:
type: boolean
editorLocked:
type: boolean
inkerLocked:
type: boolean
imprintLocked:
type: boolean
lettererLocked:
type: boolean
pencillerLocked:
type: boolean
publisherLocked:
type: boolean
translatorLocked:
type: boolean
teamLocked:
type: boolean
locationLocked:
type: boolean
coverArtistLocked:
type: boolean
releaseDateLocked:
type: boolean
titleNameLocked:
type: boolean
sortOrderLocked:
type: boolean
coverImage:
type:
- string
- 'null'
primaryColor:
type:
- string
- 'null'
secondaryColor:
type:
- string
- 'null'
format:
$ref: '#/components/schemas/MangaFormat'
aniListId:
type: integer
format: int32
malId:
type: integer
format: int64
hardcoverId:
type: integer
format: int32
metronId:
type: integer
format: int64
comicVineId:
type:
- string
- 'null'
mangaBakaId:
type: integer
format: int32
cbrId:
type: integer
format: int32
additionalProperties: false
PersonRole:
enum:
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
type: integer
description: 'Members:
- `3` — Writer
- `4` — Penciller
- `5` — Inker
- `6` — Colorist
- `7` — Letterer
- `8` — CoverArtist
- `9` — Editor
- `10` — Publisher
- `11` — Character
- `12` — Translator
- `13` — Imprint
- `14` — Team
- `15` — Location'
format: int32
x-enum-varnames:
- Writer
- Penciller
- Inker
- Colorist
- Letterer
- CoverArtist
- Editor
- Publisher
- Character
- Translator
- Imprint
- Team
- Location
x-enum-descriptions:
- Writer
- Penciller
- Inker
- Colorist
- Letterer
- CoverArtist
- Editor
- Publisher
- Character
- Translator
- Imprint
- Team
- Location
AgeRating:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- -1
type: integer
description: 'Members:
- `0` — Unknown
- `1` — Rating Pending (RatingPending)
- `2` — Early Childhood (EarlyChildhood)
- `3` — Everyone
- `4` — G
- `5` — Everyone 10+ (Everyone10Plus)
- `6` — PG
- `7` — Kids to Adults (KidsToAdults)
- `8` — Teen
- `9` — MA15+ (Mature15Plus)
- `10` — Mature 17+ (Mature17Plus)
- `11` — M (Mature)
- `12` — R18+ (R18Plus)
- `13` — Adults Only 18+ (AdultsOnly)
- `14` — X18+ (X18Plus)
- `-1` — Not Applicable (NotApplicable)'
format: int32
x-enum-varnames:
- Unknown
- RatingPending
- EarlyChildhood
- Everyone
- G
- Everyone10Plus
- PG
- KidsToAdults
- Teen
- Mature15Plus
- Mature17Plus
- Mature
- R18Plus
- AdultsOnly
- X18Plus
- NotApplicable
x-enum-descriptions:
- Unknown
- Rating Pending
- Early Childhood
- Everyone
- G
- Everyone 10+
- PG
- Kids to Adults
- Teen
- MA15+
- Mature 17+
- M
- R18+
- Adults Only 18+
- X18+
- Not Applicable
PersonDto:
required:
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
coverImageLocked:
type: boolean
primaryColor:
type:
- string
- 'null'
secondaryColor:
type:
- string
- 'null'
coverImage:
type:
- string
- 'null'
aliases:
type:
- array
- 'null'
items:
type: string
description:
type:
- string
- 'null'
asin:
type:
- string
- 'null'
aniListId:
type: integer
format: int32
malId:
type: integer
format: int64
hardcoverId:
type:
- string
- 'null'
webLinks:
type:
- array
- 'null'
items:
type: string
roles:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonRole'
additionalProperties: false
RatingAuthority:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — User
- `1` — Critic'
format: int32
x-enum-varnames:
- User
- Critic
x-enum-descriptions:
- User
- Critic
RatingDto:
type: object
properties:
averageScore:
type: integer
format: int32
favoriteCount:
type: integer
format: int32
deprecated: true
provider:
$ref: '#/components/schemas/ScrobbleProvider'
authority:
$ref: '#/components/schemas/RatingAuthority'
providerUrl:
type:
- string
- 'null'
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header