Kavita Kavita Plus Audit API
The KavitaPlusAudit API from Kavita — 6 operation(s) for kavitaplusaudit.
The KavitaPlusAudit API from Kavita — 6 operation(s) for kavitaplusaudit.
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-kavitaplusaudit-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 Plus Audit 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: KavitaPlusAudit
paths:
/api/kavita-plus-audit/entries:
post:
tags:
- KavitaPlusAudit
summary: Returns a paged, filtered list of all Kavita+ audit events. Admin only
parameters:
- name: PageNumber
in: query
schema:
type: integer
format: int32
- name: PageSize
in: query
schema:
type: integer
format: int32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
text/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
operationId: postApiKavitaPlusAuditEntries
x-operation-id-source: derived
/api/kavita-plus-audit/entries/series/{seriesId}:
get:
tags:
- KavitaPlusAudit
summary: Returns Kavita+ audit info scoped to a single series, for the popover.
parameters:
- name: seriesId
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/KavitaPlusAuditSeriesInfoDto'
application/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditSeriesInfoDto'
text/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditSeriesInfoDto'
operationId: getApiKavitaPlusAuditEntriesSeriesBySeriesId
x-operation-id-source: derived
/api/kavita-plus-audit/stats:
get:
tags:
- KavitaPlusAudit
summary: Returns aggregate stats for the admin audit feed
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/KavitaPlusAuditStatsDto'
application/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditStatsDto'
text/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditStatsDto'
operationId: getApiKavitaPlusAuditStats
x-operation-id-source: derived
/api/kavita-plus-audit/my-stats:
get:
tags:
- KavitaPlusAudit
summary: Aggregate stats for my activity audit feed
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/KavitaPlusMyAuditStatsDto'
application/json:
schema:
$ref: '#/components/schemas/KavitaPlusMyAuditStatsDto'
text/json:
schema:
$ref: '#/components/schemas/KavitaPlusMyAuditStatsDto'
operationId: getApiKavitaPlusAuditMyStats
x-operation-id-source: derived
/api/kavita-plus-audit/my-activity:
post:
tags:
- KavitaPlusAudit
summary: Returns the calling user's own Kavita+ activity, paged and filtered
parameters:
- name: PageNumber
in: query
schema:
type: integer
format: int32
- name: PageSize
in: query
schema:
type: integer
format: int32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
text/json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
application/*+json:
schema:
$ref: '#/components/schemas/KavitaPlusAuditFilterDto'
responses:
'200':
description: OK
content:
text/plain:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
operationId: postApiKavitaPlusAuditMyActivity
x-operation-id-source: derived
/api/kavita-plus-audit/failed-scrobble-events:
get:
tags:
- KavitaPlusAudit
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
summary: Get api kavita plus audit failed scrobble events
x-summary-source: derived
operationId: getApiKavitaPlusAuditFailedScrobbleEvents
x-operation-id-source: derived
components:
schemas:
AuditLogMatchExternalIdsParamsDto:
type: object
properties:
aniListId:
type: integer
format: int32
malId:
type: integer
format: int64
mangaBakaId:
type: integer
format: int64
mangaBakaEditionId:
type:
- string
- 'null'
cbrId:
type: integer
format: int32
hardcoverId:
type: integer
format: int32
additionalProperties: false
ScrobbleEventType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Chapter Read (ChapterRead)
- `1` — Add to Want to Read (AddWantToRead)
- `2` — Remove from Want to Read (RemoveWantToRead)
- `3` — Score Updated (ScoreUpdated)
- `4` — Review Added/Updated (Review)
- `5` — Read status Updated (ReadStatusUpdate)'
format: int32
x-enum-varnames:
- ChapterRead
- AddWantToRead
- RemoveWantToRead
- ScoreUpdated
- Review
- ReadStatusUpdate
x-enum-descriptions:
- Chapter Read
- Add to Want to Read
- Remove from Want to Read
- Score Updated
- Review Added/Updated
- Read status Updated
LibraryType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Manga
- `1` — Comic (Flexible) (Comic)
- `2` — Book
- `3` — Image
- `4` — Light Novel (LightNovel)
- `5` — Comic (ComicVine)'
format: int32
x-enum-varnames:
- Manga
- Comic
- Book
- Image
- LightNovel
- ComicVine
x-enum-descriptions:
- Manga
- Comic (Flexible)
- Book
- Image
- Light Novel
- Comic
AuditSubjectType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Series
- `1` — Person
- `2` — Collection
- `3` — Chapter
- `4` — Global
- `5` — Volume'
format: int32
x-enum-varnames:
- Series
- Person
- Collection
- Chapter
- Global
- Volume
x-enum-descriptions:
- Series
- Person
- Collection
- Chapter
- Global
- Volume
KavitaPlusAuditMatchDetailsDto:
type: object
properties:
matchedName:
type:
- string
- 'null'
before:
$ref: '#/components/schemas/AuditLogMatchExternalIdsParamsDto'
after:
$ref: '#/components/schemas/AuditLogMatchExternalIdsParamsDto'
reason:
type:
- string
- 'null'
dontMatch:
type:
- boolean
- 'null'
previousProvider:
$ref: '#/components/schemas/MetadataProvider'
newProvider:
$ref: '#/components/schemas/MetadataProvider'
isProviderOverride:
type:
- boolean
- 'null'
additionalProperties: false
KavitaPlusAuditEntryDto:
type: object
properties:
id:
type: integer
format: int64
createdUtc:
type: string
format: date-time
category:
$ref: '#/components/schemas/KavitaPlusAuditCategory'
eventType:
$ref: '#/components/schemas/KavitaPlusEventType'
status:
$ref: '#/components/schemas/AuditStatus'
seriesId:
type:
- integer
- 'null'
format: int32
libraryId:
type:
- integer
- 'null'
format: int32
seriesName:
type:
- string
- 'null'
subjectType:
$ref: '#/components/schemas/AuditSubjectType'
subjectId:
type:
- integer
- 'null'
format: int32
userId:
type:
- integer
- 'null'
format: int32
username:
type:
- string
- 'null'
diff:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MetadataFieldChangeDto'
errorMessage:
type:
- string
- 'null'
scrobbleErrorId:
type:
- integer
- 'null'
format: int32
scrobbleDetails:
$ref: '#/components/schemas/KavitaPlusScrobbleDetailsDto'
matchDetails:
$ref: '#/components/schemas/KavitaPlusAuditMatchDetailsDto'
syncDetails:
$ref: '#/components/schemas/KavitaPlusAuditSyncDetailsDto'
metadataExtras:
$ref: '#/components/schemas/KavitaPlusAuditMetadataExtrasDto'
systemDetails:
$ref: '#/components/schemas/KavitaPlusAuditSystemDetailsDto'
canRetry:
type: boolean
additionalProperties: false
MetadataFetchTrigger:
enum:
- 0
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `0` — Unknown
- `1` — Series Added (SeriesAdded)
- `2` — On Demand (OnDemand)
- `3` — Manual Match (ManualMatch)
- `4` — Scheduled Refresh (ScheduledRefresh)'
format: int32
x-enum-varnames:
- Unknown
- SeriesAdded
- OnDemand
- ManualMatch
- ScheduledRefresh
x-enum-descriptions:
- Unknown
- Series Added
- On Demand
- Manual Match
- Scheduled Refresh
KavitaPlusEventType:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 10
- 11
- 13
- 20
- 21
- 22
- 30
- 31
- 40
- 41
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 60
- 61
- 62
- 80
- 81
type: integer
description: 'Members:
- `0` — SeriesMatched
- `1` — SeriesMatchFailed
- `2` — SeriesBlacklisted
- `3` — SeriesMatchFixed
- `4` — SeriesDontMatchSet
- `5` — SeriesMetadataProviderOverrideSet
- `10` — MetadataFetched
- `11` — MetadataUpdated
- `13` — CoverUpdated
- `20` — ChapterMetadataUpdated
- `21` — ChapterCoverUpdated
- `22` — VolumeCoverUpdated
- `30` — PersonCoverUpdated
- `31` — PersonAliasAdded
- `40` — CollectionSynced
- `41` — CollectionItemAdded
- `50` — ScrobbleEventCreated
- `51` — ScrobbleEventUpdated
- `52` — ScrobbleEventSent
- `53` — ScrobbleEventFailed
- `54` — ScrobbleRateLimitHit
- `55` — ScrobbleEventSkipped
- `56` — ScrobbleHoldRemoved
- `57` — ScrobbleHoldAdded
- `60` — SyncStarted
- `61` — SyncCompleted
- `62` — SyncFailed
- `80` — SystemTokenRefresh
- `81` — SystemProviderInfoSync'
format: int32
x-enum-varnames:
- SeriesMatched
- SeriesMatchFailed
- SeriesBlacklisted
- SeriesMatchFixed
- SeriesDontMatchSet
- SeriesMetadataProviderOverrideSet
- MetadataFetched
- MetadataUpdated
- CoverUpdated
- ChapterMetadataUpdated
- ChapterCoverUpdated
- VolumeCoverUpdated
- PersonCoverUpdated
- PersonAliasAdded
- CollectionSynced
- CollectionItemAdded
- ScrobbleEventCreated
- ScrobbleEventUpdated
- ScrobbleEventSent
- ScrobbleEventFailed
- ScrobbleRateLimitHit
- ScrobbleEventSkipped
- ScrobbleHoldRemoved
- ScrobbleHoldAdded
- SyncStarted
- SyncCompleted
- SyncFailed
- SystemTokenRefresh
- SystemProviderInfoSync
x-enum-descriptions:
- SeriesMatched
- SeriesMatchFailed
- SeriesBlacklisted
- SeriesMatchFixed
- SeriesDontMatchSet
- SeriesMetadataProviderOverrideSet
- MetadataFetched
- MetadataUpdated
- CoverUpdated
- ChapterMetadataUpdated
- ChapterCoverUpdated
- VolumeCoverUpdated
- PersonCoverUpdated
- PersonAliasAdded
- CollectionSynced
- CollectionItemAdded
- ScrobbleEventCreated
- ScrobbleEventUpdated
- ScrobbleEventSent
- ScrobbleEventFailed
- ScrobbleRateLimitHit
- ScrobbleEventSkipped
- ScrobbleHoldRemoved
- ScrobbleHoldAdded
- SyncStarted
- SyncCompleted
- SyncFailed
- SystemTokenRefresh
- SystemProviderInfoSync
ScrobbleProvider:
enum:
- 0
- 1
- 2
- 4
- 5
- 6
type: integer
description: 'Members:
- `0` — Kavita
- `1` — AniList
- `2` — Mal
- `4` — Cbr
- `5` — Hardcover
- `6` — MangaBaka'
format: int32
x-enum-varnames:
- Kavita
- AniList
- Mal
- Cbr
- Hardcover
- MangaBaka
x-enum-descriptions:
- Kavita
- AniList
- Mal
- Cbr
- Hardcover
- MangaBaka
KavitaPlusAuditFilterDto:
type: object
properties:
category:
$ref: '#/components/schemas/KavitaPlusAuditCategory'
status:
$ref: '#/components/schemas/AuditStatus'
subjectType:
$ref: '#/components/schemas/AuditSubjectType'
provider:
$ref: '#/components/schemas/ScrobbleProvider'
userId:
type:
- integer
- 'null'
format: int32
seriesId:
type:
- integer
- 'null'
format: int32
fromUtc:
type:
- string
- 'null'
format: date-time
toUtc:
type:
- string
- 'null'
format: date-time
search:
type:
- string
- 'null'
additionalProperties: false
AuditStatus:
enum:
- 0
- 1
- 2
type: integer
description: 'Members:
- `0` — Success
- `1` — Failure
- `2` — Info'
format: int32
x-enum-varnames:
- Success
- Failure
- Info
x-enum-descriptions:
- Success
- Failure
- Info
MetadataFieldChangeDto:
type: object
properties:
field:
$ref: '#/components/schemas/MetadataFieldChangeKind'
from: {}
to: {}
note:
type:
- string
- 'null'
additionalProperties: false
MetadataProvider:
enum:
- 2
- 3
- 4
type: integer
description: 'Members:
- `2` — Hardcover
- `3` — Mangabaka
- `4` — ComicBookRoundup'
format: int32
x-enum-varnames:
- Hardcover
- Mangabaka
- ComicBookRoundup
x-enum-descriptions:
- Hardcover
- Mangabaka
- ComicBookRoundup
KavitaPlusAuditSyncDetailsDto:
type: object
properties:
collectionName:
type:
- string
- 'null'
stackId:
type:
- string
- 'null'
itemCount:
type:
- integer
- 'null'
format: int32
missingCount:
type:
- integer
- 'null'
format: int32
collectionUrl:
type:
- string
- 'null'
seriesName:
type:
- string
- 'null'
seriesId:
type:
- integer
- 'null'
format: int32
userName:
type:
- string
- 'null'
hasMal:
type:
- boolean
- 'null'
hasAniList:
type:
- boolean
- 'null'
seriesMatched:
type:
- integer
- 'null'
format: int32
additionalProperties: false
ScrobbleReadStatus:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
description: 'Members:
- `0` — Ignore
- `1` — Want to Read (WantToRead)
- `2` — Read
- `3` — Un read (UnRead)
- `4` — Dropped
- `5` — On hold (OnHold)'
format: int32
x-enum-varnames:
- Ignore
- WantToRead
- Read
- UnRead
- Dropped
- OnHold
x-enum-descriptions:
- Ignore
- Want to Read
- Read
- Un read
- Dropped
- On hold
KavitaPlusAuditMetadataExtrasDto:
type: object
properties:
coverUrl:
type:
- string
- 'null'
issueNumber:
type:
- string
- 'null'
volumeNumber:
type:
- string
- 'null'
personName:
type:
- string
- 'null'
aliasAdded:
type:
- string
- 'null'
fetchTrigger:
$ref: '#/components/schemas/MetadataFetchTrigger'
additionalProperties: false
KavitaPlusScrobbleDetailsDto:
type: object
properties:
scrobbleEventType:
$ref: '#/components/schemas/ScrobbleEventType'
chapterNumber:
type:
- integer
- 'null'
format: int32
volumeNumber:
type:
- number
- 'null'
format: float
percentRead:
type:
- number
- 'null'
format: float
rating:
type:
- number
- 'null'
format: float
reviewBody:
type:
- string
- 'null'
readStatus:
$ref: '#/components/schemas/ScrobbleReadStatus'
provider:
$ref: '#/components/schemas/ScrobbleProvider'
libraryType:
$ref: '#/components/schemas/LibraryType'
additionalProperties: false
KavitaPlusUserInfo:
required:
- username
type: object
properties:
username:
type:
- string
- 'null'
additionalProperties: false
KavitaPlusMyAuditStatsDto:
type: object
properties:
events24H:
type: integer
format: int32
failures24H:
type: integer
format: int32
scrobbleQueueCount:
type: integer
format: int32
additionalProperties: false
KavitaPlusAuditSeriesInfoDto:
type: object
properties:
seriesId:
type: integer
format: int32
libraryId:
type: integer
format: int32
seriesName:
type:
- string
- 'null'
isMatched:
type: boolean
aniListId:
type:
- integer
- 'null'
format: int32
malId:
type:
- integer
- 'null'
format: int64
hardcoverId:
type:
- integer
- 'null'
format: int32
metronId:
type:
- integer
- 'null'
format: int64
comicVineId:
type:
- string
- 'null'
mangaBakaId:
type:
- integer
- 'null'
format: int32
cbrId:
type:
- integer
- 'null'
format: int32
isStandAlone:
type: boolean
metadataProvider:
$ref: '#/components/schemas/MetadataProvider'
nextRefreshUtc:
type:
- string
- 'null'
format: date-time
lastRefreshedUtc:
type:
- string
- 'null'
format: date-time
recentEvents:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/KavitaPlusAuditEntryDto'
additionalProperties: false
KavitaPlusAuditSystemDetailsDto:
type: object
properties:
provider:
$ref: '#/components/schemas/ScrobbleProvider'
validUntilUtc:
type:
- string
- 'null'
format: date-time
userInfo:
$ref: '#/components/schemas/KavitaPlusUserInfo'
additionalProperties: false
MetadataFieldChangeKind:
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
type: integer
description: 'Members:
- `1` — Relationships
- `2` — Characters
- `3` — Artists
- `4` — Writers
- `5` — Tags
- `6` — Genres
- `7` — PublicationStatus
- `8` — AgeRating
- `9` — ExternalIds
- `10` — Summary
- `11` — Title
- `12` — ReleaseDate
- `13` — ReleaseYear
- `14` — LocalizedName
- `15` — Name'
format: int32
x-enum-varnames:
- Relationships
- Characters
- Artists
- Writers
- Tags
- Genres
- PublicationStatus
- AgeRating
- ExternalIds
- Summary
- Title
- ReleaseDate
- ReleaseYear
- LocalizedName
- Name
x-enum-descriptions:
- Relationships
- Characters
- Artists
- Writers
- Tags
- Genres
- PublicationStatus
- AgeRating
- ExternalIds
- Summary
- Title
- ReleaseDate
- ReleaseYear
- LocalizedName
- Name
KavitaPlusAuditCategory:
enum:
- 0
- 1
- 2
- 3
- 4
type: integer
description: 'Members:
- `0` — Match
- `1` — Metadata
- `2` — Scrobble
- `3` — Sync
- `4` — System'
format: int32
x-enum-varnames:
- Match
- Metadata
- Scrobble
- Sync
- System
x-enum-descriptions:
- Match
- Metadata
- Scrobble
- Sync
- System
KavitaPlusAuditStatsDto:
type: object
properties:
events24H:
type: integer
format: int32
failures24H:
type: integer
format: int32
unresolvedMatchFailures:
type: integer
format: int32
matchedSeriesCount:
type: integer
format: int32
totalEligibleSeriesCount:
type: integer
format: int32
staleMatchesCount:
type: integer
format: int32
blacklistedSeriesCount:
type: integer
format: int32
scrobbleQueueCount:
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