Kavita Server API
The Server API from Kavita — 22 operation(s) for server.
The Server API from Kavita — 22 operation(s) for server.
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-server-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 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