Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/kavita:kavita-wanttoread-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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 Specification
openapi: 3.2.0
info:
title: Kavita Want To Read 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: WantToRead
description: Responsible for all things Want To Read
paths:
/api/want-to-read/v2:
post:
tags:
- WantToRead
summary: Return all Series that are in the current logged in user's Want to Read list…
parameters:
- name: PageNumber
in: query
schema:
type: integer
format: int32
- name: PageSize
in: query
schema:
type: integer
format: int32
- name: userId
in: query
description: Optional user id to request the OnDeck for someone else. They must have profile sharing enabled when doing so
schema:
type: integer
format: int32
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesFilterV2Dto'
text/json:
schema:
$ref: '#/components/schemas/SeriesFilterV2Dto'
application/*+json:
schema:
$ref: '#/components/schemas/SeriesFilterV2Dto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/SeriesDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SeriesDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/SeriesDto'
operationId: postApiWantToReadV2
x-operation-id-source: derived
/api/want-to-read:
get:
tags:
- WantToRead
parameters:
- name: seriesId
in: query
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
summary: Get api want to read
x-summary-source: derived
operationId: getApiWantToRead
x-operation-id-source: derived
/api/want-to-read/add-series:
post:
tags:
- WantToRead
summary: Given a list of Series Ids, add them to the current logged in user's Want To…
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
responses:
'200':
description: OK
operationId: postApiWantToReadAddSeries
x-operation-id-source: derived
/api/want-to-read/remove-series:
post:
tags:
- WantToRead
summary: Given a list of Series Ids, remove them from the current logged in user's Want…
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateWantToReadDto'
responses:
'200':
description: OK
operationId: postApiWantToReadRemoveSeries
x-operation-id-source: derived
components:
schemas:
FilterCombination:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — Or
- `1` — And'
format: int32
x-enum-varnames:
- Or
- And
x-enum-descriptions:
- Or
- And
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
MetadataProvider:
enum:
- 2
- 3
- 4
type: integer
description: 'Members:
- `2` — Hardcover
- `3` — Mangabaka
- `4` — ComicBookRoundup'
format: int32
x-enum-varnames:
- Hardcover
- Mangabaka
- ComicBookRoundup
x-enum-descriptions:
- Hardcover
- Mangabaka
- ComicBookRoundup
SeriesFilterStatementDto:
type: object
properties:
comparison:
$ref: '#/components/schemas/FilterComparison'
field:
$ref: '#/components/schemas/SeriesFilterField'
value:
type:
- string
- 'null'
additionalProperties: false
SeriesSortOptionDto:
type: object
properties:
sortField:
$ref: '#/components/schemas/SeriesSortField'
isAscending:
type: boolean
additionalProperties: false
SeriesDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
originalName:
type:
- string
- 'null'
localizedName:
type:
- string
- 'null'
sortName:
type:
- string
- 'null'
pages:
type: integer
format: int32
coverImageLocked:
type: boolean
lastChapterAdded:
type: string
format: date-time
lastChapterAddedUtc:
type: string
format: date-time
userRating:
type: number
format: float
hasUserRated:
type: boolean
totalReads:
type: integer
format: int32
pagesRead:
type: integer
format: int32
latestReadDate:
type: string
format: date-time
format:
$ref: '#/components/schemas/MangaFormat'
created:
type: string
format: date-time
sortNameLocked:
type: boolean
localizedNameLocked:
type: boolean
nameLocked:
type: boolean
wordCount:
type: integer
format: int64
libraryId:
type: integer
format: int32
libraryName:
type:
- string
- 'null'
minHoursToRead:
type: integer
format: int32
maxHoursToRead:
type: integer
format: int32
avgHoursToRead:
type: number
format: float
folderPath:
type:
- string
- 'null'
lowestFolderPath:
type:
- string
- 'null'
lastFolderScanned:
type: string
format: date-time
dontMatch:
type: boolean
isBlacklisted:
type: boolean
isStandAlone:
type: boolean
metadataProviderOverride:
$ref: '#/components/schemas/MetadataProvider'
coverImage:
type:
- string
- 'null'
primaryColor:
type:
- string
- 'null'
secondaryColor:
type:
- string
- 'null'
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
mangaBakaEditionId:
type:
- string
- 'null'
cbrId:
type: integer
format: int32
additionalProperties: false
FilterComparison:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
type: integer
description: 'Members:
- `0` — Equal
- `1` — GreaterThan
- `2` — GreaterThanEqual
- `3` — LessThan
- `4` — LessThanEqual
- `5` — Contains
- `6` — MustContains
- `7` — Matches
- `8` — NotContains
- `9` — NotEqual
- `10` — BeginsWith
- `11` — EndsWith
- `12` — IsBefore
- `13` — IsAfter
- `14` — IsInLast
- `15` — IsNotInLast
- `16` — IsEmpty
- `17` — IsNotEmpty'
format: int32
x-enum-varnames:
- Equal
- GreaterThan
- GreaterThanEqual
- LessThan
- LessThanEqual
- Contains
- MustContains
- Matches
- NotContains
- NotEqual
- BeginsWith
- EndsWith
- IsBefore
- IsAfter
- IsInLast
- IsNotInLast
- IsEmpty
- IsNotEmpty
x-enum-descriptions:
- Equal
- GreaterThan
- GreaterThanEqual
- LessThan
- LessThanEqual
- Contains
- MustContains
- Matches
- NotContains
- NotEqual
- BeginsWith
- EndsWith
- IsBefore
- IsAfter
- IsInLast
- IsNotInLast
- IsEmpty
- IsNotEmpty
SeriesFilterField:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
type: integer
description: 'Members:
- `0` — Summary
- `1` — SeriesName
- `2` — PublicationStatus
- `3` — Languages
- `4` — AgeRating
- `5` — UserRating
- `6` — Tags
- `7` — CollectionTags
- `8` — Translators
- `9` — Characters
- `10` — Publisher
- `11` — Editor
- `12` — CoverArtist
- `13` — Letterer
- `14` — Colorist
- `15` — Inker
- `16` — Penciller
- `17` — Writers
- `18` — Genres
- `19` — Libraries
- `20` — ReadProgress
- `21` — Formats
- `22` — ReleaseYear
- `23` — ReadTime
- `24` — Path
- `25` — FilePath
- `26` — WantToRead
- `27` — ReadingDate
- `28` — AverageRating
- `29` — Imprint
- `30` — Team
- `31` — Location
- `32` — ReadLast
- `33` — FileSize
- `34` — CollapseSeriesRelationships'
format: int32
x-enum-varnames:
- Summary
- SeriesName
- PublicationStatus
- Languages
- AgeRating
- UserRating
- Tags
- CollectionTags
- Translators
- Characters
- Publisher
- Editor
- CoverArtist
- Letterer
- Colorist
- Inker
- Penciller
- Writers
- Genres
- Libraries
- ReadProgress
- Formats
- ReleaseYear
- ReadTime
- Path
- FilePath
- WantToRead
- ReadingDate
- AverageRating
- Imprint
- Team
- Location
- ReadLast
- FileSize
- CollapseSeriesRelationships
x-enum-descriptions:
- Summary
- SeriesName
- PublicationStatus
- Languages
- AgeRating
- UserRating
- Tags
- CollectionTags
- Translators
- Characters
- Publisher
- Editor
- CoverArtist
- Letterer
- Colorist
- Inker
- Penciller
- Writers
- Genres
- Libraries
- ReadProgress
- Formats
- ReleaseYear
- ReadTime
- Path
- FilePath
- WantToRead
- ReadingDate
- AverageRating
- Imprint
- Team
- Location
- ReadLast
- FileSize
- CollapseSeriesRelationships
FilterEntityType:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — Series
- `1` — Reading List (ReadingList)
- `2` — Person
- `3` — Annotation'
format: int32
x-enum-varnames:
- Series
- ReadingList
- Person
- Annotation
x-enum-descriptions:
- Series
- Reading List
- Person
- Annotation
SeriesSortField:
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
type: integer
description: 'Members:
- `1` — SortName
- `2` — CreatedDate
- `3` — LastModifiedDate
- `4` — LastChapterAdded
- `5` — TimeToRead
- `6` — ReleaseYear
- `7` — ReadProgress
- `8` — AverageRating
- `9` — Random
- `10` — UserRating
- `11` — UnreadChapterCount'
format: int32
x-enum-varnames:
- SortName
- CreatedDate
- LastModifiedDate
- LastChapterAdded
- TimeToRead
- ReleaseYear
- ReadProgress
- AverageRating
- Random
- UserRating
- UnreadChapterCount
x-enum-descriptions:
- SortName
- CreatedDate
- LastModifiedDate
- LastChapterAdded
- TimeToRead
- ReleaseYear
- ReadProgress
- AverageRating
- Random
- UserRating
- UnreadChapterCount
SeriesFilterV2Dto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
statements:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeriesFilterStatementDto'
combination:
$ref: '#/components/schemas/FilterCombination'
sortOptions:
$ref: '#/components/schemas/SeriesSortOptionDto'
entityType:
$ref: '#/components/schemas/FilterEntityType'
limitTo:
type: integer
format: int32
additionalProperties: false
UpdateWantToReadDto:
type: object
properties:
seriesIds:
type:
- array
- 'null'
items:
type: integer
format: int32
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header