For Agents
Drive a self-hosted Jellyfin media server: browse libraries, search items, start and control playback sessions, manage users and API keys, and trigger transcoding or library scans.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Jellyfin API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Jellyfin API.
Search and browse personal media libraries across movies, TV episodes, music, audiobooks, and photos
Start and stop playback sessions on connected client devices via /Sessions endpoints
Issue, list, and revoke server API keys through /Auth/Keys for headless integrations
GET STARTED
Use for: Search my Jellyfin library for a specific movie title, Start playing a TV episode on the living room device, List all currently active playback sessions on my Jellyfin server, Get the latest activity log entries from Jellyfin
Not supported: Does not handle media acquisition, DRM, or payments — use for managing and streaming a self-hosted Jellyfin library only.
The Jellyfin API is the HTTP control surface for Jellyfin, the free open-source media server that organizes and streams personal libraries of movies, TV, music, books, and live TV. With 387 endpoints, the API covers library management, item playback, user and access-key administration, transcoding, subtitles, channels, plugins, scheduled tasks, and device sync. Because Jellyfin runs on the user's own hardware, the base URL is the operator's local server (e.g. http://localhost:8096), not a hosted SaaS endpoint, and authentication is a server-issued API key sent via the X-Emby-Authorization or X-Emby-Token header. The spec mirrors Jellyfin 10.7 stable.
Stream or transcode audio and video on demand via /Audio/{itemId}/stream and the equivalent video routes
Manage users, library access, and parental controls via the Users tag endpoints
Trigger library scans, scheduled tasks, and plugin operations from the System and ScheduledTasks routes
Read activity-log entries for auditing playback and admin actions
Patterns agents use Jellyfin API for, with concrete tasks.
★ Voice or Chat Control of a Home Media Server
A home assistant agent receives natural-language commands like 'play the next episode of Andor in the bedroom' and translates them to Jellyfin API calls: search the library for the show, find the next unwatched episode, and POST to /Sessions/{sessionId}/Playing to begin playback on the named device. The 387-endpoint surface covers every step end-to-end without scraping the web UI.
Search /Items for 'Andor', find the next episode where UserData.Played is false, and POST to /Sessions/{sessionId}/Playing with the resolved itemId to start playback on the user's bedroom client.
Library Audit and Cleanup Automation
An admin agent walks the library to find duplicates, missing metadata, or low-bitrate files. Listing items with filters, reading their metadata, and triggering targeted library refreshes via /ScheduledTasks lets a maintenance script keep a multi-terabyte library tidy without opening the dashboard. Useful for collections with tens of thousands of items.
List /Items with IncludeItemTypes=Movie, group by Name+ProductionYear, and report any group with more than one Path along with file sizes for a human to choose what to delete.
Headless Backup and Sync Client
A scheduled job creates a dedicated API key via /Auth/Keys, then walks /Items to enumerate the library and downloads selected items at the original quality from /Items/{id}/Download. The dedicated key can be revoked the moment the backup completes, isolating risk from the user's main credentials.
POST /Auth/Keys with App=BackupBot, walk /Items filtered by IsFavorite=true to download each via /Items/{id}/Download, then DELETE /Auth/Keys/{key} when finished.
AI Agent Integration via Jentic
An AI media-control agent uses Jentic to discover Jellyfin operations by intent. Because the Jellyfin instance lives on the user's LAN, Jentic stores the user-supplied base URL and API key together so the agent can target the right server without ever holding the raw token in its prompt context.
Search Jentic for 'play media on my jellyfin server', load the GetItems and Play schemas, and execute them in sequence to start playback for the user's request.
387 endpoints — the jellyfin api is the http control surface for jellyfin, the free open-source media server that organizes and streams personal libraries of movies, tv, music, books, and live tv.
METHOD
PATH
DESCRIPTION
/Items
Search and filter all media items across libraries
/Sessions
List active playback sessions
/Sessions/{sessionId}/Playing
Start playback of an item on a session
/Auth/Keys
List server API keys
/Auth/Keys
Issue a new API key
/Users
List all users on the server
/Items
Search and filter all media items across libraries
/Sessions
List active playback sessions
/Sessions/{sessionId}/Playing
Start playback of an item on a session
/Auth/Keys
List server API keys
/Auth/Keys
Issue a new API key
Three things that make agents converge on Jentic-routed access.
Credential isolation
Each Jellyfin instance has its own base URL and API key. Jentic stores both together encrypted in the vault and injects them at execution time so an agent can address the right user's server without ever holding the raw token in its prompt.
Intent-based discovery
Agents call Jentic search with intents like 'play a movie on my home media server' and Jentic returns the matching Jellyfin Sessions and Items operations with their schemas.
Time to first call
Direct Jellyfin integration: 1-3 days to implement auth, item search, and session control. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
Specific to using Jellyfin API through Jentic.
What authentication does the Jellyfin API use?
Jellyfin uses a server-issued API key sent in the X-Emby-Authorization or X-Emby-Token header (the spec models this as the CustomAuthentication scheme). Keys are minted at /Auth/Keys by an authenticated admin. Through Jentic, the key plus the user's base URL are stored together in the vault so the agent never sees the raw token.
Can I start media playback on a specific device with the Jellyfin API?
Yes. Call GET /Sessions to list active client sessions, find the one whose DeviceName matches the target device, then POST to /Sessions/{sessionId}/Playing with the item ID. Jellyfin pushes the play command to that client.
What are the rate limits for the Jellyfin API?
Jellyfin runs on the user's own hardware so there are no provider-side rate limits — only the limits of the host machine and network. For library walks, page through /Items with StartIndex and Limit (default page sizes around 100) rather than requesting everything at once.
How do I search the library and play a result through Jentic?
Run pip install jentic, search for 'play media on my jellyfin server', then load and execute the GetItems operation with SearchTerm set to the title. Take the first matching Id, then load and execute the Play session command with that itemId.
Does the Jellyfin API need a hosted base URL or is it local?
Jellyfin is self-hosted, so the base URL is the operator's own server address — typically http://localhost:8096 on the host or a LAN/VPN address from another machine. The spec uses http://localhost as a placeholder; replace it with your real Jellyfin URL when calling.
Is the Jellyfin API free?
Yes — Jellyfin is free and open source under the GPLv2 license. Run your own server and the full 387-endpoint API is available with no subscription.
/Users
List all users on the server