Kavita Stream API
Responsible for anything that deals with Streams (SmartFilters, ExternalSource, DashboardStream, SideNavStream)
Responsible for anything that deals with Streams (SmartFilters, ExternalSource, DashboardStream, SideNavStream)
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-stream-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 Stream 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: Stream
description: Responsible for anything that deals with Streams (SmartFilters, ExternalSource, DashboardStream, SideNavStream)
paths:
/api/Stream/dashboard:
get:
tags:
- Stream
summary: Returns the layout of the user's dashboard
parameters:
- name: visibleOnly
in: query
schema:
type: boolean
default: true
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/DashboardStreamDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DashboardStreamDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/DashboardStreamDto'
operationId: getApiStreamDashboard
x-operation-id-source: derived
/api/Stream/sidenav:
get:
tags:
- Stream
summary: Return's the user's side nav
parameters:
- name: visibleOnly
in: query
schema:
type: boolean
default: true
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/SideNavStreamDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SideNavStreamDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/SideNavStreamDto'
operationId: getApiStreamSidenav
x-operation-id-source: derived
/api/Stream/external-sources:
get:
tags:
- Stream
summary: Return's the user's external sources
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalSourceDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalSourceDto'
operationId: getApiStreamExternalSources
x-operation-id-source: derived
/api/Stream/create-external-source:
post:
tags:
- Stream
summary: Create an external Source
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
application/*+json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
application/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
operationId: postApiStreamCreateExternalSource
x-operation-id-source: derived
/api/Stream/update-external-source:
post:
tags:
- Stream
summary: Updates an existing external source
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
application/*+json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
application/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
operationId: postApiStreamUpdateExternalSource
x-operation-id-source: derived
/api/Stream/external-source-exists:
post:
tags:
- Stream
summary: Validates the external source by host is unique (for this user)
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
text/json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
application/*+json:
schema:
$ref: '#/components/schemas/ExternalSourceDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: boolean
application/json:
schema:
type: boolean
text/json:
schema:
type: boolean
operationId: postApiStreamExternalSourceExists
x-operation-id-source: derived
/api/Stream/delete-external-source:
delete:
tags:
- Stream
summary: Delete's the external source
parameters:
- name: externalSourceId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiStreamDeleteExternalSource
x-operation-id-source: derived
/api/Stream/add-dashboard-stream:
post:
tags:
- Stream
summary: Creates a Dashboard Stream from a SmartFilter and adds it to the user's…
parameters:
- name: smartFilterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
application/json:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
text/json:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
operationId: postApiStreamAddDashboardStream
x-operation-id-source: derived
/api/Stream/update-dashboard-stream:
post:
tags:
- Stream
summary: Updates the visibility of a dashboard stream
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
text/json:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
application/*+json:
schema:
$ref: '#/components/schemas/DashboardStreamDto'
responses:
'200':
description: OK
operationId: postApiStreamUpdateDashboardStream
x-operation-id-source: derived
/api/Stream/update-dashboard-position:
post:
tags:
- Stream
summary: Updates the position of a dashboard stream
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
responses:
'200':
description: OK
operationId: postApiStreamUpdateDashboardPosition
x-operation-id-source: derived
/api/Stream/add-sidenav-stream:
post:
tags:
- Stream
summary: Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav…
parameters:
- name: smartFilterId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
application/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
text/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
operationId: postApiStreamAddSidenavStream
x-operation-id-source: derived
/api/Stream/add-sidenav-stream-from-external-source:
post:
tags:
- Stream
summary: Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav…
parameters:
- name: externalSourceId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
application/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
text/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
operationId: postApiStreamAddSidenavStreamFromExternalSource
x-operation-id-source: derived
/api/Stream/update-sidenav-stream:
post:
tags:
- Stream
summary: Updates the visibility of a dashboard stream
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
text/json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
application/*+json:
schema:
$ref: '#/components/schemas/SideNavStreamDto'
responses:
'200':
description: OK
operationId: postApiStreamUpdateSidenavStream
x-operation-id-source: derived
/api/Stream/update-sidenav-position:
post:
tags:
- Stream
summary: Updates the position of a dashboard stream
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateStreamPositionDto'
responses:
'200':
description: OK
operationId: postApiStreamUpdateSidenavPosition
x-operation-id-source: derived
/api/Stream/bulk-sidenav-stream-visibility:
post:
tags:
- Stream
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkUpdateSideNavStreamVisibilityDto'
text/json:
schema:
$ref: '#/components/schemas/BulkUpdateSideNavStreamVisibilityDto'
application/*+json:
schema:
$ref: '#/components/schemas/BulkUpdateSideNavStreamVisibilityDto'
responses:
'200':
description: OK
summary: Create api stream bulk sidenav stream visibility
x-summary-source: derived
operationId: postApiStreamBulkSidenavStreamVisibility
x-operation-id-source: derived
/api/Stream/smart-filter-side-nav-stream:
delete:
tags:
- Stream
summary: Removes a Smart Filter from a user's SideNav Streams
parameters:
- name: sideNavStreamId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiStreamSmartFilterSideNavStream
x-operation-id-source: derived
/api/Stream/smart-filter-dashboard-stream:
delete:
tags:
- Stream
summary: Removes a Smart Filter from a user's Dashboard Streams
parameters:
- name: dashboardStreamId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiStreamSmartFilterDashboardStream
x-operation-id-source: derived
components:
schemas:
FolderWatchMode:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — Off
- `1` — Automatic
- `2` — File Watcher (FileWatcher)
- `3` — Polling'
format: int32
x-enum-varnames:
- 'Off'
- Automatic
- FileWatcher
- Polling
x-enum-descriptions:
- 'Off'
- Automatic
- File Watcher
- Polling
ExternalSourceDto:
required:
- apiKey
- host
- id
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
host:
type:
- string
- 'null'
apiKey:
type:
- string
- 'null'
additionalProperties: false
DashboardStreamDto:
required:
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
isProvided:
type: boolean
order:
type: integer
format: int32
smartFilterEncoded:
type:
- string
- 'null'
smartFilterId:
type:
- integer
- 'null'
format: int32
streamType:
$ref: '#/components/schemas/DashboardStreamType'
visible:
type: boolean
entityType:
$ref: '#/components/schemas/FilterEntityType'
additionalProperties: false
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
UpdateStreamPositionDto:
type: object
properties:
streamName:
type:
- string
- 'null'
id:
type: integer
format: int32
fromPosition:
type: integer
format: int32
toPosition:
type: integer
format: int32
positionIncludesInvisible:
type: boolean
additionalProperties: false
LibraryDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
type:
$ref: '#/components/schemas/LibraryType'
lastScanned:
type: string
format: date-time
coverImage:
type:
- string
- 'null'
folderWatchMode:
$ref: '#/components/schemas/FolderWatchMode'
includeInDashboard:
type: boolean
includeInRecommended:
type: boolean
manageCollections:
type: boolean
manageReadingLists:
type: boolean
includeInSearch:
type: boolean
allowScrobbling:
type: boolean
folders:
type:
- array
- 'null'
items:
type: string
collapseSeriesRelationships:
type: boolean
libraryFileTypes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/FileTypeGroup'
excludePatterns:
type:
- array
- 'null'
items:
type: string
allowMetadataMatching:
type: boolean
enableMetadata:
type: boolean
removePrefixForSortName:
type: boolean
inheritWebLinksFromFirstChapter:
type: boolean
defaultLanguage:
type:
- string
- 'null'
metadataProvider:
$ref: '#/components/schemas/MetadataProvider'
additionalProperties: false
SideNavStreamDto:
required:
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
isProvided:
type: boolean
order:
type: integer
format: int32
smartFilterEncoded:
type:
- string
- 'null'
smartFilterId:
type:
- integer
- 'null'
format: int32
externalSourceId:
type: integer
format: int32
externalSource:
$ref: '#/components/schemas/ExternalSourceDto'
streamType:
$ref: '#/components/schemas/SideNavStreamType'
visible:
type: boolean
libraryId:
type:
- integer
- 'null'
format: int32
library:
$ref: '#/components/schemas/LibraryDto'
entityType:
$ref: '#/components/schemas/FilterEntityType'
additionalProperties: false
LibraryType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Manga
- `1` — Comic (Flexible) (Comic)
- `2` — Book
- `3` — Image
- `4` — Light Novel (LightNovel)
- `5` — Comic (ComicVine)'
format: int32
x-enum-varnames:
- Manga
- Comic
- Book
- Image
- LightNovel
- ComicVine
x-enum-descriptions:
- Manga
- Comic (Flexible)
- Book
- Image
- Light Novel
- Comic
SideNavStreamType:
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
type: integer
description: 'Members:
- `1` — Collections
- `2` — ReadingLists
- `3` — Bookmarks
- `4` — Library
- `5` — SmartFilter
- `6` — ExternalSource
- `7` — AllSeries
- `8` — WantToRead
- `9` — BrowsePeople'
format: int32
x-enum-varnames:
- Collections
- ReadingLists
- Bookmarks
- Library
- SmartFilter
- ExternalSource
- AllSeries
- WantToRead
- BrowsePeople
x-enum-descriptions:
- Collections
- ReadingLists
- Bookmarks
- Library
- SmartFilter
- ExternalSource
- AllSeries
- WantToRead
- BrowsePeople
FileTypeGroup:
enum:
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `1` — Archive
- `2` — EPub (Epub)
- `3` — Pdf
- `4` — Images'
format: int32
x-enum-varnames:
- Archive
- Epub
- Pdf
- Images
x-enum-descriptions:
- Archive
- EPub
- Pdf
- Images
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
DashboardStreamType:
enum:
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `1` — OnDeck
- `2` — RecentlyUpdated
- `3` — NewlyAdded
- `4` — SmartFilter'
format: int32
x-enum-varnames:
- OnDeck
- RecentlyUpdated
- NewlyAdded
- SmartFilter
x-enum-descriptions:
- OnDeck
- RecentlyUpdated
- NewlyAdded
- SmartFilter
BulkUpdateSideNavStreamVisibilityDto:
required:
- ids
- visibility
type: object
properties:
ids:
type:
- array
- 'null'
items:
type: integer
format: int32
visibility:
type: boolean
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header