Kavita Stream API

Responsible for anything that deals with Streams (SmartFilters, ExternalSource, DashboardStream, SideNavStream)

Operations 17

GET /api/Stream/dashboard Returns the layout of the user's dashboard #
GET /api/Stream/sidenav Return's the user's side nav #
GET /api/Stream/external-sources Return's the user's external sources #
POST /api/Stream/create-external-source Create an external Source #
POST /api/Stream/update-external-source Updates an existing external source #
POST /api/Stream/external-source-exists Validates the external source by host is unique (for this user) #
DELETE /api/Stream/delete-external-source Delete's the external source #
POST /api/Stream/add-dashboard-stream Creates a Dashboard Stream from a SmartFilter and adds it to the user's… #
POST /api/Stream/update-dashboard-stream Updates the visibility of a dashboard stream #
POST /api/Stream/update-dashboard-position Updates the position of a dashboard stream #
POST /api/Stream/add-sidenav-stream Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav… #
POST /api/Stream/add-sidenav-stream-from-external-source Creates a SideNav Stream from a SmartFilter and adds it to the user's sidenav… #
POST /api/Stream/update-sidenav-stream Updates the visibility of a dashboard stream #
POST /api/Stream/update-sidenav-position Updates the position of a dashboard stream #
POST /api/Stream/bulk-sidenav-stream-visibility Create api stream bulk sidenav stream visibility #
DELETE /api/Stream/smart-filter-side-nav-stream Removes a Smart Filter from a user's SideNav Streams #
DELETE /api/Stream/smart-filter-dashboard-stream Removes a Smart Filter from a user's Dashboard Streams #

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kavita:kavita-stream-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

kavita-stream-api-openapi.yml Raw ↑
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