Kavita Server API

The Server API from Kavita — 22 operation(s) for server.

Operations 22

POST /api/Server/clear-cache Performs an ad-hoc cleanup of Cache #
POST /api/Server/cleanup-want-to-read Performs an ad-hoc cleanup of Want To Read, by removing want to read series for… #
POST /api/Server/cleanup Performs the nightly maintenance work on the Server. Can be heavy #
POST /api/Server/backup-db Performs an ad-hoc backup of the Database #
POST /api/Server/analyze-files This is a one time task that needs to be ran for v0.7 statistics to work #
GET /api/Server/server-info-slim Returns non-sensitive information about the current system #
POST /api/Server/convert-media Triggers the scheduling of the convert media job. #
GET /api/Server/logs Downloads all the log files via a zip #
GET /api/Server/check-for-updates Checks for updates and pushes an event to the UI #
GET /api/Server/check-update Checks for updates, if no updates that are > current version installed, returns… #
GET /api/Server/check-out-of-date Returns how many versions out of date this install is #
GET /api/Server/changelog Pull the Changelog for Kavita from Github and display #
GET /api/Server/jobs Returns a list of reoccurring jobs. Scheduled ad-hoc jobs will not be returned #
GET /api/Server/activity What is running, delayed and coming up, so a client can rebuild its activity… #
GET /api/Server/media-errors Returns a list of issues found during scanning or reading in which files may… #
POST /api/Server/media-errors/dismiss Dismiss one or more media error #
POST /api/Server/media-errors/undismiss Undismiss one or more media error #
GET /api/Server/media-errors-for-series Get the media errors for a given series #
POST /api/Server/clear-media-alerts Deletes all media errors #
POST /api/Server/bust-kavitaplus-cache Bust Kavita+ Cache #
POST /api/Server/sync-themes Runs the Sync Themes task #
GET /api/Server/is-task-running Returns true if a task is currently running or has been queued. #

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-server-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-server-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kavita Server 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: Server
paths:
  /api/Server/clear-cache:
    post:
      tags:
      - Server
      summary: Performs an ad-hoc cleanup of Cache
      responses:
        '200':
          description: OK
      operationId: postApiServerClearCache
      x-operation-id-source: derived
  /api/Server/cleanup-want-to-read:
    post:
      tags:
      - Server
      summary: Performs an ad-hoc cleanup of Want To Read, by removing want to read series for…
      responses:
        '200':
          description: OK
      operationId: postApiServerCleanupWantToRead
      x-operation-id-source: derived
  /api/Server/cleanup:
    post:
      tags:
      - Server
      summary: Performs the nightly maintenance work on the Server. Can be heavy
      responses:
        '200':
          description: OK
      operationId: postApiServerCleanup
      x-operation-id-source: derived
  /api/Server/backup-db:
    post:
      tags:
      - Server
      summary: Performs an ad-hoc backup of the Database
      responses:
        '200':
          description: OK
      operationId: postApiServerBackupDb
      x-operation-id-source: derived
  /api/Server/analyze-files:
    post:
      tags:
      - Server
      summary: This is a one time task that needs to be ran for v0.7 statistics to work
      responses:
        '200':
          description: OK
      deprecated: true
      operationId: postApiServerAnalyzeFiles
      x-operation-id-source: derived
  /api/Server/server-info-slim:
    get:
      tags:
      - Server
      summary: Returns non-sensitive information about the current system
      description: This is just for the UI and is extremely lightweight
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ServerInfoSlimDto'
            application/json:
              schema:
                $ref: '#/components/schemas/ServerInfoSlimDto'
            text/json:
              schema:
                $ref: '#/components/schemas/ServerInfoSlimDto'
      operationId: getApiServerServerInfoSlim
      x-operation-id-source: derived
  /api/Server/convert-media:
    post:
      tags:
      - Server
      summary: Triggers the scheduling of the convert media job.
      responses:
        '200':
          description: OK
      operationId: postApiServerConvertMedia
      x-operation-id-source: derived
  /api/Server/logs:
    get:
      tags:
      - Server
      summary: Downloads all the log files via a zip
      responses:
        '200':
          description: OK
      operationId: getApiServerLogs
      x-operation-id-source: derived
  /api/Server/check-for-updates:
    get:
      tags:
      - Server
      summary: Checks for updates and pushes an event to the UI
      description: Some users have websocket issues so this is not always reliable to alert the user
      responses:
        '200':
          description: OK
      operationId: getApiServerCheckForUpdates
      x-operation-id-source: derived
  /api/Server/check-update:
    get:
      tags:
      - Server
      summary: Checks for updates, if no updates that are > current version installed, returns…
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UpdateNotificationDto'
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateNotificationDto'
            text/json:
              schema:
                $ref: '#/components/schemas/UpdateNotificationDto'
      operationId: getApiServerCheckUpdate
      x-operation-id-source: derived
  /api/Server/check-out-of-date:
    get:
      tags:
      - Server
      summary: Returns how many versions out of date this install is
      parameters:
      - name: stableOnly
        in: query
        description: Only count Stable releases
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: integer
                format: int32
            application/json:
              schema:
                type: integer
                format: int32
            text/json:
              schema:
                type: integer
                format: int32
      operationId: getApiServerCheckOutOfDate
      x-operation-id-source: derived
  /api/Server/changelog:
    get:
      tags:
      - Server
      summary: Pull the Changelog for Kavita from Github and display
      parameters:
      - name: count
        in: query
        description: How many releases from the latest to return
        schema:
          type: integer
          format: int32
          default: 0
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UpdateNotificationDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UpdateNotificationDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UpdateNotificationDto'
      operationId: getApiServerChangelog
      x-operation-id-source: derived
  /api/Server/jobs:
    get:
      tags:
      - Server
      summary: Returns a list of reoccurring jobs. Scheduled ad-hoc jobs will not be returned
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JobDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JobDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JobDto'
      operationId: getApiServerJobs
      x-operation-id-source: derived
  /api/Server/activity:
    get:
      tags:
      - Server
      summary: What is running, delayed and coming up, so a client can rebuild its activity…
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ActivitySnapshotDto'
            application/json:
              schema:
                $ref: '#/components/schemas/ActivitySnapshotDto'
            text/json:
              schema:
                $ref: '#/components/schemas/ActivitySnapshotDto'
      operationId: getApiServerActivity
      x-operation-id-source: derived
  /api/Server/media-errors:
    get:
      tags:
      - Server
      summary: Returns a list of issues found during scanning or reading in which files may…
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
      operationId: getApiServerMediaErrors
      x-operation-id-source: derived
  /api/Server/media-errors/dismiss:
    post:
      tags:
      - Server
      summary: Dismiss one or more media error
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          text/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          application/*+json:
            schema:
              type: array
              items:
                type: integer
                format: int32
      responses:
        '200':
          description: OK
      operationId: postApiServerMediaErrorsDismiss
      x-operation-id-source: derived
  /api/Server/media-errors/undismiss:
    post:
      tags:
      - Server
      summary: Undismiss one or more media error
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          text/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
          application/*+json:
            schema:
              type: array
              items:
                type: integer
                format: int32
      responses:
        '200':
          description: OK
      operationId: postApiServerMediaErrorsUndismiss
      x-operation-id-source: derived
  /api/Server/media-errors-for-series:
    get:
      tags:
      - Server
      summary: Get the media errors for a given series
      parameters:
      - name: seriesId
        in: query
        description: ''
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaErrorDto'
      operationId: getApiServerMediaErrorsForSeries
      x-operation-id-source: derived
  /api/Server/clear-media-alerts:
    post:
      tags:
      - Server
      summary: Deletes all media errors
      responses:
        '200':
          description: OK
      operationId: postApiServerClearMediaAlerts
      x-operation-id-source: derived
  /api/Server/bust-kavitaplus-cache:
    post:
      tags:
      - Server
      summary: Bust Kavita+ Cache
      responses:
        '200':
          description: OK
      operationId: postApiServerBustKavitaplusCache
      x-operation-id-source: derived
  /api/Server/sync-themes:
    post:
      tags:
      - Server
      summary: Runs the Sync Themes task
      responses:
        '200':
          description: OK
      operationId: postApiServerSyncThemes
      x-operation-id-source: derived
  /api/Server/is-task-running:
    get:
      tags:
      - Server
      summary: Returns true if a task is currently running or has been queued.
      parameters:
      - name: methodName
        in: query
        description: ''
        schema:
          type: string
      - name: queue
        in: query
        description: ''
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: boolean
            application/json:
              schema:
                type: boolean
            text/json:
              schema:
                type: boolean
      operationId: getApiServerIsTaskRunning
      x-operation-id-source: derived
components:
  schemas:
    LibraryScanEndedEventBodyDto:
      type: object
      properties:
        libraryId:
          type: integer
          format: int32
        libraryName:
          type:
          - string
          - 'null'
        seriesAdded:
          type: integer
          format: int32
        seriesRemoved:
          type: integer
          format: int32
        seriesFailed:
          type: integer
          format: int32
        chaptersAdded:
          type: integer
          format: int32
        chaptersUpdated:
          type: integer
          format: int32
        chaptersRemoved:
          type: integer
          format: int32
        problemFiles:
          type: integer
          format: int32
        newProblemFiles:
          type: integer
          format: int32
        recentProblemFiles:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ScanIssueSummaryItemDto'
        endsJob:
          type: boolean
      additionalProperties: false
    ActivitySnapshotDto:
      type: object
      properties:
        bootId:
          type: string
          format: uuid
        startedUtc:
          type: string
          format: date-time
        running:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SignalRMessageDto'
        scheduled:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ScheduledScanDto'
        scheduledTotal:
          type: integer
          format: int32
        scheduledFolderScans:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ScheduledFolderScanDto'
        upcoming:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UpcomingTaskDto'
        recentJobs:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/RecentJobDto'
        recentEntries:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SignalRMessageDto'
      additionalProperties: false
    MessageEventPriority:
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
      type: integer
      description: 'Members:

        - `0` — Silent

        - `1` — Activity

        - `2` — Info

        - `3` — Action

        - `4` — Error'
      format: int32
      x-enum-varnames:
      - Silent
      - Activity
      - Info
      - Action
      - Error
      x-enum-descriptions:
      - Silent
      - Activity
      - Info
      - Action
      - Error
    MediaErrorDto:
      required:
      - extension
      - filePath
      type: object
      properties:
        id:
          type: integer
          format: int32
        extension:
          type:
          - string
          - 'null'
        filePath:
          type:
          - string
          - 'null'
        details:
          type:
          - string
          - 'null'
        producer:
          $ref: '#/components/schemas/MediaErrorProducer'
        reason:
          $ref: '#/components/schemas/MediaErrorReason'
        seriesId:
          type:
          - integer
          - 'null'
          format: int32
        seriesName:
          type:
          - string
          - 'null'
        libraryId:
          type:
          - integer
          - 'null'
          format: int32
        libraryName:
          type:
          - string
          - 'null'
        isDismissed:
          type: boolean
        lastSeenUtc:
          type: string
          format: date-time
        createdUtc:
          type: string
          format: date-time
      additionalProperties: false
    MediaErrorReason:
      enum:
      - 0
      - 1
      - 2
      - 3
      - 5
      - 6
      - 7
      - 8
      - 9
      - 10
      - 11
      - 12
      type: integer
      description: 'Members:

        - `0` — Unknown

        - `1` — Parse Failed (ParseFailed)

        - `2` — No Series Name (NoSeriesName)

        - `3` — Unreadable Archive (UnreadableArchive)

        - `5` — Corrupt Epub (CorruptEpub)

        - `6` — No Pages (NoPages)

        - `7` — Cover Failed (CoverFailed)

        - `8` — Word Count Failed (WordCountFailed)

        - `9` — I/O Error (IoError)

        - `10` — Metadata Unreadable (MetadataUnreadable)

        - `11` — Epub Not Strict (EpubNotStrict)

        - `12` — Ambiguous Series (AmbiguousSeries)'
      format: int32
      x-enum-varnames:
      - Unknown
      - ParseFailed
      - NoSeriesName
      - UnreadableArchive
      - CorruptEpub
      - NoPages
      - CoverFailed
      - WordCountFailed
      - IoError
      - MetadataUnreadable
      - EpubNotStrict
      - AmbiguousSeries
      x-enum-descriptions:
      - Unknown
      - Parse Failed
      - No Series Name
      - Unreadable Archive
      - Corrupt Epub
      - No Pages
      - Cover Failed
      - Word Count Failed
      - I/O Error
      - Metadata Unreadable
      - Epub Not Strict
      - Ambiguous Series
    ServerInfoSlimDto:
      required:
      - installId
      - kavitaVersion
      type: object
      properties:
        installId:
          type:
          - string
          - 'null'
        isDocker:
          type: boolean
        kavitaVersion:
          type:
          - string
          - 'null'
        firstInstallDate:
          type:
          - string
          - 'null'
          format: date-time
        firstInstallVersion:
          type:
          - string
          - 'null'
      additionalProperties: false
    RecentJobDto:
      required:
      - correlationId
      type: object
      properties:
        correlationId:
          type:
          - string
          - 'null'
        startedUtc:
          type: string
          format: date-time
        endedUtc:
          type: string
          format: date-time
        steps:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SignalRMessageDto'
        completed:
          type: boolean
        scanSummaries:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/LibraryScanEndedEventBodyDto'
      additionalProperties: false
    ScanIssueSummaryItemDto:
      type: object
      properties:
        filePath:
          type:
          - string
          - 'null'
        reason:
          $ref: '#/components/schemas/MediaErrorReason'
        seriesId:
          type:
          - integer
          - 'null'
          format: int32
        seriesName:
          type:
          - string
          - 'null'
      additionalProperties: false
    ScheduledFolderScanDto:
      required:
      - folders
      type: object
      properties:
        libraryId:
          type:
          - integer
          - 'null'
          format: int32
        fromFolderWatcher:
          type: boolean
        runAtUtc:
          type:
          - string
          - 'null'
          format: date-time
        folders:
          type:
          - array
          - 'null'
          items:
            type: string
        folderCount:
          type: integer
          format: int32
      additionalProperties: false
    UpcomingTaskDto:
      required:
      - cron
      - taskId
      type: object
      properties:
        taskId:
          type:
          - string
          - 'null'
        cron:
          type:
          - string
          - 'null'
        nextRunUtc:
          type: string
          format: date-time
      additionalProperties: false
    UpdateNotificationDto:
      required:
      - currentVersion
      - publishDate
      - updateBody
      - updateTitle
      - updateUrl
      - updateVersion
      type: object
      properties:
        currentVersion:
          type:
          - string
          - 'null'
        updateVersion:
          type:
          - string
          - 'null'
        updateBody:
          type:
          - string
          - 'null'
        updateTitle:
          type:
          - string
          - 'null'
        updateUrl:
          type:
          - string
          - 'null'
        isDocker:
          type: boolean
        isPrerelease:
          type: boolean
        publishDate:
          type:
          - string
          - 'null'
        isOnNightlyInRelease:
          type: boolean
        isReleaseNewer:
          type: boolean
        isReleaseEqual:
          type: boolean
        added:
          type:
          - array
          - 'null'
          items:
            type: string
        removed:
          type:
          - array
          - 'null'
          items:
            type: string
        changed:
          type:
          - array
          - 'null'
          items:
            type: string
        fixed:
          type:
          - array
          - 'null'
          items:
            type: string
        theme:
          type:
          - array
          - 'null'
          items:
            type: string
        developer:
          type:
          - array
          - 'null'
          items:
            type: string
        api:
          type:
          - array
          - 'null'
          items:
            type: string
        featureRequests:
          type:
          - array
          - 'null'
          items:
            type: string
        knownIssues:
          type:
          - array
          - 'null'
          items:
            type: string
        blogPart:
          type:
          - string
          - 'null'
      additionalProperties: false
    SignalRMessageDto:
      required:
      - name
      type: object
      properties:
        body: {}
        name:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        subTitle:
          type:
          - string
          - 'null'
        eventType:
          type:
          - string
          - 'null'
        progress:
          type:
          - string
          - 'null'
        eventTimeUtc:
          type: string
          format: date-time
        priority:
          $ref: '#/components/schemas/MessageEventPriority'
        code:
          type:
          - string
          - 'null'
        correlationId:
          type:
          - string
          - 'null'
      additionalProperties: false
    ScheduledScanDto:
      required:
      - jobId
      type: object
      properties:
        jobId:
          type:
          - string
          - 'null'
        libraryId:
          type:
          - integer
          - 'null'
          format: int32
        seriesId:
          type:
          - integer
          - 'null'
          format: int32
        runAtUtc:
          type: string
          format: date-time
      additionalProperties: false
    MediaErrorProducer:
      enum:
      - 0
      - 1
      - 2
      type: integer
      description: 'Members:

        - `0` — BookService

        - `1` — ArchiveService

        - `2` — Scanner'
      format: int32
      x-enum-varnames:
      - BookService
      - ArchiveService
      - Scanner
      x-enum-descriptions:
      - BookService
      - ArchiveService
      - Scanner
    JobDto:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        createdAtUtc:
          type:
          - string
          - 'null'
          format: date-time
        lastExecutionUtc:
          type:
          - string
          - 'null'
          format: date-time
        cron:
          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