Tome
Integrations

API reference

Every endpoint lives under /api and accepts either a JWT (from login) or a tome_* bearer token. See API tokens for how to create one. All request/response bodies are JSON unless noted.

Reading time

Auth

MethodPathDescription
POST/api/auth/loginAuthenticate, returns JWT
GET/api/auth/meCurrent user profile
PUT/api/auth/meUpdate username / email
PUT/api/auth/me/passwordChange password
GET/api/auth/me/statsReading stats for current user
GET/api/auth/me/backupExport user data as JSON

Books

MethodPathDescription
GET/api/booksList books (supports ?q=, ?series=, ?author=, ?library_id=, ?per_page=)
GET/api/books/{id}Book detail with files, tags, libraries
PUT/api/books/{id}Update metadata fields
DELETE/api/books/{id}Delete a book and its files
POST/api/books/uploadUpload a file (multipart form, file + optional book_type_id)
POST/api/books/scanScan TOME_LIBRARY_DIR for new files
POST/api/books/importImport from TOME_INCOMING_DIR
POST/api/books/ingestProgrammatic ingest (used by Scribe)
POST/api/books/check-hashesCheck content hashes for deduplication

Metadata

MethodPathDescription
GET/api/books/{id}/fetch-metadataFetch candidates from Hardcover / Google / OpenLibrary
POST/api/books/{id}/apply-metadataApply selected metadata fields from a candidate
PUT/api/books/bulk-metadataBulk-update metadata on multiple books
POST/api/books/bulk-fetch-candidatesFetch metadata candidates for up to 100 books
POST/api/books/bulk-fetch-metadataAuto-fill empty fields from best match

Covers

MethodPathDescription
GET/api/books/{id}/coverServe cover image
GET/api/books/{id}/cover-candidatesSearch for cover images (?q=)
POST/api/books/{id}/coverSet cover from URL or file upload

Downloads & reading

MethodPathDescription
GET/api/books/{id}/download/{file_id}Download a book file (with embedded metadata)
POST/api/downloadsBulk download as streaming ZIP
GET/api/books/{id}/read.epubStream EPUB for web reader
GET/api/books/{id}/read.cbzStream CBZ for comic reader
GET/api/books/{id}/read.pdfStream PDF for viewer

Reading status

MethodPathDescription
GET/api/books/{id}/statusGet reading status for current user
PUT/api/books/{id}/statusSet status (unread / reading / read), progress, CFI
POST/api/books/statusesBatch get statuses for multiple book IDs

Series & facets

MethodPathDescription
GET/api/books/seriesList all series with volume counts
GET/api/books/series-detailFull series page data (?name=)
GET/api/books/facetsAggregated filter options (authors, tags, formats, etc.)
GET/api/books/exportExport library as JSON or CSV

Libraries

MethodPathDescription
GET/api/librariesList libraries visible to current user
POST/api/librariesCreate library (name, icon, is_public)
PUT/api/libraries/{id}Update library
DELETE/api/libraries/{id}Delete library (books are unlinked, not deleted)
POST/api/libraries/{id}/booksAdd books to library (body: {"book_ids": [...]})
DELETE/api/libraries/{id}/books/{book_id}Remove book from library
POST/api/libraries/{id}/usersAssign user to library (admin)
DELETE/api/libraries/{id}/users/{user_id}Remove user from library (admin)

Shelves (saved filters)

MethodPathDescription
GET/api/saved-filtersList current user's shelves
POST/api/saved-filtersSave current filter params as a shelf
PUT/api/saved-filters/{id}Update shelf name / icon
DELETE/api/saved-filters/{id}Delete shelf

Book types

MethodPathDescription
GET/api/book-typesList all book types
POST/api/book-typesCreate book type (admin)
PUT/api/book-types/{id}Update book type
DELETE/api/book-types/{id}Delete book type

TomeSync (KOReader)

MethodPathDescription
GET/api/tome-sync/resolveResolve a file hash to a canonical book ID
GET/api/tome-sync/position/{book_id}Get reading position for a book
PUT/api/tome-sync/position/{book_id}Update reading position
POST/api/tome-sync/sessionRecord a reading session
GET/api/tome-sync/seriesList series available for download
GET/api/tome-sync/download/{book_id}/{file_id}Download file (KOReader format)

Home

MethodPathDescription
GET/api/home/statsDashboard summary (streak, pages, reading time)
GET/api/home/activityRecent reading activity
GET/api/home/forgotten-booksBooks started but not touched recently

Users (admin)

MethodPathDescription
GET/api/usersList all users
POST/api/usersCreate user
PUT/api/users/{id}Update user role / active status
DELETE/api/users/{id}Delete user
POST/api/users/{id}/impersonateImpersonate user (returns their JWT)

Admin

MethodPathDescription
GET/api/admin/duplicatesDetect duplicate books
POST/api/admin/duplicates/mergeMerge duplicate pair
POST/api/admin/duplicates/dismissDismiss duplicate pair
GET/api/admin/audit-logsAudit log entries
GET/api/admin/statsSystem-wide reading stats
GET/api/books/library-healthMisplaced files report
POST/api/books/reorganizeMove files to canonical paths
POST/api/books/purge-empty-dirsClean up empty directories