Kavita Filter API
The Filter API from Kavita — 11 operation(s) for filter.
The Filter API from Kavita — 11 operation(s) for filter.
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-filter-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 Filter 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: Filter
paths:
/api/Filter/update/series:
post:
tags:
- Filter
summary: Creates or Updates the Series filter
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
operationId: postApiFilterUpdateSeries
x-operation-id-source: derived
/api/Filter/update/reading-list:
post:
tags:
- Filter
summary: Creates or Updates the Reading List filter
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
text/json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
responses:
'200':
description: OK
operationId: postApiFilterUpdateReadingList
x-operation-id-source: derived
/api/Filter/update/person:
post:
tags:
- Filter
summary: Creates or Updates the Person filter
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
text/json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
responses:
'200':
description: OK
operationId: postApiFilterUpdatePerson
x-operation-id-source: derived
/api/Filter/update/annotation:
post:
tags:
- Filter
summary: Creates or Updates the Reading List filter
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
text/json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
responses:
'200':
description: OK
operationId: postApiFilterUpdateAnnotation
x-operation-id-source: derived
/api/Filter:
get:
tags:
- Filter
summary: All Smart Filters for the authenticated user
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/SmartFilterDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SmartFilterDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/SmartFilterDto'
operationId: getApiFilter
x-operation-id-source: derived
delete:
tags:
- Filter
summary: Delete the smart filter for the authenticated user
description: User must not be in Kavita.Models.Constants.PolicyConstants.ReadOnlyRole
parameters:
- name: filterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiFilter
x-operation-id-source: derived
/api/Filter/encode/series:
post:
tags:
- Filter
summary: Encode a Series filter
requestBody:
description: This must be entityType Series
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: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiFilterEncodeSeries
x-operation-id-source: derived
/api/Filter/encode/reading-list:
post:
tags:
- Filter
summary: Encode a Reading List filter
requestBody:
description: This must be entityType ReadingList
content:
application/json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
text/json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/ReadingListFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiFilterEncodeReadingList
x-operation-id-source: derived
/api/Filter/encode/person:
post:
tags:
- Filter
summary: Encode a Person Filter
requestBody:
description: This must be entityType Person
content:
application/json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
text/json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/PersonFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiFilterEncodePerson
x-operation-id-source: derived
/api/Filter/encode/annotation:
post:
tags:
- Filter
summary: Encode an Annotation Filter
requestBody:
description: This must be entityType Annotation
content:
application/json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
text/json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/AnnotationFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiFilterEncodeAnnotation
x-operation-id-source: derived
/api/Filter/decode:
post:
tags:
- Filter
summary: Decodes the Filter
description: 'Decoded filter will always have the same shape of Kavita.Models.DTOs.Filtering.v2.IFilterDto`2.
The concrete class is driven by `EntityType`.
Classes: Kavita.Models.DTOs.Filtering.v2.Requests.SeriesFilterV2Dto, Kavita.Models.DTOs.Filtering.v2.Requests.PersonFilterDto, Kavita.Models.DTOs.Filtering.v2.Requests.AnnotationFilterDto, Kavita.Models.DTOs.Filtering.v2.Requests.ReadingListFilterDto'
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DecodeFilterDto'
text/json:
schema:
$ref: '#/components/schemas/DecodeFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/DecodeFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/IFilterDto'
application/json:
schema:
$ref: '#/components/schemas/IFilterDto'
text/json:
schema:
$ref: '#/components/schemas/IFilterDto'
operationId: postApiFilterDecode
x-operation-id-source: derived
/api/Filter/rename:
post:
tags:
- Filter
summary: Rename a Smart Filter given the filterId and new name
parameters:
- name: filterId
in: query
description: ''
schema:
type: integer
format: int32
- name: name
in: query
description: ''
required: true
schema:
type: string
responses:
'200':
description: OK
operationId: postApiFilterRename
x-operation-id-source: derived
components:
schemas:
AnnotationFilterStatementDto:
type: object
properties:
comparison:
$ref: '#/components/schemas/FilterComparison'
field:
$ref: '#/components/schemas/AnnotationFilterField'
value:
type:
- string
- 'null'
additionalProperties: false
SmartFilterDto:
required:
- entityType
- filter
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
filter:
type:
- string
- 'null'
entityType:
$ref: '#/components/schemas/FilterEntityType'
additionalProperties: false
PersonSortOptionDto:
type: object
properties:
sortField:
$ref: '#/components/schemas/PersonSortField'
isAscending:
type: boolean
additionalProperties: false
AnnotationFilterField:
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
type: integer
description: 'Members:
- `1` — Owner
- `2` — Library
- `3` — Spoiler
- `4` — HighlightSlot
- `5` — Selection
- `6` — Comment
- `7` — Series
- `8` — Likes
- `9` — LikedBy'
format: int32
x-enum-varnames:
- Owner
- Library
- Spoiler
- HighlightSlot
- Selection
- Comment
- Series
- Likes
- LikedBy
x-enum-descriptions:
- Owner
- Library
- Spoiler
- HighlightSlot
- Selection
- Comment
- Series
- Likes
- LikedBy
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
AnnotationFilterDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
statements:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/AnnotationFilterStatementDto'
combination:
$ref: '#/components/schemas/FilterCombination'
sortOptions:
$ref: '#/components/schemas/AnnotationSortOptionDto'
entityType:
$ref: '#/components/schemas/FilterEntityType'
limitTo:
type: integer
format: int32
additionalProperties: false
IFilterDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
combination:
$ref: '#/components/schemas/FilterCombination'
limitTo:
type: integer
format: int32
entityType:
$ref: '#/components/schemas/FilterEntityType'
additionalProperties: false
FilterCombination:
enum:
- 0
- 1
type: integer
description: 'Members:
- `0` — Or
- `1` — And'
format: int32
x-enum-varnames:
- Or
- And
x-enum-descriptions:
- Or
- And
ReadingListSortOptionDto:
type: object
properties:
sortField:
$ref: '#/components/schemas/ReadingListSortField'
isAscending:
type: boolean
additionalProperties: false
ReadingListFilterStatementDto:
type: object
properties:
comparison:
$ref: '#/components/schemas/FilterComparison'
field:
$ref: '#/components/schemas/ReadingListFilterField'
value:
type:
- string
- 'null'
additionalProperties: false
PersonSortField:
enum:
- 1
- 2
- 3
type: integer
description: 'Members:
- `1` — Name
- `2` — SeriesCount
- `3` — ChapterCount'
format: int32
x-enum-varnames:
- Name
- SeriesCount
- ChapterCount
x-enum-descriptions:
- Name
- SeriesCount
- ChapterCount
DecodeFilterDto:
type: object
properties:
encodedFilter:
type:
- string
- 'null'
additionalProperties: false
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
AnnotationSortOptionDto:
type: object
properties:
sortField:
$ref: '#/components/schemas/AnnotationSortField'
isAscending:
type: boolean
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
PersonFilterField:
enum:
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `1` — Role
- `2` — Name
- `3` — SeriesCount
- `4` — ChapterCount
- `5` — Library'
format: int32
x-enum-varnames:
- Role
- Name
- SeriesCount
- ChapterCount
- Library
x-enum-descriptions:
- Role
- Name
- SeriesCount
- ChapterCount
- Library
ReadingListFilterField:
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
type: integer
description: 'Members:
- `1` — Title
- `2` — ReleaseYear
- `3` — ItemCount
- `4` — Tags
- `5` — Writer
- `6` — Artist
- `7` — Provider
- `8` — MissingItemCount'
format: int32
x-enum-varnames:
- Title
- ReleaseYear
- ItemCount
- Tags
- Writer
- Artist
- Provider
- MissingItemCount
x-enum-descriptions:
- Title
- ReleaseYear
- ItemCount
- Tags
- Writer
- Artist
- Provider
- MissingItemCount
PersonFilterDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
statements:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonFilterStatementDto'
combination:
$ref: '#/components/schemas/FilterCombination'
sortOptions:
$ref: '#/components/schemas/PersonSortOptionDto'
entityType:
$ref: '#/components/schemas/FilterEntityType'
limitTo:
type: integer
format: int32
additionalProperties: false
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
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
ReadingListFilterDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
statements:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ReadingListFilterStatementDto'
combination:
$ref: '#/components/schemas/FilterCombination'
sortOptions:
$ref: '#/components/schemas/ReadingListSortOptionDto'
entityType:
$ref: '#/components/schemas/FilterEntityType'
limitTo:
type: integer
format: int32
additionalProperties: false
ReadingListSortField:
enum:
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `1` — Title
- `2` — ReleaseYearStart
- `3` — ReleaseYearEnd
- `4` — ItemCount'
format: int32
x-enum-varnames:
- Title
- ReleaseYearStart
- ReleaseYearEnd
- ItemCount
x-enum-descriptions:
- Title
- ReleaseYearStart
- ReleaseYearEnd
- ItemCount
AnnotationSortField:
enum:
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `1` — Owner
- `2` — Created
- `3` — LastModified
- `4` — Color'
format: int32
x-enum-varnames:
- Owner
- Created
- LastModified
- Color
x-enum-descriptions:
- Owner
- Created
- LastModified
- Color
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
PersonFilterStatementDto:
type: object
properties:
comparison:
$ref: '#/components/schemas/FilterComparison'
field:
$ref: '#/components/schemas/PersonFilterField'
value:
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