Overview
The Session Management API provides endpoints for tracking active user sessions, controlling remote playback, reporting viewing activity, and managing session capabilities. Sessions represent active connections from client applications to the Jellyfin server.Get Sessions
Retrieves a list of all active sessions on the server. Endpoint:GET /Sessions
Authorization: Required
Query Parameters
Filter by sessions that a given user is allowed to remote control
Filter by specific device ID
Filter by sessions active within the last N seconds
Response
Array of active session objects
Status Codes
200- Sessions returned successfully
Example Request
Example Response
Post Capabilities
Reports or updates the capabilities of a session/device. Endpoint:POST /Sessions/Capabilities
Authorization: Required
Query Parameters
Session ID. If not provided, uses the current session.
Comma-delimited list of playable media types: “Audio”, “Video”, “Book”, “Photo”
Comma-delimited list of supported remote control commands
Whether the device supports remote media control (default: false)
Whether the device supports a unique identifier (default: true)
Response
Returns204 No Content on success.
Status Codes
204- Capabilities updated successfully
Example Request
Post Full Capabilities
Reports complete capabilities using a request body for more detailed configuration. Endpoint:POST /Sessions/Capabilities/Full
Authorization: Required
Query Parameters
Session ID. If not provided, uses the current session.
Request Body
List of playable media types: [“Audio”, “Video”, “Book”, “Photo”]
List of supported commands: [“Play”, “Pause”, “Stop”, “Seek”, “VolumeUp”, etc.]
Whether the session supports remote media control
Whether the device supports a persistent identifier
Whether the client supports sync
Response
Returns204 No Content on success.
Example Request
Report Viewing
Reports that a session is viewing a specific item (not playing, just viewing details). Endpoint:POST /Sessions/Viewing
Authorization: Required
Query Parameters
Session ID. If not provided, uses the current session.
The ID of the item being viewed
Response
Returns204 No Content on success.
Status Codes
204- Viewing activity reported successfully
Example Request
Report Session Ended (Logout)
Reports that the current session has ended and logs out the user. Endpoint:POST /Sessions/Logout
Authorization: Required
Response
Returns204 No Content on success. The authentication token is invalidated.
Status Codes
204- Session ended successfully
Example Request
Remote Control Commands
The following endpoints allow controlling playback on remote sessions.Display Content
Instructs a session to browse to a specific item or view. Endpoint:POST /Sessions/{sessionId}/Viewing
Authorization: Required
Path Parameters
The target session ID to control
Query Parameters
The type of item (e.g., “Movie”, “Series”, “MusicAlbum”)
The ID of the item to display
The name of the item
Example Request
Play
Instructs a session to play specific items. Endpoint:POST /Sessions/{sessionId}/Playing
Authorization: Required
Path Parameters
The target session ID to control
Query Parameters
The play command: “PlayNow”, “PlayNext”, or “PlayLast”
Comma-delimited list of item IDs to play
Starting position in ticks (1 tick = 100 nanoseconds)
The media source ID to use
The audio stream index to play
The subtitle stream index to display
The index of the first item to play
Example Request
Send Playstate Command
Sends playback control commands (play, pause, stop, seek) to a session. Endpoint:POST /Sessions/{sessionId}/Playing/{command}
Authorization: Required
Path Parameters
The target session ID to control
Playstate command: “Stop”, “Pause”, “Unpause”, “Seek”, “NextTrack”, “PreviousTrack”
Query Parameters
Position to seek to in ticks (for Seek command)
The user ID issuing the command
Example Request
Send System Command
Sends system-level commands to a session. Endpoint:POST /Sessions/{sessionId}/System/{command}
Authorization: Required
Path Parameters
The target session ID to control
System command: “VolumeUp”, “VolumeDown”, “Mute”, “Unmute”, “ToggleMute”
Example Request
Send General Command
Sends a general command to a session. Endpoint:POST /Sessions/{sessionId}/Command/{command}
Authorization: Required
Path Parameters
The target session ID to control
General command type (e.g., “DisplayContent”, “GoHome”, “GoToSettings”)
Example Request
Send Full General Command
Sends a complete general command with custom parameters. Endpoint:POST /Sessions/{sessionId}/Command
Authorization: Required
Path Parameters
The target session ID to control
Request Body
Command name (e.g., “DisplayMessage”, “SetVolume”)
Dictionary of command arguments
Example Request
Send Message
Displays a message to the user on the target session. Endpoint:POST /Sessions/{sessionId}/Message
Authorization: Required
Path Parameters
The target session ID
Request Body
Message header (defaults to “Message from Server”)
Message text to display
How long to display the message in milliseconds
Example Request
Multi-User Sessions
Jellyfin supports multiple users in a single session (e.g., for family viewing).Add User to Session
Adds an additional user to an existing session. Endpoint:POST /Sessions/{sessionId}/User/{userId}
Authorization: Required
Path Parameters
The session ID
The user ID to add
Example Request
Remove User from Session
Removes an additional user from a session. Endpoint:DELETE /Sessions/{sessionId}/User/{userId}
Authorization: Required
Path Parameters
The session ID
The user ID to remove
Example Request
Authentication Providers
Get Auth Providers
Retrieves all available authentication providers. Endpoint:GET /Auth/Providers
Authorization: Required (Administrator with elevated privileges)
Response
Returns an array of name-ID pairs for available authentication providers.Example Request
Example Response
Get Password Reset Providers
Retrieves all available password reset providers. Endpoint:GET /Auth/PasswordResetProviders
Authorization: Required (Administrator with elevated privileges)
Example Request
Session Concepts
Session Lifecycle
- Creation: Session created when user authenticates
- Capability Reporting: Client reports its capabilities
- Activity: Client sends periodic heartbeats and activity updates
- Termination: Session ends via logout or timeout
Ticks and Time
Jellyfin uses “ticks” for time measurements:- 1 tick = 100 nanoseconds
- 10,000 ticks = 1 millisecond
- 10,000,000 ticks = 1 second
- 600,000,000 ticks = 1 minute
- 30 seconds = 300,000,000 ticks
- 5 minutes = 3,000,000,000 ticks
- 1 hour = 36,000,000,000 ticks
Remote Control
For remote control to work:- Target session must report
SupportsRemoteControl: true - Controlling user must have appropriate permissions
- Session must be active (recent activity)
Supported Commands
Common playstate commands:- Stop, Pause, Unpause
- Seek, NextTrack, PreviousTrack
- FastForward, Rewind
- VolumeUp, VolumeDown, Mute, Unmute, ToggleMute, SetVolume
- DisplayContent, GoHome, GoToSettings
- MoveUp, MoveDown, MoveLeft, MoveRight
- PageUp, PageDown, Select, Back