Skip to content

Engine API Reference

Base URL: http://localhost:61495

Interactive documentation: http://localhost:61495/swagger

All endpoints require authentication unless noted. Three roles: Administrator (full access), Curator (browse + metadata), Consumer (browse only). API keys are passed as X-Api-Key header.


System

Method Path Description Auth
GET /system/status Service health, version, uptime None
GET /system/watcher-status File watcher diagnostic — shows monitored folders and last event Required
POST /maintenance/sweep-orphan-images Scan .data/images/ for directories with no matching database record and remove them. Skips user-uploaded images (user_override flag). Administrator

Library

Method Path Description Auth
GET /library/works All works with their canonical values Required

Hubs

Method Path Description Auth
GET /hubs All media hubs (Series) with their child works Required
GET /hubs/search?q= Search hubs by name. Returns matching Series and Universes. Required

Registry

Method Path Description Auth
GET /registry/items Paginated item list. Supports filtering by status, media type, hub, and search term. Required
GET /registry/items/{entityId}/detail Full item detail including all claims, canonical values, pipeline state, and linked persons Required
GET /registry/counts Status counts for Vault badge indicators (Verified, Provisional, Needs Review, Quarantined) Required
GET /registry/state-counts?batchId= Four-state counts scoped to a specific ingestion batch Required

Metadata

Method Path Description Auth
GET /metadata/claims/{entityId} All claims for an entity, grouped by field, with source and confidence Required
GET /metadata/conflicts All unresolved metadata conflicts across the library Curator
GET /metadata/{entityId}/canon-discrepancies Field-level mismatches between the canonical value and file-embedded metadata Required

Streaming

Method Path Description Auth
GET /stream/{assetId} Stream media file. Supports HTTP 206 byte-range requests for seeking. Required
GET /stream/{assetId}/cover Full-size cover art (JPEG) Required
GET /stream/{assetId}/cover-thumb 200px-wide thumbnail (JPEG, quality 75, SkiaSharp-generated) Required

Ingestion

Method Path Description Auth
POST /ingestion/scan Dry-run scan of configured library folders. Reports what would be ingested without making changes. Administrator
POST /ingestion/library-scan Scan library folders and update known file paths. Triggers ingestion for new files. Administrator
GET /ingestion/watch-folder Returns current watch folder configuration Required

Method Path Description Auth
POST /search/universe Search Wikidata for entity candidates by title, author, and media type Curator
POST /search/retail Search configured retail providers for matching candidates Curator
POST /search/resolve Unified resolve search — queries all active providers and returns ranked candidates Curator

Review Queue

Method Path Description Auth
GET /review/pending All items currently in the review queue Curator
GET /review/count Count of pending review items. Used for Vault badge. Required
GET /review/{id} Full detail for a single review item including candidates Curator
POST /review/{id}/resolve Resolve a review item by selecting a candidate QID or confirming provisional metadata Curator
POST /review/{id}/dismiss Dismiss a review item without resolving it Curator
POST /review/{id}/skip-universe Mark the item as confirmed without universe matching (no QID assignment) Curator

Persons

Method Path Description Auth
GET /persons/{id} Person detail — biographical data, roles, library presence, social links Required
GET /persons/{id}/aliases Pseudonym list for a person, including resolved Wikidata aliases Required

Universes

Method Path Description Auth
GET /universes All narrative roots (Universes) in the library Required
GET /universe/{qid} Universe detail — Series, People, and asset counts Required
GET /universe/{qid}/health Health score — completeness, enrichment freshness, missing metadata indicators Required
GET /universe/{qid}/graph Graph data in Cytoscape.js format for the Chronicle Explorer visualization Required
GET /universe/{qid}/paths Find shortest paths between two entities within the universe graph Required
GET /universe/{qid}/family-tree Character family tree rooted at a specified character entity Required
GET /universe/{qid}/cross-media Entities that appear across more than one media type within the universe Required
GET /universe/{qid}/cast Characters with their linked performers, including era-correct actor data Required
GET /universe/{qid}/adaptations Adaptation chain — all works derived from or adapted into each other Required

AI

Method Path Description Auth
GET /ai/status AI subsystem health — model load state, hardware tier, resource pressure Required
GET /ai/models Status of all configured models (loaded, unloaded, downloading, unavailable) Required
POST /ai/models/{role}/download Trigger download for a model role (text_fast, text_quality, text_scholar, text_cjk, audio) Administrator
POST /ai/models/{role}/load Load a model into memory Administrator
POST /ai/models/{role}/unload Unload a model from memory Administrator
GET /ai/config Full AI configuration Administrator
PUT /ai/config Update AI configuration Administrator
GET /ai/profile Hardware profile — benchmark results, tier classification, GPU backend Required
POST /ai/benchmark Re-run hardware benchmark and reclassify tier Administrator
GET /ai/resources Live system resource usage — CPU load, RAM pressure, active transcoding tasks Required
GET /ai/enrichment/progress Background enrichment batch progress Required
GET /ai/enrich/tldr/{entityId} Generate a TL;DR summary for a work using its description Curator
GET /ai/enrich/vibes/{entityId} Generate vibe tags for a work Curator
POST /ai/enrich/search/intent Parse a natural-language search query into structured field filters Required
POST /ai/enrich/extract-url Extract metadata from a URL (book page, IMDB entry, etc.) Curator

Enrichment

Method Path Description Auth
POST /metadata/pass2/trigger Manually trigger a Pass 2 (deep enrichment) run for one or more entity IDs Curator
GET /metadata/pass2/status Current Pass 2 run status — progress, queue depth, last completed Required

Activity

Method Path Description Auth
GET /activity/recent Recent system activity entries, newest first Required
POST /activity/prune Prune activity entries older than the configured retention period Administrator
GET /activity/stats Aggregated activity statistics — counts by type and outcome Required
PUT /activity/retention Update the activity retention period (days) Administrator
GET /activity/by-types Filter activity log by one or more activity type codes Required
GET /activity/run/{runId} All activity entries for a specific ingestion or enrichment run Required

Admin

Method Path Description Auth
GET /admin/api-keys List all API keys with labels, roles, and creation dates (keys are not returned after creation) Administrator
POST /admin/api-keys Generate a new API key with a label and role Administrator
DELETE /admin/api-keys/{keyId} Revoke an API key immediately Administrator
GET /admin/provider-configs List all provider configurations Administrator
PUT /admin/provider-configs/{providerId} Update a provider configuration Administrator
DELETE /admin/provider-configs/{providerId} Remove a provider configuration Administrator

Settings

Method Path Description Auth
GET /settings/folders List configured library folder paths Required
PUT /settings/folders Update library folder configuration Administrator
POST /settings/test-path Test whether a filesystem path is accessible by the Engine Administrator
GET /settings/providers Provider configuration status — enabled state, last health check, rate limit info Required
GET /settings/server-general Core server settings (name, language preferences, country) Required
PUT /settings/server-general Update core server settings Administrator

Profiles

Method Path Description Auth
GET /profiles List all user profiles Required
POST /profiles Create a new profile Administrator
GET /profiles/{id} Profile detail Required
PUT /profiles/{id} Update a profile Administrator
DELETE /profiles/{id} Delete a profile Administrator

UI Settings

Method Path Description Auth
GET /settings/ui/global Global UI defaults Required
PUT /settings/ui/global Update global UI defaults Administrator
GET /settings/ui/device/{class} Device profile settings for a device class (web, mobile, television, automotive) Required
PUT /settings/ui/device/{class} Update device profile settings Administrator
GET /settings/ui/profile/{id} Per-user UI preference overrides for a profile Required
PUT /settings/ui/profile/{id} Update per-user UI preferences Required
GET /settings/ui/resolved Effective resolved settings for the current request context (global + device + profile merged) Required

Reader

Method Path Description Auth
GET /read/{assetId}/metadata EPUB metadata — title, author, language, cover Required
GET /read/{assetId}/toc Table of contents Required
GET /read/{assetId}/chapter/{index} Chapter content by index Required
GET /read/{assetId}/resource/{path} Embedded resource (CSS, image) by path within the EPUB Required
GET /read/{assetId}/search Full-text search within EPUB content Required
GET /reader/{assetId}/bookmarks List bookmarks for an asset Required
POST /reader/{assetId}/bookmarks Create a bookmark Required
DELETE /reader/{assetId}/bookmarks/{bookmarkId} Delete a bookmark Required
GET /reader/{assetId}/highlights List highlights Required
POST /reader/{assetId}/highlights Create a highlight Required
DELETE /reader/{assetId}/highlights/{highlightId} Delete a highlight Required
GET /reader/{assetId}/statistics Reading statistics — time spent, completion percentage, sessions Required
POST /read/{assetId}/whispersync Sync reading position across devices Required
GET /read/{assetId}/whispersync Retrieve last sync position Required
DELETE /read/{assetId}/whispersync Clear sync position Required

Progress

Method Path Description Auth
GET /progress/{assetId} Playback or reading progress for an asset Required
PUT /progress/{assetId} Update progress Required
GET /progress/recent Recently accessed assets with progress Required
GET /progress/journey Full reading/watching journey across all assets for the current profile Required

Reports

Method Path Description Auth
POST /reports Submit a metadata quality report for an entity Required
GET /reports/entity/{id} All reports for a specific entity Curator
POST /reports/{id}/resolve Mark a report as resolved Curator
POST /reports/{id}/dismiss Dismiss a report Curator

Vault

Method Path Description Auth
GET /vault/characters/{id}/portraits Portrait images for a fictional character Required
GET /vault/persons/{id}/character-roles Characters a person has performed, linked to works Required
GET /vault/universes/{qid}/characters All characters in a universe Required
GET /vault/assets/{entityId} Shared assets for an entity (Cover Art, Headshot, Banner, Logo, Backdrop) Required
POST /vault/enrichment/universe/trigger Trigger universe enrichment for a specific QID Curator

SignalR

Hub Path Direction Description
Intercom /hubs/intercom Server → Client Real-time push events: ingestion progress, enrichment completion, pipeline state changes, review queue updates. Authentication required. Server-push only — clients do not send messages to the hub.

Development

Available in development environments only. These endpoints are removed in production builds.

Method Path Description
POST /dev/seed-library Seed the library with 22 EPUB test cases covering edge cases (pen names, foreign languages, series grouping, multi-author)
POST /dev/wipe Wipe the database and staging area. Irreversible.
POST /dev/full-test Run full ingestion and enrichment pipeline on the seeded test library
POST /dev/integration-test Run the integration test suite and return an HTML report