ApiClient. ApiClient

ApiClient provides a centralized, stateful wrapper around the Jellyfin API. It automatically injects image parameters and version-specific fields for consistent, bulletproof item fetching across all Jellyfin server versions (10.7.0+).

The singleton pattern ensures one instance is shared across the entire app.

Constructor

new ApiClient() → {ApiClient}

Returns:
Type: 
ApiClient

Methods

AuthenticateByName(username, password) → {dynamic}

Authenticate user by username and password

Parameters:
NameTypeDescription
usernamestring

User's username

passwordstring

User's password

Returns:

API response with auth token or invalid on error

Type: 
dynamic

AuthenticateWithQuickConnect(secret) → {dynamic}

Authenticate via Quick Connect

Parameters:
NameTypeDescription
secretstring

The Quick Connect secret

Returns:

API response or invalid on error

Type: 
dynamic

BuildCancelSeriesTimerRequest(timerId) → {dynamic}

Build a request AA to cancel a Live TV series recording timer, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
timerIdstring

The series timer ID to cancel

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildCancelTimerRequest(timerId) → {dynamic}

Build a request AA to cancel a Live TV recording timer, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
timerIdstring

The timer ID to cancel

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildCreateSeriesTimerRequest(defaults) → {dynamic}

Build a request AA to create a Live TV series recording timer, for use with fetchRes() or fetchJson().

Parameters:
NameTypeDescription
defaultsobject

Timer defaults AA from BuildGetLiveTvTimerDefaultsRequest response

Returns:

Request AA: { method, url, body, headers } or invalid if server URL not set

Type: 
dynamic

BuildCreateTimerRequest(defaults) → {dynamic}

Build a request AA to create a Live TV recording timer, for use with fetchRes() or fetchJson().

Parameters:
NameTypeDescription
defaultsobject

Timer defaults AA from BuildGetLiveTvTimerDefaultsRequest response

Returns:

Request AA: { method, url, body, headers } or invalid if server URL not set

Type: 
dynamic

BuildDeleteItemRequest(itemId) → {dynamic}

Build a request AA to delete an item, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
itemIdstring

The item ID to delete

Returns:

Request AA: { method, url }

Type: 
dynamic

BuildGetAdditionalPartsRequest(itemId) → {dynamic}

Build a request AA for GetAdditionalParts, for use with fetchRes() or fetchJson().

Parameters:
NameTypeDescription
itemIdstring

The video item ID

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetAlbumArtistsRequest(paramsopt) → {dynamic}

Build a request AA to fetch all album artists, for use with fetchRes() or fetchJson(). Mirrors GetAlbumArtists(): applies injectDefaults and injects UserId.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetArtistByNameRequest(name, paramsopt) → {dynamic}

Build a request AA for GetArtistByName, for use with fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
namestring

Artist name (will be URI-encoded)

paramsobject<optional>
{}

Optional query parameters

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetArtistSimilarRequest(itemId, paramsopt) → {dynamic}

Build a request AA to get similar artists, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The artist item ID

paramsobject<optional>
{}

Optional query parameters (userId, limit, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetArtistsRequest(paramsopt) → {dynamic}

Build a request AA to fetch all artists, for use with fetchRes() or fetchJson(). Mirrors GetArtists(): applies injectDefaults and injects UserId.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetBrandingConfigurationRequest() → {dynamic}

Build a request AA for GetBrandingConfiguration, for use with fetchRes() or fetchJson().

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetEpisodesRequest(seriesId, paramsopt) → {dynamic}

Build a request AA for GetEpisodes, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
seriesIdstring

The series ID

paramsobject<optional>
{}

Optional query parameters (StartItemId, Limit, etc.)

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetFiltersRequest(paramsopt) → {dynamic}

Build a request AA for GetFilters, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (userid, parentid, includeitemtypes, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetGenresRequest(paramsopt) → {dynamic}

Build a request AA to fetch genres, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetInstantMixRequest(itemId, paramsopt) → {dynamic}

Build a request AA for GetInstantMix, for use with fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The item ID

paramsobject<optional>
{}

Optional query parameters (Limit, etc.)

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetIntrosRequest(itemId) → {dynamic}

Build a request AA for GetIntros, for use with fetchJson().

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetItemLyricsRequest(itemId) → {dynamic}

Build a request AA for GetItemLyrics, for use with fetchJson().

Parameters:
NameTypeDescription
itemIdstring

The Audio item ID

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetItemRawRequest(itemId, paramsopt) → {dynamic}

Build a request AA to get a single item WITHOUT image/version field injection.

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The item ID

paramsobject<optional>
{}

Optional query parameters (passed through as-is)

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetItemRequest(itemId, paramsopt) → {dynamic}

Get a single item by ID with automatic image and version field injection Build a request AA to get a single item with automatic image/version field injection.

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The item ID

paramsobject<optional>
{}

Optional query parameters (fields, etc.)

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetItemsByQueryRequest(paramsopt) → {dynamic}

Build a request AA for GetItemsByQuery, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (limit, sortBy, filters, etc.)

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetLatestMediaRequest(paramsopt) → {dynamic}

Build a request AA for GetLatestMedia, for use with fetchRes() or fetchJson(). Both V1 and V2 return a bare array of BaseItemDto (not paginated). V1: /users/{id}/items/latest (10.7.x–10.8.x) V2: /Items/Latest?userId= (10.9+)

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Optional query parameters (ParentId, Limit, etc.)

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetLiveTVChannelsRequest(paramsopt) → {dynamic}

Build a request AA to fetch Live TV channels, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTVProgramsRequest(paramsopt) → {dynamic}

Build a request AA for GetLiveTVPrograms (full EPG search), for use with fetchRes() or fetchJson(). Mirrors GetLiveTVPrograms(): applies injectDefaults.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (SearchTerm, Limit, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTvProgramRequest(programId, paramsopt) → {dynamic}

Build a request AA to fetch a single Live TV program, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
programIdstring

The program ID

paramsobject<optional>
{}

Optional query parameters (UserId, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTvRecommendedProgramsRequest(paramsopt) → {dynamic}

Build a request AA to get recommended Live TV programs (On Now), for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (userId, isAiring, limit, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTvRecordingsRequest(paramsopt) → {dynamic}

Build a request AA to get Live TV recordings, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (isInProgress, limit, status, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTvScheduleRequest(params) → {dynamic}

Build a request AA to fetch the Live TV schedule, for use with fetchRes() or fetchJson(). Uses POST because the channelIds list can exceed URL length limits.

Parameters:
NameTypeDescription
paramsobject

Query/body parameters (channelIds, startTime, endTime, UserId, etc.)

Returns:

Request AA: { method, url, body, headers } or invalid if server URL not set

Type: 
dynamic

BuildGetLiveTvTimerDefaultsRequest(programId) → {dynamic}

Build a request AA to fetch Live TV timer defaults for a program, for use with fetchRes() or fetchJson().

Parameters:
NameTypeDescription
programIdstring

The program ID to pre-fill timer defaults

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetLocalTrailersRequest(itemId) → {dynamic}

Build a request AA for GetLocalTrailers, for use with submitApiRequest() or fetchJson(). Version-aware: V2 uses /Items/{id}/LocalTrailers, V1 uses /users/{userId}/items/{id}/localtrailers.

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no userId (V1 only)

Type: 
dynamic

BuildGetMediaSegmentsRequest(itemId, includeSegmentTypesopt) → {dynamic}

Build a request AA for GetMediaSegments, for use with fetchJson(). Only available on Jellyfin 10.10.0+ servers.

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The item ID

includeSegmentTypesstring<optional>
""

Optional comma-separated segment types to filter (e.g., "Intro,Outro")

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetNextUpRequest(paramsopt) → {dynamic}

Build a request AA for GetNextUp, for use with fetchRes() or fetchJson(). Mirrors GetNextUp(): applies injectDefaults and injects UserId.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (SeriesId, limit, EnableRewatching, etc.)

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetPersonsRequest(paramsopt) → {dynamic}

Build a request AA for GetPersons, for use with fetchRes() or fetchJson(). Mirrors GetPersons(): applies injectDefaults and injects UserId.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (e.g. IsFavorite, searchTerm)

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetPlaylistItemsRequest(playlistId, paramsopt) → {dynamic}

Build a request AA for GetPlaylistItems, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
playlistIdstring

The playlist ID

paramsobject<optional>
{}

Optional query parameters

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildGetQuickConnectEnabledRequest() → {dynamic}

Build a request AA for GetQuickConnectEnabled, for use with fetchRes() or fetchJson(). Server responds with a plain boolean body (true = enabled, false = disabled). Lowercase path matches the existing /quickconnect/initiate convention - Jellyfin's routing is case-insensitive but reverse proxies in the wild sometimes are not.

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetResumeItemsRequest(paramsopt) → {dynamic}

Build a request AA for GetResumeItems (Continue Watching), for use with fetchRes() or fetchJson(). Mirrors GetResumeItems(): applies injectDefaults, version-aware endpoint.

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Optional query parameters

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetSeasonsRequest(seriesId, paramsopt) → {dynamic}

Build a request AA for GetSeasons, for use with fetchRes() or fetchJson(). Mirrors GetSeasons(): applies injectDefaults and injects UserId.

Parameters:
NameTypeAttributesDefaultDescription
seriesIdstring

The series ID

paramsobject<optional>
{}

Optional query parameters

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildGetSessionsRequest(paramsopt) → {dynamic}

Build a request AA to get active sessions, for use with fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters (e.g. { deviceId: "..." })

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetSimilarItemsRequest(itemId, paramsopt) → {dynamic}

Build a request AA to get similar items, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
itemIdstring

The item ID

paramsobject<optional>
{}

Optional query parameters (userId, limit, etc.)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetSpecialFeaturesRequest(itemId) → {dynamic}

Build a request AA for GetSpecialFeatures, for use with fetchRes() or fetchJson(). Mirrors GetSpecialFeatures(): version-aware endpoint.

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no userId (V1 only)

Type: 
dynamic

BuildGetStudiosRequest(paramsopt) → {dynamic}

Build a request AA to fetch studios, for use with fetchRes() or fetchJson().

Parameters:
NameTypeAttributesDefaultDescription
paramsobject<optional>
{}

Query parameters

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildGetViewsRequest() → {dynamic}

Build a request AA for GetViews, for use with fetchRes() or fetchJson(). Mirrors GetViews(): version-aware endpoint.

Returns:

Request AA: { method, url } or invalid if no userId

Type: 
dynamic

BuildHeadItemImageRequest(id, imageType, imageIndexopt) → {dynamic}

Build a HEAD request AA to check if an item image exists, for use with fetchRes() or fetchJson(). Caller checks res.ok — no body is returned for HEAD requests.

Parameters:
NameTypeAttributesDefaultDescription
idstring

Item ID

imageTypestring

Type of image (e.g. "logo", "Primary")

imageIndexinteger<optional>
0

Image index (default 0)

Returns:

Request AA: { method, url } or invalid if server URL not set

Type: 
dynamic

BuildMarkFavoriteRequest(itemId) → {dynamic}

Build a request AA to mark an item as favorite, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildMarkPlayedRequest(itemId) → {dynamic}

Build a request AA to mark an item as played, for use with SubmitSideEffect(). Includes default DatePlayed (now) and PlaybackPositionTicks (0) matching Jellyfin API expectations.

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildPlaystateRequest(state, params) → {dynamic}

Build a playstate request AA for use with SubmitSideEffect(). Applies default playstate fields and routes to the correct session endpoint.

Parameters:
NameTypeDescription
statestring

"start" | "update" | "stop" | "finished"

paramsobject

Playback parameters (ItemId, PositionTicks, IsPaused, etc.)

Returns:

Request AA: { method, url, body, headers } or invalid if state unknown

Type: 
dynamic

BuildPostPlaybackInfoRequest(itemId, postData) → {dynamic}

Build a request AA for PostPlaybackInfo, for use with fetchJson().

Parameters:
NameTypeDescription
itemIdstring

The item ID

postDataobject

Request body data (DeviceProfile, MediaSourceId, etc.)

Returns:

Request AA: { method, url, body } or invalid if server URL not set

Type: 
dynamic

BuildPostSessionCapabilitiesRequest(capabilities) → {dynamic}

Build a request AA to post full session capabilities, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
capabilitiesobject

Device capabilities AA from getDeviceCapabilities()

Returns:

Request AA: { method, url, body, headers } or invalid if server URL not set

Type: 
dynamic

BuildUnmarkFavoriteRequest(itemId) → {dynamic}

Build a request AA to unmark an item as favorite, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

BuildUnmarkPlayedRequest(itemId) → {dynamic}

Build a request AA to mark an item as unplayed, for use with SubmitSideEffect().

Parameters:
NameTypeDescription
itemIdstring

The item ID

Returns:

Request AA: { method, url } or invalid if no user

Type: 
dynamic

ConnectQuickConnect(secret) → {dynamic}

Connect via Quick Connect

Parameters:
NameTypeDescription
secretstring

The Quick Connect secret

Returns:

API response or invalid on error

Type: 
dynamic

GetConfigurationByName(name) → {dynamic}

Get configuration by name

Parameters:
NameTypeDescription
namestring

Configuration name

Returns:

API response or invalid on error

Type: 
dynamic

GetDisplayPreferences(id, paramsopt) → {dynamic}

Get display preferences

Parameters:
NameTypeAttributesDefaultDescription
idstring

Preference ID

paramsobject<optional>
{}

Query parameters

Returns:

API response or invalid on error

Type: 
dynamic

GetImageURL(id, imageType, imageIndexopt, paramsopt) → {dynamic}

Get image URL

Parameters:
NameTypeAttributesDefaultDescription
idstring

Item ID

imageTypestring

Type of image

imageIndexinteger<optional>
0

Image index

paramsobject<optional>
{}

Optional parameters

Returns:

API response or invalid on error

Type: 
dynamic

GetPublicUsers() → {dynamic}

Get public users

Returns:

API response or invalid on error

Type: 
dynamic

GetUser(userId) → {dynamic}

Get user by ID

Parameters:
NameTypeDescription
userIdstring

The user ID

Returns:

API response or invalid on error

Type: 
dynamic

GetUserImageURL(id, imageType, imageIndexopt, paramsopt) → {dynamic}

Get user image URL

Parameters:
NameTypeAttributesDefaultDescription
idstring

User ID

imageTypestring

Type of image

imageIndexinteger<optional>
0

Image index

paramsobject<optional>
{}

Optional parameters

Returns:

API response or invalid on error

Type: 
dynamic

InitiateQuickConnect() → {dynamic}

Initiate Quick Connect

Returns:

API response with secret or invalid on error

Type: 
dynamic