Skip to main content

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

string (UUID)
Filter by sessions that a given user is allowed to remote control
string
Filter by specific device ID
integer
Filter by sessions active within the last N seconds

Response

array
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

string
Session ID. If not provided, uses the current session.
array[string]
Comma-delimited list of playable media types: “Audio”, “Video”, “Book”, “Photo”
array[string]
Comma-delimited list of supported remote control commands
boolean
Whether the device supports remote media control (default: false)
boolean
Whether the device supports a unique identifier (default: true)

Response

Returns 204 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

string
Session ID. If not provided, uses the current session.

Request Body

array[string]
List of playable media types: [“Audio”, “Video”, “Book”, “Photo”]
array[string]
List of supported commands: [“Play”, “Pause”, “Stop”, “Seek”, “VolumeUp”, etc.]
boolean
Whether the session supports remote media control
boolean
Whether the device supports a persistent identifier
boolean
Whether the client supports sync

Response

Returns 204 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

string
Session ID. If not provided, uses the current session.
string
required
The ID of the item being viewed

Response

Returns 204 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

Returns 204 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

string
required
The target session ID to control

Query Parameters

string
required
The type of item (e.g., “Movie”, “Series”, “MusicAlbum”)
string
required
The ID of the item to display
string
required
The name of the item

Example Request


Play

Instructs a session to play specific items. Endpoint: POST /Sessions/{sessionId}/Playing Authorization: Required

Path Parameters

string
required
The target session ID to control

Query Parameters

string
required
The play command: “PlayNow”, “PlayNext”, or “PlayLast”
array[string]
required
Comma-delimited list of item IDs to play
integer
Starting position in ticks (1 tick = 100 nanoseconds)
string
The media source ID to use
integer
The audio stream index to play
integer
The subtitle stream index to display
integer
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

string
required
The target session ID to control
string
required
Playstate command: “Stop”, “Pause”, “Unpause”, “Seek”, “NextTrack”, “PreviousTrack”

Query Parameters

integer
Position to seek to in ticks (for Seek command)
string
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

string
required
The target session ID to control
string
required
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

string
required
The target session ID to control
string
required
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

string
required
The target session ID to control

Request Body

string
required
Command name (e.g., “DisplayMessage”, “SetVolume”)
object
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

string
required
The target session ID

Request Body

string
Message header (defaults to “Message from Server”)
string
required
Message text to display
integer
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

string
required
The session ID
string (UUID)
required
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

string
required
The session ID
string (UUID)
required
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

  1. Creation: Session created when user authenticates
  2. Capability Reporting: Client reports its capabilities
  3. Activity: Client sends periodic heartbeats and activity updates
  4. 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
Example conversions:
  • 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:
  1. Target session must report SupportsRemoteControl: true
  2. Controlling user must have appropriate permissions
  3. Session must be active (recent activity)

Supported Commands

Common playstate commands:
  • Stop, Pause, Unpause
  • Seek, NextTrack, PreviousTrack
  • FastForward, Rewind
Common system commands:
  • VolumeUp, VolumeDown, Mute, Unmute, ToggleMute, SetVolume
Common general commands:
  • DisplayContent, GoHome, GoToSettings
  • MoveUp, MoveDown, MoveLeft, MoveRight
  • PageUp, PageDown, Select, Back