Skip to content
jkrishna289 edited this page Aug 20, 2026 · 1 revision

Welcome to the Orca-Engine wiki!

Orca Engine API Reference

Version: 1.2.4.0-beta
Target: Jellyfin 10.11.x plugin
API base: /OrcaEngine
Status: Beta

This document describes the HTTP API currently exposed by Orca Engine.

The route inventory is based on the current source-code inventory. Where the available information does not include an exact request body, query parameter, response schema, or authentication requirement, it is marked as needs confirmation rather than guessed.

1. General usage

Orca Engine is exposed through the Jellyfin server hosting the plugin.

A typical request is:

http(s)://<jellyfin-host>:<port>/OrcaEngine/<route>

Examples:

GET /OrcaEngine/Health
GET /OrcaEngine/Home
GET /OrcaEngine/Recommendations
GET /OrcaEngine/Bootstrap

The source inventory identifies three route classes:

  • anon — no authentication attribute

  • auth — authenticated request

  • admin — requires Jellyfin elevation

Many client-facing routes currently allow anonymous access. This is part of the current beta implementation and should be considered when exposing the server outside a trusted network.

2. Main client API

GET /OrcaEngine/Bootstrap

Returns server capabilities together with the fully composed home screen in one request. This is the preferred startup contract for clients such as OrcaX.

Status: Implemented
External configuration: None for basic operation
Exact response model: Needs confirmation from the current controller/model definitions.

GET /OrcaEngine/Home

Returns the server-composed home screen. Current row providers include Continue Watching, For You, Because You Watched, Trending, You Might Like, New Since, Coming Soon, Continue the Story, Mood Collections, Discover and Recently Added.

Status: Implemented
Response model: Needs confirmation.

GET /OrcaEngine/Health

Returns plugin/server liveness information and the Orca Engine version.

Status: Implemented.

GET /OrcaEngine/Recommendations

Returns ranked recommendations. The server performs candidate generation, eligibility filtering, scoring and diversity selection.

Status: Implemented.

GET /OrcaEngine/Recommendations/Rerank

Re-ranks a supplied candidate set using Orca Engine's ranking logic.

Status: Implemented.
Input fields: Needs confirmation from the controller signature.

GET /OrcaEngine/Similar

Returns similar content using the content-vector index.

Status: Implemented, but requires an embedding provider for usable similarity results.

Input fields: Needs confirmation.

3. Genre API

GET /OrcaEngine/Genres/Graph

Returns genre relationship/adjacency information.

Status: Implemented.

GET /OrcaEngine/Genres/Related

Returns related genres for the supplied input.

Status: Implemented.
Input fields: Needs confirmation.

4. Behaviour API

POST /OrcaEngine/Behavior/Feedback

Records explicit user feedback such as thumbs up/down.

Status: Implemented.
Request DTO: Needs confirmation.

POST /OrcaEngine/Behavior/Events

Accepts batched client behaviour/card telemetry events.

Status: Implemented.
Request DTO: Needs confirmation.

For clients, batching events is preferable to sending a request for every UI interaction.

GET /OrcaEngine/Behavior/Recent

Returns recent behaviour events for inspection.

Status: Implemented.

GET /OrcaEngine/Behavior/Stats

Returns behaviour/event statistics.

Status: Implemented.

5. Personalization API

GET /OrcaEngine/Personalization/Profile

Returns the current personalization profile.

Status: Implemented.

GET /OrcaEngine/Personalization/TasteProfile

Returns the user's stored taste profile. The current model tracks affinity across genre, studio, tag, decade, media type, person, runtime, maturity, language and franchise, with daypart variants and confidence/decay handling.

Status: Implemented.

GET /OrcaEngine/Personalization/Recompute

Recomputes personalization information.

Status: Implemented.
Parameters: Needs confirmation.

GET /OrcaEngine/Personalization/RebuildTasteProfile

Rebuilds the stored taste profile.

Status: Implemented.
Parameters: Needs confirmation.

6. Settings API

GET /OrcaEngine/Settings

Returns server configuration exposed through the API.

GET /OrcaEngine/Settings/Features

Returns feature/capability flags used by clients to determine which optional features are available.

Both are implemented.

GET /OrcaEngine/Settings/User

Returns roaming per-user settings.

POST /OrcaEngine/Settings/User

Creates or updates roaming per-user settings.

DELETE /OrcaEngine/Settings/User

Deletes stored roaming per-user settings.

These are implemented. Request/response schema needs confirmation.

7. Request API

POST /OrcaEngine/Requests

Submits a media request.

Status: Implemented, but requires the Feature Requests capability and Jellyseerr integration.

GET /OrcaEngine/Requests/Status

Returns request status.

Status: Implemented, but requires the relevant integration/configuration.
Parameters: Needs confirmation.

8. Trailer API

GET /OrcaEngine/Trailer/{tmdbId}

Resolves/serves a trailer for a TMDB item.

GET /OrcaEngine/Trailer/{tmdbId}/status

Returns trailer processing/cache state.

POST /OrcaEngine/Trailer/Prebuffer

Starts trailer prebuffering.

POST /OrcaEngine/Trailer/Prefetch

Requests trailer prefetching/warming.

These routes are implemented, but trailer functionality requires the configured trailer tooling, including yt-dlp and ffmpeg.

9. Metadata API

GET /OrcaEngine/Metadata/Trivia

Returns trivia for a title.

Status: Implemented, but requires an LLM configuration.

GET /OrcaEngine/Metadata/Warnings

Returns content advisories/warnings.

Status: Implemented, but requires an LLM configuration.

10. Image API

GET /OrcaEngine/Images/Provider/{id}

Returns a watch-provider logo/image.

Status: Implemented.

11. Card API

GET /OrcaEngine/Cards/Preview

Returns a card preview payload.

Status: Implemented.

Known limitation: the current preview path contains a hardcoded Progress = 0.4 demo value and should not be treated as live playback progress.

12. OrcaX update API

GET /OrcaEngine/Update/Latest

Returns the latest OrcaX release information exposed by the server.

GET /OrcaEngine/Update/Apk/{tag}/{asset}

Serves a specific OrcaX APK release asset.

Both are implemented.

13. Discovery API

GET /OrcaEngine/Discovery/Picks

Returns the current per-user discovery picks.

Status: Implemented, requires TMDB configuration.

POST /OrcaEngine/Discovery/Pull

Triggers or requests discovery-pick retrieval.

Status: Implemented, requires TMDB configuration.

14. Analytics API

GET /OrcaEngine/Analytics/Funnel

Returns funnel analytics.

GET /OrcaEngine/Analytics/Popularity

Returns popularity analytics.

GET /OrcaEngine/Analytics/CommunityRating

Returns community-rating analytics.

All three are implemented.

15. Catalog API

GET /OrcaEngine/Catalog/Stats

Returns catalog statistics/counts.

Status: Implemented.

16. Source API

GET /OrcaEngine/Sources

Searches for available media sources.

Status: Implemented, optional/off by default.

Current dependency: Prowlarr configuration for the source-search path.

17. Stream session API

The stream controller exposes session operations under:

/OrcaEngine/Stream/Sessions…

The current inventory confirms GET/POST/DELETE operations for stream sessions.

GET /OrcaEngine/Stream/{token}/file

Serves byte-range data for an established stream token.

Status: Implemented, optional/off by default.

Exact session route/action names and DTO schemas: Needs confirmation from the controller source before this section is treated as a wire-level reference.

18. Admin and Observatory API

These routes are intended for server administration rather than normal client use.

Admin

/OrcaEngine/Admin/Status
/OrcaEngine/Admin/Metrics
/OrcaEngine/Admin/Metrics/Reset
/OrcaEngine/Admin/Diagnostics
/OrcaEngine/Admin/Requests

Implemented and admin/elevated.

Observatory

/OrcaEngine/Observatory/App
/OrcaEngine/Observatory/Snapshot
/OrcaEngine/Observatory/Events
/OrcaEngine/Observatory/Stream

Implemented. The Observatory UI is available at /orca and includes a live SSE event stream.

Taste graph

GET /OrcaEngine/TasteGraph

Admin diagnostics for the taste graph.

Embedding diagnostics

/OrcaEngine/Embedding/Diagnostics
/OrcaEngine/Embedding/Test

Admin diagnostics/testing for the configured embedding provider.

Metadata diagnostics

/OrcaEngine/Metadata/Diagnostics
/OrcaEngine/Metadata/EnrichWarnings

Admin diagnostics and warning-enrichment operations.

Trailer diagnostics

GET /OrcaEngine/Trailer/Diagnostics

Admin diagnostics for the trailer subsystem.

Catalog administration

/OrcaEngine/Catalog/Resync
/OrcaEngine/Catalog/Reconcile
/OrcaEngine/Catalog/EnrichTmdb
/OrcaEngine/Catalog/EnrichProviders
/OrcaEngine/Catalog/PurgeUnjustified

Admin catalog maintenance operations.

Discovery administration

/OrcaEngine/Discovery/Sweep
/OrcaEngine/Discovery/PullGlobal
/OrcaEngine/Discovery/Runs
/OrcaEngine/Discovery/SourceStats

Admin discovery operations and diagnostics.

Watch-history import

GET and POST /OrcaEngine/Behavior/ImportHistory

Reads or triggers the Jellyfin watch-history import. The importer is idempotent.

Stream administration

/OrcaEngine/Stream/Dashboard
/OrcaEngine/Stream/Reachability

Admin diagnostics for the optional stream subsystem.

Community-rating recomputation

POST /OrcaEngine/Analytics/CommunityRating/Recompute

Recomputes community-rating analytics.

19. Recommended client flow

For an OrcaX-style client:

1. GET /OrcaEngine/Health
2. GET /OrcaEngine/Bootstrap
3. Read capabilities/feature flags
4. Render the returned rows and cards
5. Send behaviour events in batches
6. Call feature-specific endpoints when needed

The client should not reproduce Orca Engine's recommendation logic. Orca Engine is responsible for gathering data, personalization, ranking and home composition; the client is responsible for presentation, navigation and playback.

20. Dependency summary

API area | Main dependency -- | -- Bootstrap / Home | None for basic operation Recommendations | Catalog + personalization data Similar | Embedding provider Behaviour | None Personalization | Behaviour/history data Requests | Jellyseerr + feature enabled Discovery | TMDB Metadata trivia/warnings | LLM configuration Trailers | yt-dlp + ffmpeg Sources | Prowlarr Stream sessions | Optional stream subsystem Update | Server-side APK cache

21. Known limitations

  • Public API and database schema are still moving during beta.

  • OnnxEmbeddingProvider is currently a stub and does not provide usable embeddings.

  • There is no automatic embedding-provider fallback.

  • The vector index is built lazily.

  • The card preview endpoint contains a hardcoded demo progress value.

  • Some Jellyfin compatibility handling is version-sensitive.

  • Many client routes allow anonymous access.

  • Optional LLM functionality is disabled by default and fails softly.

  • Optional source/stream functionality is disabled by default.

  • Orca Engine is currently single-server, in-process and SQLite-based.

22. Details that still need source-level confirmation

For a completely wire-accurate reference, the remaining details to extract directly from the controllers and DTOs are:

  1. Exact request DTOs for POST endpoints.

  2. Exact query/path parameters for GET endpoints.

  3. Exact JSON response models.

  4. Explicit success/error status codes.

  5. Authentication attributes on each individual route.

  6. Exact action names under /Stream/Sessions….

  7. Pagination, filtering and sorting parameters where supported.

Those fields should be documented from the actual method signatures rather than inferred.

Clone this wiki locally