Kavita Theme API
The Theme API from Kavita — 6 operation(s) for theme.
The Theme API from Kavita — 6 operation(s) for theme.
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-theme-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 Theme 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: Theme
paths:
/api/Theme:
get:
tags:
- Theme
summary: Returns all Themes
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/SiteThemeDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SiteThemeDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/SiteThemeDto'
operationId: getApiTheme
x-operation-id-source: derived
delete:
tags:
- Theme
summary: Attempts to delete a theme. If already in use by users, will not allow
parameters:
- name: themeId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
operationId: deleteApiTheme
x-operation-id-source: derived
/api/Theme/update-default:
post:
tags:
- Theme
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDefaultThemeDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateDefaultThemeDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateDefaultThemeDto'
responses:
'200':
description: OK
summary: Create api theme update default
x-summary-source: derived
operationId: postApiThemeUpdateDefault
x-operation-id-source: derived
/api/Theme/download-content:
get:
tags:
- Theme
summary: Returns css content to the UI. UI is expected to escape the content
parameters:
- name: themeId
in: query
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: getApiThemeDownloadContent
x-operation-id-source: derived
/api/Theme/browse:
get:
tags:
- Theme
summary: Browse themes that can be used on this server
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
operationId: getApiThemeBrowse
x-operation-id-source: derived
/api/Theme/download-theme:
post:
tags:
- Theme
summary: Downloads a SiteTheme from upstream
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
text/json:
schema:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
application/*+json:
schema:
$ref: '#/components/schemas/DownloadableSiteThemeDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/SiteThemeDto'
application/json:
schema:
$ref: '#/components/schemas/SiteThemeDto'
text/json:
schema:
$ref: '#/components/schemas/SiteThemeDto'
operationId: postApiThemeDownloadTheme
x-operation-id-source: derived
/api/Theme/upload-theme:
post:
tags:
- Theme
summary: Uploads a new theme file
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
formFile:
type: string
description: ''
format: binary
encoding:
formFile:
style: form
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/SiteThemeDto'
application/json:
schema:
$ref: '#/components/schemas/SiteThemeDto'
text/json:
schema:
$ref: '#/components/schemas/SiteThemeDto'
operationId: postApiThemeUploadTheme
x-operation-id-source: derived
components:
schemas:
DownloadableSiteThemeDto:
type: object
properties:
name:
type:
- string
- 'null'
cssUrl:
type:
- string
- 'null'
cssFile:
type:
- string
- 'null'
previewUrls:
type:
- array
- 'null'
items:
type: string
alreadyDownloaded:
type: boolean
sha:
type:
- string
- 'null'
path:
type:
- string
- 'null'
author:
type:
- string
- 'null'
lastCompatibleVersion:
type:
- string
- 'null'
isCompatible:
type: boolean
description:
type:
- string
- 'null'
additionalProperties: false
UpdateDefaultThemeDto:
type: object
properties:
themeId:
type: integer
format: int32
additionalProperties: false
SiteThemeDto:
required:
- fileName
- name
- normalizedName
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
normalizedName:
type:
- string
- 'null'
fileName:
type:
- string
- 'null'
isDefault:
type: boolean
provider:
$ref: '#/components/schemas/ThemeProvider'
previewUrls:
type:
- array
- 'null'
items:
type: string
description:
type:
- string
- 'null'
author:
type:
- string
- 'null'
compatibleVersion:
type:
- string
- 'null'
selector:
type:
- string
- 'null'
readOnly: true
additionalProperties: false
ThemeProvider:
enum:
- 1
- 2
type: integer
description: 'Members:
- `1` — System
- `2` — Custom'
format: int32
x-enum-varnames:
- System
- Custom
x-enum-descriptions:
- System
- Custom
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header