Kavita Upload API
The Upload API from Kavita — 13 operation(s) for upload.
The Upload API from Kavita — 13 operation(s) for upload.
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-upload-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 Upload 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: Upload
paths:
/api/Upload/upload-by-url:
post:
tags:
- Upload
summary: This stores a file (image) in temp directory for use in a cover image…
requestBody:
description: Escaped url to download from
content:
application/json:
schema:
$ref: '#/components/schemas/UploadUrlDto'
text/json:
schema:
$ref: '#/components/schemas/UploadUrlDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadUrlDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiUploadUploadByUrl
x-operation-id-source: derived
/api/Upload/upload-chapter-cover:
post:
tags:
- Upload
parameters:
- name: chapterId
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
summary: Create api upload upload chapter cover
x-summary-source: derived
operationId: postApiUploadUploadChapterCover
x-operation-id-source: derived
/api/Upload/upload-volume-cover:
post:
tags:
- Upload
parameters:
- name: volumeId
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
summary: Create api upload upload volume cover
x-summary-source: derived
operationId: postApiUploadUploadVolumeCover
x-operation-id-source: derived
/api/Upload/upload-series-cover:
post:
tags:
- Upload
parameters:
- name: seriesId
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
summary: Create api upload upload series cover
x-summary-source: derived
operationId: postApiUploadUploadSeriesCover
x-operation-id-source: derived
/api/Upload/upload-by-file:
post:
tags:
- Upload
summary: Stages an uploaded image file in the temp directory for use in a cover image…
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
description: The image file to stage
format: binary
encoding:
file:
style: form
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
operationId: postApiUploadUploadByFile
x-operation-id-source: derived
/api/Upload/series:
post:
tags:
- Upload
summary: Replaces series cover image and locks it with a base64 encoded image
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadSeries
x-operation-id-source: derived
/api/Upload/collection:
post:
tags:
- Upload
summary: Replaces collection tag cover image and locks it with a base64 encoded image
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadCollection
x-operation-id-source: derived
/api/Upload/reading-list:
post:
tags:
- Upload
summary: Replaces reading list cover image and locks it with a base64 encoded image
description: This is the only API that can be called by non-admins, but the authenticated user must have a readinglist permission
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadReadingList
x-operation-id-source: derived
/api/Upload/chapter:
post:
tags:
- Upload
summary: Replaces chapter cover image and locks it with a base64 encoded image.
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadChapter
x-operation-id-source: derived
/api/Upload/volume:
post:
tags:
- Upload
summary: Replaces volume cover image and locks it with a base64 encoded image
description: This will not update the underlying chapter
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadVolume
x-operation-id-source: derived
/api/Upload/library:
post:
tags:
- Upload
summary: Replaces library cover image with a base64 encoded image.
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadLibrary
x-operation-id-source: derived
/api/Upload/person:
post:
tags:
- Upload
summary: Replaces person tag cover image and locks it with a base64 encoded image
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadPerson
x-operation-id-source: derived
/api/Upload/user:
post:
tags:
- Upload
summary: Replaces user cover image and locks it with a base64 encoded image
description: You MUST be the user in question
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
text/json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
application/*+json:
schema:
$ref: '#/components/schemas/UploadCoverFileDto'
responses:
'200':
description: OK
operationId: postApiUploadUser
x-operation-id-source: derived
components:
schemas:
UploadCoverFileDto:
required:
- id
type: object
properties:
id:
type: integer
format: int32
url:
type:
- string
- 'null'
fileName:
type:
- string
- 'null'
lockCover:
type: boolean
additionalProperties: false
UploadUrlDto:
required:
- url
type: object
properties:
url:
minLength: 1
type: string
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header