Kavita Device API
Responsible for interacting and creating Devices
Responsible for interacting and creating Devices
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-device-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 Device 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: Device
description: Responsible for interacting and creating Devices
paths:
/api/Device/create:
post:
tags:
- Device
summary: Creates a new Device
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/CreateEmailDeviceDto'
application/*+json:
schema:
$ref: '#/components/schemas/CreateEmailDeviceDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
application/json:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
operationId: postApiDeviceCreate
x-operation-id-source: derived
/api/Device/update:
post:
tags:
- Device
summary: Updates an existing Device
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateEmailDeviceDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateEmailDeviceDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
application/json:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/EmailDeviceDto'
operationId: postApiDeviceUpdate
x-operation-id-source: derived
/api/Device:
delete:
tags:
- Device
summary: Deletes the device from the user
parameters:
- name: deviceId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
operationId: deleteApiDevice
x-operation-id-source: derived
get:
tags:
- Device
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/EmailDeviceDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmailDeviceDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/EmailDeviceDto'
summary: Get api device
x-summary-source: derived
operationId: getApiDevice
x-operation-id-source: derived
/api/Device/send-to:
post:
tags:
- Device
summary: Sends a collection of chapters to the user's device
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SendToEmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/SendToEmailDeviceDto'
application/*+json:
schema:
$ref: '#/components/schemas/SendToEmailDeviceDto'
responses:
'200':
description: OK
operationId: postApiDeviceSendTo
x-operation-id-source: derived
/api/Device/send-series-to:
post:
tags:
- Device
summary: Attempts to send a whole series to a device
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/SendSeriesToEmailDeviceDto'
text/json:
schema:
$ref: '#/components/schemas/SendSeriesToEmailDeviceDto'
application/*+json:
schema:
$ref: '#/components/schemas/SendSeriesToEmailDeviceDto'
responses:
'200':
description: OK
operationId: postApiDeviceSendSeriesTo
x-operation-id-source: derived
/api/Device/client/devices:
get:
tags:
- Device
summary: Get my client devices
parameters:
- name: includeInactive
in: query
description: ''
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
operationId: getApiDeviceClientDevices
x-operation-id-source: derived
/api/Device/client/all-devices:
get:
tags:
- Device
summary: Get All user client devices
parameters:
- name: includeInactive
in: query
description: ''
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClientDeviceDto'
operationId: getApiDeviceClientAllDevices
x-operation-id-source: derived
/api/Device/client/device:
delete:
tags:
- Device
summary: Removes the client device from DB
parameters:
- name: clientDeviceId
in: query
description: ''
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
type: boolean
application/json:
schema:
type: boolean
text/json:
schema:
type: boolean
operationId: deleteApiDeviceClientDevice
x-operation-id-source: derived
/api/Device/client/update-name:
post:
tags:
- Device
summary: Update the friendly name of the Device
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateClientDeviceNameDto'
text/json:
schema:
$ref: '#/components/schemas/UpdateClientDeviceNameDto'
application/*+json:
schema:
$ref: '#/components/schemas/UpdateClientDeviceNameDto'
responses:
'200':
description: OK
operationId: postApiDeviceClientUpdateName
x-operation-id-source: derived
components:
schemas:
AuthenticationType:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — Unknown
- `1` — JWT
- `2` — AuthKey
- `3` — OIDC'
format: int32
x-enum-varnames:
- Unknown
- JWT
- AuthKey
- OIDC
x-enum-descriptions:
- Unknown
- JWT
- AuthKey
- OIDC
ClientDevicePlatform:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Unknown
- `1` — Windows
- `2` — macOS (MacOs)
- `3` — IOs (Ios)
- `4` — Linux
- `5` — Android'
format: int32
x-enum-varnames:
- Unknown
- Windows
- MacOs
- Ios
- Linux
- Android
x-enum-descriptions:
- Unknown
- Windows
- macOS
- IOs
- Linux
- Android
UpdateEmailDeviceDto:
required:
- emailAddress
- id
- name
- platform
type: object
properties:
id:
type: integer
format: int32
name:
minLength: 1
type: string
platform:
$ref: '#/components/schemas/EmailDevicePlatform'
emailAddress:
minLength: 1
type: string
additionalProperties: false
ClientInfoDto:
type: object
properties:
userAgent:
type:
- string
- 'null'
ipAddress:
type:
- string
- 'null'
authType:
$ref: '#/components/schemas/AuthenticationType'
clientType:
$ref: '#/components/schemas/ClientDeviceType'
appVersion:
type:
- string
- 'null'
browser:
type:
- string
- 'null'
browserVersion:
type:
- string
- 'null'
platform:
$ref: '#/components/schemas/ClientDevicePlatform'
deviceType:
type:
- string
- 'null'
screenWidth:
type:
- integer
- 'null'
format: int32
screenHeight:
type:
- integer
- 'null'
format: int32
orientation:
type:
- string
- 'null'
additionalProperties: false
ClientDeviceType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
type: integer
description: 'Members:
- `0` — Unknown
- `1` — Web Browser (WebBrowser)
- `2` — Web App (WebApp)
- `3` — KOReader (KoReader)
- `4` — Panels
- `5` — Librera
- `6` — OPDS Client (OpdsClient)'
format: int32
x-enum-varnames:
- Unknown
- WebBrowser
- WebApp
- KoReader
- Panels
- Librera
- OpdsClient
x-enum-descriptions:
- Unknown
- Web Browser
- Web App
- KOReader
- Panels
- Librera
- OPDS Client
UpdateClientDeviceNameDto:
type: object
properties:
deviceId:
type: integer
format: int32
name:
type:
- string
- 'null'
additionalProperties: false
ClientDeviceDto:
type: object
properties:
id:
type: integer
format: int32
friendlyName:
type:
- string
- 'null'
uiFingerprint:
type:
- string
- 'null'
currentClientInfo:
$ref: '#/components/schemas/ClientInfoDto'
firstSeenUtc:
type: string
format: date-time
lastSeenUtc:
type: string
format: date-time
ownerUsername:
type:
- string
- 'null'
ownerUserId:
type: integer
format: int32
additionalProperties: false
SendToEmailDeviceDto:
type: object
properties:
deviceId:
type: integer
format: int32
chapterIds:
type:
- array
- 'null'
items:
type: integer
format: int32
additionalProperties: false
CreateEmailDeviceDto:
required:
- emailAddress
- name
- platform
type: object
properties:
name:
minLength: 1
type: string
platform:
$ref: '#/components/schemas/EmailDevicePlatform'
emailAddress:
minLength: 1
type: string
additionalProperties: false
EmailDeviceDto:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
emailAddress:
type:
- string
- 'null'
platform:
$ref: '#/components/schemas/EmailDevicePlatform'
additionalProperties: false
EmailDevicePlatform:
enum:
- 0
- 1
- 2
- 3
type: integer
description: 'Members:
- `0` — Custom
- `1` — PocketBook
- `2` — Kindle
- `3` — Kobo'
format: int32
x-enum-varnames:
- Custom
- PocketBook
- Kindle
- Kobo
x-enum-descriptions:
- Custom
- PocketBook
- Kindle
- Kobo
SendSeriesToEmailDeviceDto:
type: object
properties:
deviceId:
type: integer
format: int32
seriesId:
type: integer
format: int32
additionalProperties: false
securitySchemes:
AuthKey:
type: apiKey
description: Auth Key authentication. Enter your Auth key from your user settings
name: x-api-key
in: header