@lukehagar/plexjs v0.39.0
@lukehagar/plexjs
Summary
Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server
Plex Media Server OpenAPI Specification
An Open Source OpenAPI Specification for Plex Media Server
Automation and SDKs provided by Speakeasy
Documentation
SDKs
The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the main specification Repository.
| Language | Repository | Releases | Other |
|---|---|---|---|
| Python | GitHub | PyPI | - |
| JavaScript/TypeScript | GitHub | NPM \ JSR | - |
| Go | GitHub | Releases | GoDoc |
| Ruby | GitHub | Releases | - |
| Swift | GitHub | Releases | - |
| PHP | GitHub | Releases | - |
| Java | GitHub | Releases | - |
| C# | GitHub | Releases | - |
Table of Contents
SDK Installation
The SDK can be installed with either npm, pnpm, bun or yarn package managers.
NPM
npm add @lukehagar/plexjsPNPM
pnpm add @lukehagar/plexjsBun
bun add @lukehagar/plexjsYarn
yarn add @lukehagar/plexjs zod
# Note that Yarn does not install peer dependencies automatically. You will need
# to install zod as shown above.SDK Example Usage
Example
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await plexAPI.server.getServerCapabilities();
console.log(result);
}
run();Available Resources and Operations
activities
- getServerActivities - Get Server Activities
- cancelServerActivities - Cancel Server Activities
authentication
- getTransientToken - Get a Transient Token
- getSourceConnectionInformation - Get Source Connection Information
- getTokenDetails - Get Token Details
- postUsersSignInData - Get User Sign In Data
butler
- getButlerTasks - Get Butler tasks
- startAllTasks - Start all Butler tasks
- stopAllTasks - Stop all Butler tasks
- startTask - Start a single Butler task
- stopTask - Stop a single Butler task
hubs
- getGlobalHubs - Get Global Hubs
- getRecentlyAdded - Get Recently Added
- getLibraryHubs - Get library specific hubs
library
- getFileHash - Get Hash Value
- getRecentlyAddedLibrary - Get Recently Added
- getAllLibraries - Get All Libraries
- getLibraryDetails - Get Library Details
- deleteLibrary - Delete Library Section
- getLibraryItems - Get Library Items
- getLibrarySectionsAll - Get Library section media by tag ALL
- getRefreshLibraryMetadata - Refresh Metadata Of The Library
- getSearchLibrary - Search Library
- getGenresLibrary - Get Genres of library media
- getCountriesLibrary - Get Countries of library media
- getActorsLibrary - Get Actors of library media
- getSearchAllLibraries - Search All Libraries
- getMediaMetaData - Get Media Metadata
- getMediaArts - Get Media Background Artwork
- postMediaArts - Upload Media Background Artwork
- getMediaPosters - Get Media Posters
- postMediaPoster - Upload Media Poster
- getMetadataChildren - Get Items Children
- getTopWatchedContent - Get Top Watched Content
log
- logLine - Logging a single line message.
- logMultiLine - Logging a multi-line message
- enablePaperTrail - Enabling Papertrail
media
- markPlayed - Mark Media Played
- markUnplayed - Mark Media Unplayed
- updatePlayProgress - Update Media Play Progress
- getBannerImage - Get Banner Image
- getThumbImage - Get Thumb Image
playlists
- createPlaylist - Create a Playlist
- getPlaylists - Get All Playlists
- getPlaylist - Retrieve Playlist
- deletePlaylist - Deletes a Playlist
- updatePlaylist - Update a Playlist
- getPlaylistContents - Retrieve Playlist Contents
- clearPlaylistContents - Delete Playlist Contents
- addPlaylistContents - Adding to a Playlist
- uploadPlaylist - Upload Playlist
plex
- getCompanionsData - Get Companions Data
- getUserFriends - Get list of friends of the user logged in
- getGeoData - Get Geo Data
- getHomeData - Get Plex Home Data
- getServerResources - Get Server Resources
- getPin - Get a Pin
- getTokenByPinId - Get Access Token by PinId
search
- performSearch - Perform a search
- performVoiceSearch - Perform a voice search
- getSearchResults - Get Search Results
server
- getServerCapabilities - Get Server Capabilities
- getServerPreferences - Get Server Preferences
- getAvailableClients - Get Available Clients
- getDevices - Get Devices
- getServerIdentity - Get Server Identity
- getMyPlexAccount - Get MyPlex Account
- getResizedPhoto - Get a Resized Photo
- getMediaProviders - Get Media Providers
- getServerList - Get Server List
sessions
- getSessions - Get Active Sessions
- getSessionHistory - Get Session History
- getTranscodeSessions - Get Transcode Sessions
- stopTranscodeSession - Stop a Transcode Session
statistics
- getStatistics - Get Media Statistics
- getResourcesStatistics - Get Resources Statistics
- getBandwidthStatistics - Get Bandwidth Statistics
updater
- getUpdateStatus - Querying status of updates
- checkForUpdates - Checking for updates
- applyUpdates - Apply Updates
users
- getUsers - Get list of all connected users
video
- getTimeline - Get the timeline for a media item
- startUniversalTranscode - Start Universal Transcode
watchlist
- getWatchList - Get User Watchlist
Error Handling
PlexAPIError is the base class for all HTTP error responses. It has the following properties:
| Property | Type | Description |
|---|---|---|
error.message | string | Error message |
error.statusCode | number | HTTP response status code eg 404 |
error.headers | Headers | HTTP response headers |
error.body | string | HTTP body. Can be empty string if no body is returned. |
error.rawResponse | Response | Raw HTTP response |
error.data$ | Optional. Some errors may contain structured data. See Error Classes. |
Example
import { PlexAPI } from "@lukehagar/plexjs";
import * as errors from "@lukehagar/plexjs/sdk/models/errors";
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
try {
const result = await plexAPI.server.getServerCapabilities();
console.log(result);
} catch (error) {
// The base class for HTTP error responses
if (error instanceof errors.PlexAPIError) {
console.log(error.message);
console.log(error.statusCode);
console.log(error.body);
console.log(error.headers);
// Depending on the method different errors may be thrown
if (error instanceof errors.GetServerCapabilitiesBadRequest) {
console.log(error.data$.errors); // Errors[]
console.log(error.data$.rawResponse); // Response
}
}
}
}
run();Error Classes
Primary error:
PlexAPIError: The base class for HTTP error responses.
Network errors:
ConnectionError: HTTP client was unable to make a request to a server.RequestTimeoutError: HTTP request timed out due to an AbortSignal signal.RequestAbortedError: HTTP request was aborted by the client.InvalidRequestError: Any input used to create a request is invalid.UnexpectedClientError: Unrecognised or unexpected error.
Inherit from PlexAPIError:
GetServerCapabilitiesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetServerPreferencesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetAvailableClientsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetDevicesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetMyPlexAccountBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetResizedPhotoBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetMediaProvidersBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetServerListBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*MarkPlayedBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*MarkUnplayedBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*UpdatePlayProgressBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetBannerImageBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetThumbImageBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTimelineBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StartUniversalTranscodeBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetServerActivitiesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*CancelServerActivitiesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetButlerTasksBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StartAllTasksBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StopAllTasksBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StartTaskBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StopTaskBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetCompanionsDataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetUserFriendsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetGeoDataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetHomeDataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetServerResourcesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetPinBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTokenByPinIdBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetGlobalHubsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetLibraryHubsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*PerformSearchBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*PerformVoiceSearchBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSearchResultsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetFileHashBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetRecentlyAddedLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetAllLibrariesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetLibraryDetailsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*DeleteLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetLibraryItemsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetLibrarySectionsAllBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetRefreshLibraryMetadataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSearchLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetGenresLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetCountriesLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetActorsLibraryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSearchAllLibrariesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetMediaMetaDataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetMetadataChildrenBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTopWatchedContentBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetWatchListBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*LogLineBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*LogMultiLineBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*EnablePaperTrailBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*CreatePlaylistBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetPlaylistsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetPlaylistBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*DeletePlaylistBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*UpdatePlaylistBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetPlaylistContentsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*ClearPlaylistContentsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*AddPlaylistContentsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*UploadPlaylistBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTransientTokenBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSourceConnectionInformationBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTokenDetailsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*PostUsersSignInDataBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetStatisticsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetResourcesStatisticsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetBandwidthStatisticsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSessionsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetSessionHistoryBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetTranscodeSessionsBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*StopTranscodeSessionBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetUpdateStatusBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*CheckForUpdatesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*ApplyUpdatesBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetUsersBadRequest: Bad Request - A parameter was not specified, or was specified incorrectly. Status code400. Applicable to 1 of 84 methods.*GetServerCapabilitiesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetServerPreferencesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetAvailableClientsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetDevicesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetMyPlexAccountUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetResizedPhotoUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetMediaProvidersUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetServerListUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*MarkPlayedUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*MarkUnplayedUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*UpdatePlayProgressUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetBannerImageUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetThumbImageUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTimelineUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StartUniversalTranscodeUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetServerActivitiesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*CancelServerActivitiesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetButlerTasksUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StartAllTasksUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StopAllTasksUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StartTaskUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StopTaskUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetCompanionsDataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetUserFriendsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetGeoDataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetHomeDataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetServerResourcesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetGlobalHubsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetLibraryHubsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*PerformSearchUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*PerformVoiceSearchUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSearchResultsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetFileHashUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetRecentlyAddedLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetAllLibrariesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetLibraryDetailsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*DeleteLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetLibraryItemsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetLibrarySectionsAllUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetRefreshLibraryMetadataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSearchLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetGenresLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetCountriesLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetActorsLibraryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSearchAllLibrariesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetMediaMetaDataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetMetadataChildrenUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTopWatchedContentUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetWatchListUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*LogLineUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*LogMultiLineUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*EnablePaperTrailUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*CreatePlaylistUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetPlaylistsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetPlaylistUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*DeletePlaylistUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*UpdatePlaylistUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetPlaylistContentsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*ClearPlaylistContentsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*AddPlaylistContentsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*UploadPlaylistUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTransientTokenUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSourceConnectionInformationUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTokenDetailsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*PostUsersSignInDataUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetStatisticsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetResourcesStatisticsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetBandwidthStatisticsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSessionsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetSessionHistoryUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTranscodeSessionsUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*StopTranscodeSessionUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetUpdateStatusUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*CheckForUpdatesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*ApplyUpdatesUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetUsersUnauthorized: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code401. Applicable to 1 of 84 methods.*GetTokenByPinIdResponseBody: Not Found or Expired. Status code404. Applicable to 1 of 84 methods.*GetServerIdentityRequestTimeout: Request Timeout. Status code408. Applicable to 1 of 84 methods.*ResponseValidationError: Type mismatch between the data returned from the server and the structure expected by the SDK. Seeerror.rawValuefor the raw value anderror.pretty()for a nicely formatted multi-line string.
* Check the method documentation to see if the error is applicable.
Server Selection
Server Variables
The default server {protocol}://{ip}:{port} contains variables and is set to https://10.10.10.47:32400 by default. To override default values, the following parameters are available when initializing the SDK client instance:
| Variable | Parameter | Supported Values | Default | Description |
|---|---|---|---|---|
protocol | protocol: models.ServerProtocol | - "http"- "https" | "https" | The protocol to use for the server connection |
ip | ip: string | string | "10.10.10.47" | The IP address or hostname of your Plex Server |
port | port: string | string | "32400" | The port of your Plex Server |
Example
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
protocol: "https",
ip: "4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d",
port: "44765",
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await plexAPI.server.getServerCapabilities();
console.log(result);
}
run();Override Server URL Per-Client
The default server can be overridden globally by passing a URL to the serverURL: string optional parameter when initializing the SDK client instance. For example:
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
serverURL: "https://10.10.10.47:32400",
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await plexAPI.server.getServerCapabilities();
console.log(result);
}
run();Override Server URL Per-Operation
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await plexAPI.plex.getCompanionsData({
serverURL: "https://plex.tv/api/v2",
});
console.log(result);
}
run();Custom HTTP Client
The TypeScript SDK makes API calls using an HTTPClient that wraps the native
Fetch API. This
client is a thin wrapper around fetch and provides the ability to attach hooks
around the request lifecycle that can be used to modify the request or handle
errors and response.
The HTTPClient constructor takes an optional fetcher argument that can be
used to integrate a third-party HTTP client or when writing tests to mock out
the HTTP client and feed in fixtures.
The following example shows how to use the "beforeRequest" hook to to add a
custom header and a timeout to requests and how to use the "requestError" hook
to log errors:
import { PlexAPI } from "@lukehagar/plexjs";
import { HTTPClient } from "@lukehagar/plexjs/lib/http";
const httpClient = new HTTPClient({
// fetcher takes a function that has the same signature as native `fetch`.
fetcher: (request) => {
return fetch(request);
}
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const sdk = new PlexAPI({ httpClient });Authentication
Per-Client Security Schemes
This SDK supports the following security scheme globally:
| Name | Type | Scheme |
|---|---|---|
accessToken | apiKey | API key |
To authenticate with the API the accessToken parameter must be set when initializing the SDK client instance. For example:
import { PlexAPI } from "@lukehagar/plexjs";
const plexAPI = new PlexAPI({
accessToken: "<YOUR_API_KEY_HERE>",
});
async function run() {
const result = await plexAPI.server.getServerCapabilities();
console.log(result);
}
run();Requirements
For supported JavaScript runtimes, please consult RUNTIMES.md.
Standalone functions
All the methods listed above are available as standalone functions. These functions are ideal for use in applications running in the browser, serverless runtimes or other environments where application bundle size is a primary concern. When using a bundler to build your application, all unused functionality will be either excluded from the final bundle or tree-shaken away.
To read more about standalone functions, check FUNCTIONS.md.
activitiesCancelServerActivities- Cancel Server ActivitiesactivitiesGetServerActivities- Get Server ActivitiesauthenticationGetSourceConnectionInformation- Get Source Connection InformationauthenticationGetTokenDetails- Get Token DetailsauthenticationGetTransientToken- Get a Transient TokenauthenticationPostUsersSignInData- Get User Sign In DatabutlerGetButlerTasks- Get Butler tasksbutlerStartAllTasks- Start all Butler tasksbutlerStartTask- Start a single Butler taskbutlerStopAllTasks- Stop all Butler tasksbutlerStopTask- Stop a single Butler taskhubsGetGlobalHubs- Get Global HubshubsGetLibraryHubs- Get library specific hubshubsGetRecentlyAdded- Get Recently AddedlibraryDeleteLibrary- Delete Library SectionlibraryGetActorsLibrary- Get Actors of library medialibraryGetAllLibraries- Get All LibrarieslibraryGetCountriesLibrary- Get Countries of library medialibraryGetFileHash- Get Hash ValuelibraryGetGenresLibrary- Get Genres of library medialibraryGetLibraryDetails- Get Library DetailslibraryGetLibraryItems- Get Library ItemslibraryGetLibrarySectionsAll- Get Library section media by tag ALLlibraryGetMediaArts- Get Media Background ArtworklibraryGetMediaMetaData- Get Media MetadatalibraryGetMediaPosters- Get Media PosterslibraryGetMetadataChildren- Get Items ChildrenlibraryGetRecentlyAddedLibrary- Get Recently AddedlibraryGetRefreshLibraryMetadata- Refresh Metadata Of The LibrarylibraryGetSearchAllLibraries- Search All LibrarieslibraryGetSearchLibrary- Search LibrarylibraryGetTopWatchedContent- Get Top Watched ContentlibraryPostMediaArts- Upload Media Background ArtworklibraryPostMediaPoster- Upload Media PosterlogEnablePaperTrail- Enabling PapertraillogLogLine- Logging a single line message.logLogMultiLine- Logging a multi-line messagemediaGetBannerImage- Get Banner ImagemediaGetThumbImage- Get Thumb ImagemediaMarkPlayed- Mark Media PlayedmediaMarkUnplayed- Mark Media UnplayedmediaUpdatePlayProgress- Update Media Play ProgressplaylistsAddPlaylistContents- Adding to a PlaylistplaylistsClearPlaylistContents- Delete Playlist ContentsplaylistsCreatePlaylist- Create a PlaylistplaylistsDeletePlaylist- Deletes a PlaylistplaylistsGetPlaylist- Retrieve PlaylistplaylistsGetPlaylistContents- Retrieve Playlist ContentsplaylistsGetPlaylists- Get All PlaylistsplaylistsUpdatePlaylist- Update a PlaylistplaylistsUploadPlaylist- Upload PlaylistplexGetCompanionsData- Get Companions DataplexGetGeoData- Get Geo DataplexGetHomeData- Get Plex Home DataplexGetPin- Get a PinplexGetServerResources- Get Server ResourcesplexGetTokenByPinId- Get Access Token by PinIdplexGetUserFriends- Get list of friends of the user logged insearchGetSearchResults- Get Search ResultssearchPerformSearch- Perform a searchsearchPerformVoiceSearch- Perform a voice searchserverGetAvailableClients- Get Available ClientsserverGetDevices- Get DevicesserverGetMediaProviders- Get Media ProvidersserverGetMyPlexAccount- Get MyPlex AccountserverGetResizedPhoto- Get a Resized PhotoserverGetServerCapabilities- Get Server CapabilitiesserverGetServerIdentity- Get Server IdentityserverGetServerList- Get Server ListserverGetServerPreferences- Get Server PreferencessessionsGetSessionHistory- Get Session HistorysessionsGetSessions- Get Active SessionssessionsGetTranscodeSessions- Get Transcode SessionssessionsStopTranscodeSession- Stop a Transcode SessionstatisticsGetBandwidthStatistics- Get Bandwidth StatisticsstatisticsGetResourcesStatistics- Get Resources StatisticsstatisticsGetStatistics- Get Media StatisticsupdaterApplyUpdates- Apply UpdatesupdaterCheckForUpdates- Checking for updatesupdaterGetUpdateStatus- Querying status of updatesusersGetUsers- Get list of all connected usersvideoGetTimeline- Get the timeline for a media itemvideoStartUniversalTranscode- Start Universal TranscodewatchlistGetWatchList- Get User Watchlist
File uploads
Certain SDK methods accept files as part of a multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request.
Depe
7 months ago
7 months ago
9 months ago
7 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
6 months ago
6 months ago
6 months ago
9 months ago
5 months ago
9 months ago
5 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago