Skip to main content

HTTP API

Interactive API docs (served by a running Athenaeum instance): /docs. Machine-readable: GET /api/openapi.json (OpenAPI 3) and GET /api/docs (JSON). Key management is under Settings -> API.

Mutating browser requests require the X-CSRF-Token header (not needed for Basic Auth or API keys). Auth when users exist: session cookie, HTTP Basic, or API key (Authorization: Bearer ath_<token> or X-API-Key: ath_<token>).

Docs and health

MethodPathDescription
GET/api/docsAPI reference (JSON)
GET/api/healthHealth check and optional telemetry config
GET/api/i18n/localesList UI locales
GET/api/i18n/templateTranslation template
GET/api/i18n/{locale}Messages for one locale
GET/api/openapi.jsonOpenAPI 3.0 specification
GET/docsInteractive OpenAPI UI
GET/docs/app.jsInteractive OpenAPI UI
GET/metricsPrometheus metrics (if enabled)

Authentication

MethodPathDescription
GET/api/altcha/challengeALTCHA PoW challenge (builtin)
GET/api/auth/api-keysList API keys
POST/api/auth/api-keysCreate API key
DELETE/api/auth/api-keys/{id}Revoke API key
GET/api/auth/auditAudit log
GET/api/auth/csrfIssue CSRF token cookie
GET/api/auth/kindle-emailPer-user Kindle/email delivery address
PUT/api/auth/kindle-emailPer-user Kindle/email delivery address
POST/api/auth/loginCreate session
POST/api/auth/logoutEnd session
GET/api/auth/meCurrent user
GET/api/auth/methodsAvailable login methods
GET/api/auth/oidc/configOIDC / SSO configuration
PUT/api/auth/oidc/configOIDC / SSO configuration
POST/api/auth/oidc/discoverDiscover OIDC endpoints from issuer
PUT/api/auth/passwordChange own password
POST/api/auth/password/checkCheck password against policy
PUT/api/auth/profileRename current user
GET/api/auth/reader-prefsSynced reader preferences
PUT/api/auth/reader-prefsSynced reader preferences
POST/api/auth/refreshRotate access token
POST/api/auth/registerCreate user (admin)
POST/api/auth/register-publicSelf-register (when enabled)
DELETE/api/auth/sessionsRevoke all other sessions (?all=true revokes every session including the current one)
GET/api/auth/sessionsList your sessions
DELETE/api/auth/sessions/{id}Revoke one session
GET/api/auth/settingsAuth settings (registration, require TOTP)
PUT/api/auth/settingsAuth settings (registration, require TOTP)
GET/api/auth/setupSetup / auth status
POST/api/auth/setupCreate first admin
POST/api/auth/totp/disableDisable TOTP
POST/api/auth/totp/enableConfirm TOTP with code
POST/api/auth/totp/setupCreate first admin
POST/api/auth/totp/verifyVerify TOTP during login
GET/api/auth/usersList users
POST/api/auth/users/guestCreate guest account
GET/api/auth/users/guestsList guests
POST/api/auth/users/guests/bulk-deleteRevoke guest accounts
POST/api/auth/users/guests/{id}/extendExtend guest expiry
POST/api/invitesCreate invite
GET/api/invitesList invites
DELETE/api/invites/{id}Revoke invite
GET/api/invite/{token}Invite metadata (public)
POST/api/invite/{token}/acceptAccept invite (public)
DELETE/api/auth/users/{id}Delete user
PUT/api/auth/users/{id}/adminGrant/revoke admin
GET/api/auth/users/{id}/librariesPer-user library access
PUT/api/auth/users/{id}/librariesPer-user library access
PUT/api/auth/users/{id}/passwordReset password (admin)
PUT/api/auth/users/{id}/permissionsSet non-admin permissions
GET/api/auth/users/{id}/sessionsList sessions for a user (admin)
GET/api/authorsAuthors with counts
GET/auth/oidc/callbackOIDC callback
GET/auth/oidc/loginCreate session

Library mounts and scan

MethodPathDescription
GET/api/fs/browseBrowse host filesystem (admin)
GET/api/librariesList library mounts
POST/api/librariesAdd library mount (local or s3)
POST/api/libraries/test-s3Validate S3 credentials
PUT/api/libraries/reorderReorder mounts
DELETE/api/libraries/{id}Remove mount
GET/api/libraries/{id}Get one mount
PUT/api/libraries/{id}Update mount
POST/api/libraries/{id}/scanScan one mount
POST/api/libraries/{id}/uploadsStart resumable upload
DELETE/api/libraries/{id}/uploads/{uploadId}Cancel upload
GET/api/libraries/{id}/uploads/{uploadId}Upload status
PATCH/api/libraries/{id}/uploads/{uploadId}Upload chunk
POST/api/library/metadata/matchStart bulk metadata match
GET/api/library/metadata/match/statusBulk metadata match status
POST/api/library/bibtex/importMatch BibTeX entries to existing books
POST/api/library/scanBackground rescan all
GET/api/library/scan/statusLive scan progress
POST/api/library/series/cleanupCleanup series names
GET/api/library/statsLibrary counts and flags
GET/api/metadata/providersMetadata providers

Books and reading

MethodPathDescription
GET/api/authorsAuthors with counts
GET/api/booksList books
DELETE/api/books/{id}Delete book
GET/api/books/{id}Book detail
PUT/api/books/{id}Edit metadata
GET/api/books/{id}/bookmarksList bookmarks
POST/api/books/{id}/bookmarksAdd bookmark
DELETE/api/books/{id}/bookmarks/{bookmarkId}Delete bookmark
GET/api/books/{id}/chaptersAudiobook chapters
POST/api/books/{id}/convertConvert book format
DELETE/api/books/{id}/coverRemove cover
GET/api/books/{id}/coverCover image
PUT/api/books/{id}/coverUpload cover
PUT/api/books/{id}/cover-from-urlSet cover from URL
GET/api/books/{id}/downloadDownload attachment
GET/api/books/{id}/favoriteFavorite status / toggle
PUT/api/books/{id}/favoriteFavorite status / toggle
GET/api/books/{id}/fileStream file (HTTP Range)
GET/api/books/{id}/highlightsList highlights
POST/api/books/{id}/highlightsAdd highlight
DELETE/api/books/{id}/highlights/{highlightId}Delete highlight
POST/api/books/{id}/metadata/applyApply metadata match
POST/api/books/{id}/metadata/searchSearch external metadata
GET/api/books/{id}/bibtexDownload BibTeX for one book
GET/api/books/bibtexDownload BibTeX (?ids= or ?format=papers)
GET/api/books/{id}/mobi-sectionsMOBI/AZW section list
GET/api/books/{id}/pagesComic page list
GET/api/books/{id}/pages/{page}Comic page image
GET/api/books/{id}/progressReading progress
PUT/api/books/{id}/progressReading progress
GET/api/books/{id}/ratingStar rating (1-5, 0 clears)
PUT/api/books/{id}/ratingStar rating (1-5, 0 clears)
POST/api/books/{id}/reading-timeAdd reading seconds
POST/api/books/{id}/sendSend via SMTP/Kindle
GET/api/books/{id}/shareList share links
POST/api/books/{id}/shareCreate share link
DELETE/api/books/{id}/share/{shareId}Revoke share link
GET/api/books/{id}/tagsList tags on book
POST/api/books/{id}/tagsAdd tag to book
PUT/api/books/{id}/tagsReplace book tags
DELETE/api/books/{id}/tags/{tagId}Remove tag from book
GET/api/books/{id}/tracksAudiobook tracks
GET/api/favoritesFavorite status / toggle
GET/api/seriesSeries with counts
GET/api/stats/readingUser reading stats
GET/api/tagsList tags
POST/api/tagsCreate tag

Collections

MethodPathDescription
GET/api/collectionsList shelves
POST/api/collectionsCreate shelf
DELETE/api/collections/{id}Delete shelf
GET/api/collections/{id}Get shelf
PUT/api/collections/{id}Update shelf
DELETE/api/collections/{id}/books/{bookId}Remove book from shelf
POST/api/collections/{id}/books/{bookId}Add book to shelf

Sharing and delivery

MethodPathDescription
GET/api/admin/smtpSMTP delivery settings
PUT/api/admin/smtpSMTP delivery settings
GET/api/auth/kindle-emailPer-user Kindle/email delivery address
PUT/api/auth/kindle-emailPer-user Kindle/email delivery address
POST/api/books/{id}/sendSend via SMTP/Kindle
GET/api/books/{id}/shareList share links
POST/api/books/{id}/shareCreate share link
DELETE/api/books/{id}/share/{shareId}Revoke share link
GET/api/share/{token}Share metadata (public)
GET/opds/kindleOPDS Kindle-friendly feed
GET/share/{token}/downloadDownload attachment

Narration (TTS)

MethodPathDescription
GET/api/admin/ttsKokoro TTS settings
PUT/api/admin/ttsUpdate Kokoro TTS settings
POST/api/admin/tts/testPing Kokoro sidecar
GET/api/tts/statusWhether Kokoro TTS is enabled
POST/api/tts/synthesizeSynthesize speech via Kokoro
GET/api/tts/voicesList Kokoro voices

Admin and maintenance

MethodPathDescription
GET/api/admin/backupDownload data zip
GET/api/admin/config/exportExport config JSON
POST/api/admin/config/importImport config JSON
POST/api/admin/content-indexIndex EPUB full text
POST/api/admin/restoreRestore from zip
GET/api/admin/serverServer settings (metrics, proxy, CSP, CORS)
PUT/api/admin/serverServer settings (metrics, proxy, CSP, CORS)
GET/api/admin/smtpSMTP delivery settings
PUT/api/admin/smtpSMTP delivery settings
GET/api/admin/pocketidPocket ID connector
PUT/api/admin/pocketidPocket ID connector
POST/api/admin/pocketid/testTest Pocket ID API
POST/api/admin/pocketid/apply-oidcApply Pocket ID to OIDC
GET/api/admin/pocketid/signup-tokensList Pocket ID signup tokens
POST/api/admin/pocketid/signup-tokensCreate Pocket ID signup token
DELETE/api/admin/pocketid/signup-tokens/{id}Delete signup token
GET/api/admin/webhooksList webhooks
POST/api/admin/webhooksCreate webhook
GET/api/admin/webhooks/{id}Get webhook
PUT/api/admin/webhooks/{id}Update webhook
DELETE/api/admin/webhooks/{id}Delete webhook
GET/api/admin/webhooks/{id}/deliveriesDelivery log
POST/api/admin/webhooks/{id}/testSend test ping
POST/api/admin/tasks/cleanup-coversCleanup orphan covers
POST/api/admin/tasks/cleanup-seriesCleanup series metadata
POST/api/admin/tasks/cleanup-textCleanup text fields
POST/api/admin/tasks/prune-missingPrune missing files from DB
POST/api/admin/tasks/regenerate-coversRegenerate covers
GET/api/admin/tasks/statusMaintenance task status
POST/api/admin/tasks/verifyVerify library integrity
GET/api/admin/ttsKokoro TTS settings
PUT/api/admin/ttsUpdate Kokoro TTS settings
POST/api/admin/tts/testPing Kokoro sidecar
DELETE/api/offlineRevoke offline grant
GET/api/offlineList offline grants
POST/api/offlineGrant offline book
GET/api/system/statsHost CPU/memory/disk and version

OPDS and KOSync

MethodPathDescription
PUT/kosync/syncs/progressReading progress
GET/kosync/syncs/progress/{document}Reading progress
GET/kosync/users/authKOSync authenticate
GET/opds/OPDS 1.2 navigation catalog
GET/opds/comicsOPDS comics feed
GET/opds/kindleOPDS Kindle-friendly feed
GET/opds/papersOPDS research papers feed
GET/opds/recentOPDS recent acquisitions
GET/opds/searchOPDS search feed
GET/opds/seriesOPDS series navigation
GET/opds/series/{name}OPDS books in series
GET/opds/v2/OPDS 2 catalog
GET/opds/v2/recentOPDS 2 catalog