openapi: 3.1.1 info: title: Plex Media Server version: 1.1.1 description: |- OpenAPI specification for the Plex Media Server (PMS) API and the plex.tv cloud API. ## Base URLs - **PMS (local server)**: `http(s)://{host}:{port}` — Most endpoints in this spec target the local PMS. - **plex.tv v2**: `https://plex.tv/api/v2` — Authentication, account, and social endpoints. - **plex.tv v1 (legacy)**: `https://plex.tv/api` — Legacy XML endpoints (friends, home users, claims). - **Cloud providers**: `https://discover.provider.plex.tv`, `https://metadata.provider.plex.tv`, etc. Endpoints that target plex.tv or cloud providers declare an override `servers` array. ## Authentication - **X-Plex-Token**: Pass via the `X-Plex-Token` header on every request. It may also be passed as a query parameter (`?X-Plex-Token=...`) on all endpoints. - **X-Plex-Client-Identifier**: Mandatory for OAuth PIN flow (`/pins`) and JWT device registration. Must be a unique, persistent identifier for the client application. - **OAuth PIN Flow**: `POST /pins` → user visits `https://plex.tv/link` → `GET /pins/{pinId}` → obtain `authToken`. ## Response Formats - **PMS endpoints**: Return XML by default. Send `Accept: application/json` to receive JSON. - **plex.tv v2**: Returns JSON by default. - **Legacy v1 endpoints** (`/pins.xml`, `/api/resources`, `/api/users/`): Return XML only. ## Rate Limiting plex.tv auth endpoints (PIN creation, sign-in) enforce rate limits. Clients should implement exponential backoff and reuse tokens rather than re-authenticating on every request. contact: name: Plex API Spec Maintainers url: https://github.com/LukasParke/plex-api-spec email: api@plex.tv license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://{IP-description}.{identifier}.plex.direct:{port} variables: identifier: description: The unique identifier of this particular PMS default: 0123456789abcdef0123456789abcdef IP-description: description: A `-` separated string of the IPv4 or IPv6 address components default: 1-2-3-4 port: description: The Port number configured on the PMS. Typically (`32400`). default: '32400' - url: '{protocol}://{host}:{port}' variables: host: description: |- The Host of the PMS. If using on a local network, this is the internal IP address of the server hosting the PMS. If using on an external network, this is the external IP address for your network, and requires port forwarding. If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding. default: localhost port: description: |- The Port number configured on the PMS. Typically (`32400`). If using a reverse proxy, this would be the port number configured on the proxy. default: '32400' protocol: description: The network protocol to use. Typically (`http` or `https`) default: http - url: '{full_server_url}' variables: full_server_url: description: The full manual URL to access the PMS default: http://localhost:32400 security: - token: - shared user - admin x-speakeasy-globals: parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" tags: - name: Activities description: |- Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. - name: Authentication description: Plex Authentication operations - name: Butler description: The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. - name: Collections description: API Operations against the Collections - name: Content description: The actual content of the media provider - name: Devices description: |- Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below. Example SSDP output ``` 1 0 urn:plex-tv:device:Media:1 Turing Hopper 3000 Plex, Inc. https://plex.tv/ Turing Hopper 3000 Media Grabber Plex Media Grabber 1 https://plex.tv uuid:42fde8e4-93b6-41e5-8a63-12d848655811 http://10.0.0.5:8088 urn:plex-tv:service:MediaGrabber:1 urn:plex-tv:serviceId:MediaGrabber ``` - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum. - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted. Note: This tag covers media grabber and network tuner devices only. For client device discovery, use `/clients` or `/resources`. - name: Download Queue description: |- API Operations against the Download Queue. Note: The Download Queue is distinct from the Play Queue. The Download Queue manages offline/downloaded content, while the Play Queue manages active playback sessions. - name: DVRs description: The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself - name: EPG description: The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when - name: Events description: |- The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported. Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket. - name: General description: General endpoints for basic PMS operation not specific to any media provider - name: Hubs description: The hubs within a media provider - name: Library description: Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). - name: Library Collections description: Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. x-displayName: 'Library: Collections' - name: Library Playlists description: Endpoints for manipulating playlists. x-displayName: 'Library: Playlists' - name: Live TV description: LiveTV contains the playback sessions of a channel from a DVR device - name: Log description: Logging mechanism to allow clients to log to the server - name: Play Queue description: |- The playqueue feature within a media provider A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue. Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion. All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area. The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. - name: Playback description: Plex Playback operations - name: Playlist description: Media playlists that can be created and played back - name: Playlists description: Plex Playlists operations - name: Plex description: Plex Plex operations - name: Preferences description: API Operations against the Preferences - name: Provider description: |- Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers. Note: Dynamic proxy paths such as `/{provider}/search`, `/{provider}/metadata`, and other provider-relative routes are resolved through the media provider API. - name: Rate description: Operations for rating media items (thumbs up/down, star ratings, etc.) - name: Search description: The search feature within a media provider - name: Status description: The status endpoints give you information about current playbacks, play history, and even terminating sessions. - name: Subscriptions description: Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available - name: Timeline description: The actions feature within a media provider - name: Transcoder description: API Operations against the Transcoder - name: UltraBlur description: Service provided to compute UltraBlur colors and images. - name: Updater description: |- This describes the API for searching and applying updates to the Plex Media Server. Updates to the status can be observed via the Event API. - name: Users description: Plex Users operations x-tagGroups: - name: Server tags: - General - Activities - Butler - Updater - Log - Preferences - Transcoder - name: Library tags: - Library - Hubs - Search - name: Media tags: - Timeline - DVRs - EPG - Live TV - Subscriptions - Devices - name: System tags: - Download Queue paths: /: get: operationId: getServerInfo summary: Get PMS info tags: - General description: Information about this PMS setup and configuration parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: allOf: - $ref: "#/components/schemas/ServerConfiguration" - type: object properties: Directory: type: array items: $ref: "#/components/schemas/Directory" example: identifier: example offset: 1 size: 1 totalSize: 1 allowCameraUpload: true allowChannelAccess: true allowMediaDeletion: true allowSharing: true allowSync: true allowTuners: true backgroundProcessing: true certificate: true companionProxy: true countryCode: example diagnostics: - example eventStream: true friendlyName: example hubSearch: true itemClusters: true livetv: 7 machineIdentifier: 0123456789abcdef0123456789abcdef012345678 mediaProviders: true multiuser: true musicAnalysis: 2 myPlex: true myPlexMappingState: mapped myPlexSigninState: ok myPlexSubscription: true myPlexUsername: example offlineTranscode: 1 ownerFeatures: - example platform: example platformVersion: example pluginHost: true pushNotifications: true readOnlyLibraries: true streamingBrainABRVersion: 1 streamingBrainVersion: 1 sync: true transcoderActiveVideoSessions: 1 transcoderAudio: true transcoderLyrics: true transcoderPhoto: true transcoderSubtitles: true transcoderVideo: true transcoderVideoBitrates: - example transcoderVideoQualities: - example transcoderVideoResolutions: - example updatedAt: 1 updater: true version: example voiceSearch: true Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /:/eventsource/notifications: get: operationId: getNotifications summary: Connect to Eventsource tags: - Events description: Connect to the event source to get a stream of events parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: filter description: |- By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: - `filters=-log`: All event types except logs (the default). - `filters=foo,bar`: Only the foo and bar event types. - `filters=`: All events types. - `filters=-foo,bar`: All event types except foo and bar. in: query schema: type: array items: type: string responses: '200': description: OK content: application/octet-stream: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /:/prefs: get: operationId: getAllPreferences summary: Get all preferences tags: - Preferences description: Get the list of all preferences responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSettings" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: setPreferences summary: Set preferences tags: - Preferences description: Set a set of preferences in query parameters parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: prefs description: The preference key to retrieve or set in: query required: true schema: type: object example: FriendlyName: My Server ScheduledLibraryUpdateInterval: 3600 sendCrashReports: 1 responses: '200': $ref: "#/components/responses/200" description: Successfully updated set preferences content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Attempt to set a preferences that doesn't exist content: text/html: schema: type: string '403': description: Attempt to set a preferences that doesn't exist content: text/html: schema: type: string /:/prefs/get: get: operationId: getPreference summary: Get a preferences tags: - Preferences description: Get a single preference and value parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The preference to fetch in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSettings" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value '404': description: No preference with the provided name found. content: text/html: schema: type: string /:/progress: get: operationId: getProgress summary: Get Progress tags: - Playback description: Get or update watch progress for a media item. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: key description: The metadata key of the item in: query required: true schema: type: string - name: time description: The current playback position in milliseconds in: query required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ProgressResponse" example: MediaContainer: size: 1 Video: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /:/rate: put: operationId: setRating summary: Rate an item tags: - Rate description: |- Set the rating on an item. This API does respond to the GET verb but applications should use PUT parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: identifier description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` in: query required: true schema: type: string - name: key description: The key of the item to rate. This is the `ratingKey` found in metadata items in: query required: true schema: type: string - name: rating description: The rating to give the item. in: query required: true schema: type: number minimum: 0 maximum: 10 - name: ratedAt description: The time when the rating occurred. If not present, interpreted as now. in: query required: false schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully updated rate an item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Bad Request. Can occur when parameters are of the wrong type, missing, or if the `ratedAt` is in the future content: text/html: schema: type: string '404': description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key content: text/html: schema: type: string /:/scrobble: put: operationId: markPlayed summary: Mark an item as played tags: - Timeline description: |- Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter This API does respond to the GET verb but applications should use PUT parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: identifier description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` in: query required: true schema: type: string - name: key description: The key of the item to rate. This is the `ratingKey` found in metadata items in: query required: false schema: type: string - name: uri description: URI of the item to scrobble. Format is `library:///item/` or `plex://movie/` or `plex://episode/`. in: query required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated mark an item as played content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Bad Request. Can occur when parameters are of the wrong type, or missing content: text/html: schema: type: string '404': description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key content: text/html: schema: type: string /:/timeline: post: operationId: report summary: Report media timeline tags: - Timeline description: This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular). parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: key description: The details key for the item. in: query schema: type: string example: /foo - name: ratingKey description: The rating key attribute for the item. in: query schema: type: string example: xyz - name: state description: The current state of the media. in: query schema: type: string enum: - stopped - buffering - playing - paused example: playing - name: playQueueItemID description: If playing media from a play queue, the play queue's ID. in: query schema: type: string example: 123 - name: time description: The current time offset of playback in ms. in: query schema: type: integer example: 0 - name: duration description: The total duration of the item in ms. in: query schema: type: integer example: 10000 - name: continuing description: When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: updated description: Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated. in: query schema: type: integer example: 14200000 - name: offline description: Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live". in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: timeToFirstFrame description: Time in seconds till first frame is displayed. Sent only on the first playing timeline request. in: query schema: type: integer example: 1000 - name: timeStalled description: Time in seconds spent buffering since last request. in: query schema: type: integer example: 1000 - name: bandwidth description: Bandwidth in kbps as estimated by the client. in: query schema: type: integer example: 100 - name: bufferedTime description: Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below. in: query schema: type: integer example: 100 - name: bufferedSize description: Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above in: query schema: type: integer example: 1024 - name: containerKey description: Groups timeline reports (e.g. /playQueues/123). in: query schema: type: string - name: guid description: Global unique identifier for the item. in: query schema: type: string - name: playQueueID description: Identifies the play queue itself (distinct from playQueueItemID). in: query schema: type: integer - name: url description: Alternative to key/ratingKey (legacy). in: query schema: type: string - name: X-Plex-Client-Identifier description: Unique per client. in: header required: true schema: type: string - name: X-Plex-Session-Identifier description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) in: header schema: type: string responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/ServerConfiguration" - type: object properties: Bandwidths: description: A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth type: object properties: Bandwidth: type: array items: $ref: "#/components/schemas/Bandwidth" playQueueID: description: The play queue ID when playback originates from a queue. type: integer terminationCode: description: A code describing why the session was terminated by the server. type: integer terminationText: description: A user friendly and localized text describing why the session was terminated by the server. type: string example: MediaContainer: allowCameraUpload: true allowChannelAccess: true allowMediaDeletion: true allowSharing: true allowSync: true allowTuners: true backgroundProcessing: true certificate: true companionProxy: true countryCode: example diagnostics: [] eventStream: true friendlyName: example hubSearch: true itemClusters: true livetv: 7 machineIdentifier: 0123456789abcdef0123456789abcdef012345678 mediaProviders: true multiuser: true musicAnalysis: 2 myPlex: true myPlexMappingState: mapped myPlexSigninState: ok myPlexSubscription: true myPlexUsername: example offlineTranscode: 1 ownerFeatures: [] platform: example platformVersion: example pluginHost: true pushNotifications: true readOnlyLibraries: true streamingBrainABRVersion: 1 streamingBrainVersion: 1 sync: true transcoderActiveVideoSessions: 1 transcoderAudio: true transcoderLyrics: true transcoderPhoto: true transcoderSubtitles: true transcoderVideo: true transcoderVideoBitrates: [] transcoderVideoQualities: [] transcoderVideoResolutions: [] updatedAt: 1 updater: true version: example voiceSearch: true Bandwidths: Bandwidth: - bandwidth: 1 resolution: string value time: 1 playQueueID: 1 terminationCode: 1 terminationText: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /:/unscrobble: put: operationId: unscrobble summary: Mark an item as unplayed tags: - Timeline description: |- Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter This API does respond to the GET verb but applications should use PUT parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: identifier description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` in: query required: true schema: type: string - name: key description: The key of the item to rate. This is the `ratingKey` found in metadata items in: query required: false schema: type: string - name: uri description: URI of the item to scrobble. Format is `library:///item/` or `plex://movie/` or `plex://episode/`. in: query required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated mark an item as unplayed content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Bad Request. Can occur when parameters are of the wrong type, or missing content: text/html: schema: type: string '404': description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key content: text/html: schema: type: string /:/websocket/notifications: get: operationId: connectWebSocket summary: Connect to WebSocket tags: - Events description: Connect to the web socket to get a stream of events parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: filter description: |- By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: - `filters=-log`: All event types except logs (the default). - `filters=foo,bar`: Only the foo and bar event types. - `filters=`: All events types. - `filters=-foo,bar`: All event types except foo and bar. in: query schema: type: array items: type: string responses: '200': description: OK content: application/octet-stream: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /:/websockets/notifications: get: operationId: getWebsocketNotifications summary: Get WebSocket Notifications tags: - Events description: WebSocket endpoint for real-time notifications (plural alias). Connect with X-Plex-Token header. Delivers NotificationContainer messages. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '101': description: Switching Protocols - WebSocket connection established '200': description: WebSocket messages content: application/octet-stream: schema: $ref: "#/components/schemas/NotificationContainer" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /accounts: get: operationId: getSystemAccounts summary: Get System Accounts tags: - General description: Get a list of local system accounts. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /actions/addToWatchlist: post: operationId: addToWatchlist summary: Add to Watchlist tags: - Provider description: Add an item to the user's Plex Discover watchlist. servers: - url: https://discover.provider.plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uri description: The URI of the item to add or remove in: query required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /actions/removeFromContinueWatching: put: operationId: removeFromContinueWatching summary: Remove From Continue Watching tags: - Playback description: Remove an item from the Continue Watching list. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: key description: The metadata key of the item in: query required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /actions/removeFromWatchlist: post: operationId: removeFromWatchlist summary: Remove from Watchlist tags: - Provider description: Remove an item from the user's Plex Discover watchlist. servers: - url: https://discover.provider.plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uri description: The URI of the item to add or remove in: query required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /activities: get: operationId: listActivities summary: Get all activities tags: - Activities description: List all activities on the server. Admins can see all activities but other users can only see their own responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: type: object properties: Activity: type: array items: $ref: "#/components/schemas/Activity" example: MediaContainer: Activity: - title: string value type: string value cancellable: true Context: {} progress: 1 Response: {} subtitle: string value userID: 1 uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /api/resources: get: operationId: getLegacyResources summary: Get Legacy Resources tags: - Users description: Get legacy published server connections (XML). servers: - url: https://plex.tv/api responses: '200': description: OK content: application/xml: schema: $ref: "#/components/schemas/MediaContainerWithDevice" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /api/users/: get: operationId: getLegacyUsers summary: Get Legacy Users tags: - Users description: Get legacy friends list (XML). servers: - url: https://plex.tv/api responses: '200': description: OK content: application/xml: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /api/v2/user/webhooks: get: operationId: getUserWebhooks summary: User Webhooks tags: - General description: List webhook URLs for the logged-in user. servers: - url: https://plex.tv/api/v2 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/WebhookPayload" example: Account: title: string value id: 1 thumb: string value event: media.play Metadata: {} owner: true Player: title: string value local: true publicAddress: string value uuid: string value Server: title: string value uuid: string value user: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addUserWebhook summary: Add User Webhook tags: - General description: Add a webhook URL for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /auth/jwk: post: operationId: registerDeviceJWK summary: Register Device JWK tags: - Authentication description: Register a device public key (JWK) for JWT-based authentication. servers: - url: https://clients.plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" requestBody: content: application/json: example: jwk: crv: string value kid: string value kty: string value x: string value strong: false schema: $ref: "#/components/schemas/JWKRegistrationRequest" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/AuthTokenResponse" example: authToken: string value clientIdentifier: string value jwt: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /auth/keys: get: operationId: getAuthKeys summary: Get Auth Keys tags: - Authentication description: Get Plex public JWKs for signature verification. servers: - url: https://clients.plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/AuthKeysResponse" example: keys: - alg: string value e: string value kid: string value kty: string value n: string value use: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /auth/nonce: get: operationId: getAuthNonce summary: Get Auth Nonce tags: - Authentication description: Get a nonce to sign in client JWT authentication flow. servers: - url: https://clients.plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/AuthNonceResponse" example: nonce: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /auth/token: post: operationId: exchangeJWTToken summary: Exchange JWT Token tags: - Authentication description: Exchange a signed client JWT for a Plex JWT token. servers: - url: https://clients.plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" requestBody: content: application/json: example: clientIdentifier: string value jwt: string value scope: string value schema: $ref: "#/components/schemas/TokenExchangeRequest" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/AuthTokenResponse" example: authToken: string value clientIdentifier: string value jwt: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /butler: delete: operationId: stopTasks summary: Stop all Butler tasks tags: - Butler description: This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. security: - token: - admin responses: '200': $ref: "#/components/responses/200" description: Successfully deleted stop all butler tasks content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: getTasks summary: Get all Butler tasks tags: - Butler description: Get the list of butler tasks and their scheduling security: - token: - admin responses: '200': description: Butler tasks content: application/json: schema: type: object properties: ButlerTasks: type: object properties: ButlerTask: type: array items: $ref: "#/components/schemas/ButlerTask" example: ButlerTasks: ButlerTask: - title: string value description: string value enabled: true interval: 1 name: string value scheduleRandomized: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: startTasks summary: Start all Butler tasks tags: - Butler description: |- This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: 1. Any tasks not scheduled to run on the current day will be skipped. 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. 4. If we are outside the configured window, the task will start immediately. security: - token: - admin responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed start all butler tasks content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /claim/token.json: get: operationId: getClaimToken summary: Get Claim Token tags: - Authentication description: Get a claim token for new server setup. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ClaimTokenResponse" example: token: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /clients: get: operationId: getClients summary: Get Clients tags: - General description: Get a list of connected Plex clients. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: List of clients content: application/json: schema: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Server: type: array items: $ref: "#/components/schemas/PlexDevice" example: identifier: example offset: 1 size: 1 totalSize: 1 Server: - accessToken: string value clientIdentifier: string value connections: - address: string value IPv6: true local: true port: 1 protocol: http relay: true uri: string value dnsRebindingProtection: true home: true httpsRequired: true name: string value natLoopbackSupported: true owned: true presence: true product: string value productVersion: string value provides: string value publicAddress: string value publicAddressMatches: true relay: true synced: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /cloud_server: get: operationId: getCloudServer summary: Get Cloud Server tags: - General description: Get Plex Cloud server status for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/CloudServerResponse" example: address: string value name: string value port: 1 scheme: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /devices: get: operationId: getSystemDevices summary: Get System Devices tags: - General description: Get a list of local system devices. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /diagnostics: get: operationId: getDiagnostics summary: Get Diagnostics tags: - General description: Get server diagnostics overview. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /diagnostics/databases: get: operationId: downloadDatabaseDiagnostics summary: Download Database Diagnostics tags: - General description: Download server database diagnostics bundle. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /diagnostics/logs: get: operationId: downloadLogBundle summary: Download Log Bundle tags: - General description: Download server logs bundle. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/BinaryResponse" example: '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /downloadQueue: post: operationId: createDownloadQueue summary: Create download queue tags: - Download Queue description: |- Available: 0.2.0 Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user. responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: DownloadQueue: type: array items: $ref: "#/components/schemas/DownloadQueue" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 DownloadQueue: - id: 1 itemCount: 1 status: deciding '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /features: get: operationId: getFeatures summary: Get Features tags: - Authentication description: Get Plex Pass feature flags for the logged-in user. servers: - url: https://plex.tv/api/v2 responses: '200': description: OK content: application/json: schema: allOf: - type: object - $ref: "#/components/schemas/Feature" example: type: string value Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value key: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /friends: get: operationId: getFriends summary: Get Friends tags: - Users description: Get the list of friends and shared users. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: List of friends content: application/json: schema: type: object properties: users: type: array items: type: object properties: title: type: string email: type: string id: type: integer thumb: type: string username: type: string uuid: type: string example: users: - title: example email: example id: 1 thumb: example username: example uuid: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /geoip: get: operationId: getGeoIP summary: Get GeoIP tags: - General description: Get GeoIP lookup information for the current request. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/GeoIPResponse" example: city: string value coordinates: string value country: string value country_code: string value subdivisions: string value timezone: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /home: get: operationId: getHome summary: Get home hubs tags: - Users description: Get Plex Home user list. servers: - url: https://plex.tv/api/v2 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /home/users: get: operationId: getHomeUsers summary: Get home hubs Users tags: - Users description: Get the list of Plex Home users. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: createHomeUser summary: Create Home User tags: - Users description: Create a new Plex Home user. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs: get: operationId: getAllHubs summary: Get global hubs tags: - Hubs description: Get the global hubs in this PMS parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: onlyTransient description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) in: query schema: $ref: "#/components/schemas/BoolInt" - name: identifier description: If provided, limit to only specified hubs in: query schema: type: array items: type: string responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/continueWatching: get: operationId: getContinueWatching summary: Get the continue watching hub tags: - Hubs description: Get the global continue watching hub parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/continueWatching/items: get: operationId: getContinueWatchingItems summary: Get Continue Watching Items tags: - Hubs description: Get direct access to Continue Watching items. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/home/recentlyAdded: get: operationId: getHomeRecentlyAdded summary: Get home hubs Recently Added tags: - Hubs description: Get the recently added hub for the home screen. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: Recently added hub items content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/items: get: operationId: getHubItems summary: Get a hub's items tags: - Hubs description: Get the items within a single hub specified by identifier parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: identifier description: If provided, limit to only specified hubs in: query required: true schema: type: array items: type: string responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: type: object properties: MediaContainer: $ref: "#/components/schemas/MediaContainer" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 '404': description: The specified hub could not be found content: text/html: schema: type: string /hubs/promoted: get: operationId: getPromotedHubs summary: Get the hubs which are promoted tags: - Hubs description: Get the global hubs which are promoted (should be displayed on the home screen) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/search: get: operationId: searchHubs summary: Search Hub tags: - Search description: |- Perform a search and get the result as hubs This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). In the response's items, the following extra attributes are returned to further describe or disambiguate the result: - `reason`: The reason for the result, if not because of a direct search term match; can be either: - `section`: There are multiple identical results from different sections. - `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language). - ``: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor` - `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold"). - `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID. This request is intended to be very fast, and called as the user types. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: query description: The query term in: query required: true schema: type: string - name: sectionId description: This gives context to the search, and can result in re-ordering of search result hubs. in: query schema: type: integer example: 1 - name: limit description: The number of items to return per hub. 3 if not specified in: query schema: type: integer - name: includeCollections description: Include collection results in search hubs in: query schema: type: boolean responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: A required parameter was not given, the wrong type, or wrong value content: text/html: schema: type: string '404': description: Search restrictions result in no possible items found (such as searching no sections) content: text/html: schema: type: string /hubs/search/voice: get: operationId: voiceSearchHubs summary: Voice Search Hub tags: - Search description: |- Perform a search tailored to voice input and get the result as hubs This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type. Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/type" - name: query description: The query term in: query required: true schema: type: string - name: limit description: The number of items to return per hub. 3 if not specified in: query schema: type: integer - name: includeCollections description: Include collection results in search hubs in: query schema: type: boolean responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: A required parameter was not given, the wrong type, or wrong value content: text/html: schema: type: string /identity: get: operationId: getIdentity summary: Get PMS identity tags: - General description: Get details about this PMS's identity security: - {} responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: type: object properties: claimed: description: Indicates whether this server has been claimed by a user type: boolean machineIdentifier: description: A unique identifier of the computer type: string size: type: integer version: description: The full version string of the PMS type: string example: MediaContainer: claimed: true machineIdentifier: example size: 1 version: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /ip: get: operationId: getIP summary: Get IP tags: - General description: Get the public IP address detected by Plex. servers: - url: https://plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/IPResponse" example: ip: 192.168.1.1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library: get: operationId: getRootLibrary summary: Get Root Library tags: - Library description: Get the root library object. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/all: get: operationId: getLibraryItems summary: Get all items in library tags: - Library description: Request all metadata items according to a query. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/caches: delete: operationId: deleteCaches summary: Delete library caches tags: - Library description: Delete the hub caches so they are recomputed on next request security: - token: - admin responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete library caches content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/clean/bundles: put: operationId: cleanBundles summary: Clean bundles tags: - Library description: Clean out any now unused bundles. Bundles can become unused when media is deleted security: - token: - admin responses: '200': $ref: "#/components/responses/200" description: Successfully updated clean bundles content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/collections: post: operationId: createCollection summary: Create collection tags: - Collections description: Create a collection in the library parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/title" - $ref: "#/components/parameters/smart" - $ref: "#/components/parameters/type" - name: sectionId description: The section where this collection will be created in: query required: true schema: type: string - name: uri description: The URI for processing the smart collection. Required for a smart collection in: query schema: type: string responses: '200': description: The created collection content: application/json: schema: $ref: "#/components/schemas/Collection" example: artBlurHash: string value collectionFilterBasedOnUser: true collectionMode: default collectionPublished: true collectionSort: string value lastRatedAt: 1 thumbBlurHash: string value userRating: 1 '400': description: The uri is missing for a smart collection or the section could not be found content: text/html: schema: type: string /library/file: post: operationId: ingestTransientItem summary: Ingest a transient item tags: - Library description: |- This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path. Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: url description: The file of the file to ingest. in: query schema: type: string format: url example: file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv - name: virtualFilePath description: A virtual path to use when the url is opaque. in: query schema: type: string example: /Avatar.mkv - name: computeHashes description: Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: ingestNonMatches description: Whether or not non matching media should be stored. Defaults to 0. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/matches: get: operationId: getLibraryMatches summary: Get library matches tags: - Library description: |- The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints. This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata. The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching). The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version). Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/type" - $ref: "#/components/parameters/title" - name: includeFullMetadata description: Include full metadata in the response in: query schema: $ref: "#/components/schemas/BoolInt" description: Whether or not to include full metadata on a positive match. When set, and the best match exceeds a score threshold of 85, metadata as rich as possible is sent back. - name: includeAncestorMetadata description: Include ancestor metadata in the response in: query schema: $ref: "#/components/schemas/BoolInt" description: Whether or not to include metadata for the item's ancestor (e.g. show and season data for an episode). - name: includeAlternateMetadataSources description: Include alternate metadata sources in the response in: query schema: $ref: "#/components/schemas/BoolInt" description: Whether or not to return all sources for each metadata field, which results in a different structure being passed back. - name: guid description: Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. in: query schema: type: string - name: year description: Used for movies shows, and albums. Optional. in: query schema: type: integer - name: path description: Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. in: query schema: type: string - name: grandparentTitle description: Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. in: query schema: type: string - name: grandparentYear description: Used for episodes. The year of the show. in: query schema: type: integer - name: parentIndex description: Used for episodes and tracks. The season/album number. in: query schema: type: integer - name: index description: Used for episodes and tracks. The episode/tracks number in the season/album. in: query schema: type: integer - name: originallyAvailableAt description: Used for episodes. In the format `YYYY-MM-DD`. in: query schema: type: string - name: parentTitle description: Used for albums and tracks. The artist name for albums or the album name for tracks. in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/optimize: get: operationId: optimizeLibrary summary: Get Optimize Library tags: - Library description: Optimize the database globally across all library sections. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: optimizeLibraryPost summary: Optimize Library tags: - Library description: Optimize the database globally across all library sections. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: optimizeDatabase summary: Optimize the Database tags: - Library description: Initiate optimize on the database. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: async description: If set, don't wait for completion but return an activity in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated optimize the database content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/randomArtwork: get: operationId: getRandomArtwork summary: Get random artwork tags: - Library description: |- Get random artwork across sections. This is commonly used for a screensaver. This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sections description: The sections for which to fetch artwork. in: query explode: false schema: type: array items: type: integer example: - 5 - 6 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithArtwork" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/recentlyAdded: get: operationId: getRecentlyAddedGlobal summary: Get Global Recently Added tags: - Library description: Get recently added items across all library sections. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: Recently added items content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/search: get: operationId: searchDiscover summary: Search Discover tags: - Provider description: Search movies and shows in Plex Discover. servers: - url: https://discover.provider.plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: query description: The search query string in: query schema: type: string - name: limit description: Maximum number of items to return in: query schema: type: integer default: 10 - name: searchTypes description: Types of content to search for in: query schema: type: string example: movies,tv - name: searchProviders description: Providers to include in the search in: query schema: type: string example: discover,PLEXAVOD,PLEXTVOD - name: includeMetadata description: Include metadata in the search results in: query schema: type: integer default: 1 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/: get: operationId: getLibrarySectionsFallback summary: Get Library Sections (Fallback) tags: - Library description: Fallback for non-owners to list library sections. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/all: get: operationId: getSections summary: Get library sections (main Media Provider Only) tags: - Library description: |- A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: allowSync: $ref: "#/components/schemas/AllowSync" Directory: type: array items: $ref: "#/components/schemas/LibrarySection" title1: description: Typically just "Plex Library" type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 allowSync: true Directory: - title: string value type: movie agent: string value allowSync: true art: string value composite: string value content: true contentChangedAt: 1 createdAt: 1 directory: true filters: true hidden: true key: string value language: string value Location: - id: 1 refreshing: true scannedAt: 1 scanner: string value thumb: string value updatedAt: 1 uuid: string value title1: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addSection summary: Add a library section tags: - Library description: Add a new library section to the server security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: name description: The name of the new section in: query required: true schema: type: string - name: type description: The type of library section in: query required: true schema: type: integer x-speakeasy-name-override: mediaType - name: scanner description: The scanner this section should use in: query schema: type: string - name: agent description: The agent this section should use for metadata in: query required: true schema: type: string - name: metadataAgentProviderGroupId description: The agent group id for this section in: query schema: type: string - name: language description: The language of this section in: query required: true schema: type: string - name: locations description: The locations on disk to add to this section in: query schema: type: array items: type: string example: - O:\fatboy\Media\Ripped\Music - O:\fatboy\Media\My Music - name: prefs description: The preferences for this section in: query style: deepObject schema: type: object example: collectionMode: 2 hidden: 0 - name: relative description: If set, paths are relative to `Media Upload` path in: query schema: $ref: "#/components/schemas/BoolInt" - name: importFromiTunes description: If set, import media from iTunes. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/slash-get-responses-200" description: Successfully created/executed add a library section content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Section cannot be created due to bad parameters in request content: text/html: schema: type: string /library/sections/all/refresh: delete: operationId: stopAllRefreshes summary: Stop refresh tags: - Library description: Stop all refreshes across all sections security: - token: - admin responses: '200': $ref: "#/components/responses/LibrarySections" description: Successfully deleted stop refresh content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/prefs: get: operationId: getSectionsPrefs summary: Get section prefs tags: - Library description: Get a section's preferences for a metadata type security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: type description: The metadata type in: query required: true schema: type: integer x-speakeasy-name-override: mediaType - name: agent description: The metadata agent in use in: query schema: type: string responses: '200': $ref: "#/components/responses/LibrarySections" description: Successfully retrieved get section prefs content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSettings" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value '400': description: type not provided or not an integer content: text/html: schema: type: string /library/sections/refresh: post: operationId: refreshSectionsMetadata summary: Refresh all sections tags: - Library description: Tell PMS to refresh all section metadata security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: force description: Force refresh of metadata in: query schema: type: boolean responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed refresh all sections content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '503': description: Server cannot refresh a music library when not signed in content: text/html: schema: type: string /library/sections/watchlist/all: get: operationId: getWatchlist summary: Get Watchlist tags: - Provider description: Get the user's Plex Discover watchlist. servers: - url: https://discover.provider.plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: Watchlist items content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/tags: get: operationId: getTags summary: Get all library tags of a type tags: - Library description: Get all library tags of a type parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/type" responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: type: object properties: filter: description: The filter string to view metadata wit this tag type: string id: type: integer tag: description: The name of the tag type: string tagKey: description: The key of this tag. This is a universal key across all PMS instances and plex.tv services type: string tagType: description: The type of the tag type: integer thumb: description: The URL to a thumbnail for this tag type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - filter: example id: 1 tag: example tagKey: example tagType: 1 thumb: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs: get: operationId: listDVRs summary: Get DVRs tags: - DVRs description: Get the list of all available DVRs parameters: - name: uuid description: Filter by DVR UUID. in: query schema: type: string - name: lineup description: Filter by lineup. in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/DVRResponse" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: createDVR summary: Create a DVR tags: - DVRs description: Creation of a DVR, after creation of a device and a lineup is selected security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: lineup description: The EPG lineup. in: query schema: type: string example: lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT - name: device description: The device. in: query schema: type: array items: type: string example: device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA - name: language description: The language. in: query schema: type: string example: eng responses: '200': $ref: "#/components/responses/dvrRequestHandler_slash-get-responses-200" description: Successfully created/executed create a dvr content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/epg/channelmap: get: operationId: computeChannelMap summary: Compute the best channel map tags: - EPG description: Compute the best channel map, given device and lineup parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: device description: The URI describing the device in: query required: true schema: type: string - name: lineup description: The URI describing the lineup in: query required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: ChannelMapping: type: array items: type: object properties: channelKey: type: string deviceIdentifier: description: The channel description on the device type: string favorite: type: boolean lineupIdentifier: description: The channel identifier in the lineup type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 ChannelMapping: - channelKey: example deviceIdentifier: example favorite: true lineupIdentifier: example '404': description: No device or provider with the identifier was found content: text/html: schema: type: string '500': description: Failed to compute channel map content: text/html: schema: type: string /livetv/epg/channels: get: operationId: getChannels summary: Get channels for a lineup tags: - EPG description: Get channels for a lineup within an EPG provider parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: lineup description: The URI describing the lineup in: query required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/ChannelResponse" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Channel: - title: string value callSign: string value channelVcn: string value drm: true favorite: true hd: true identifier: string value key: string value language: string value signalQuality: 1 signalStrength: 1 thumb: string value '404': description: No provider with the identifier was found content: text/html: schema: type: string /livetv/epg/countries: get: operationId: getCountries summary: Get all countries tags: - EPG description: This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Country: type: array items: $ref: "#/components/schemas/EPGCountry" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Country: - title: string value type: string value example: string value code: string value flavor: 1 key: string value language: string value languageTitle: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/epg/guide: get: operationId: getEPGGuide summary: Get EPG Guide tags: - EPG description: Fetch the global electronic program guide. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/epg/languages: get: operationId: getAllLanguages summary: Get all languages tags: - EPG description: Returns a list of all possible languages for EPG data. responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Language: type: array items: $ref: "#/components/schemas/EPGLanguage" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Language: - title: string value code: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/epg/lineup: get: operationId: getLineup summary: Compute the best lineup tags: - EPG description: Compute the best lineup, given lineup group and device parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: device description: The URI describing the device in: query required: true schema: type: string - name: lineupGroup description: The URI describing the lineupGroup in: query required: true schema: type: string responses: '200': description: OK headers: X-Plex-Activity: description: The activity of the reload process schema: type: string content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithLineup" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Lineup: - title: string value type: string value identifier: string value key: string value lineupType: 1 location: string value uuid: string value uuid: example '404': description: No device or provider with the identifier was found content: text/html: schema: type: string '500': description: Could not get device's channels content: text/html: schema: type: string /livetv/epg/lineupchannels: get: operationId: getLineupChannels summary: Get the channels for multiple lineups tags: - EPG description: Get the channels across multiple lineups parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: lineup description: The URIs describing the lineups in: query required: true schema: type: array items: type: string responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Lineup: type: array items: allOf: - $ref: "#/components/schemas/Lineup" - type: object properties: Channel: type: array items: $ref: "#/components/schemas/Channel" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Lineup: - title: string value type: string value identifier: string value key: string value lineupType: 1 location: string value uuid: string value '404': description: No provider with the identifier was found content: text/html: schema: type: string /livetv/epg/search: get: operationId: searchEPG summary: Search EPG tags: - EPG description: Search the electronic program guide for upcoming airings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/recordings: get: operationId: getDVRRecordings summary: Get DVR Recordings tags: - Live TV description: List completed DVR recordings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/sessions: get: operationId: getSessions summary: Get all sessions tags: - Live TV description: Get all livetv sessions and metadata parameters: - name: dvrId description: Filter by DVR ID. in: query schema: type: integer - name: channel description: Filter by channel ID. in: query schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /log: post: operationId: writeLog summary: Logging a multi-line message to the Plex Media Server log tags: - Log description: This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. security: - token: - admin requestBody: description: Line separated list of log items required: true content: text/plain: example: level: DEBUG message: string value source: string value schema: $ref: "#/components/schemas/LogMessageRequest" responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed logging a multi-line message to the plex media server log content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string put: operationId: writeMessage summary: Logging a single-line message to the Plex Media Server log tags: - Log description: |- This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: level description: |- An integer log level to write to the PMS log with. - 0: Error - 1: Warning - 2: Info - 3: Debug - 4: Verbose in: query schema: type: integer enum: - 0 - 1 - 2 - 3 - 4 - name: message description: The text of the message to write to the log. in: query schema: type: string - name: source description: A string indicating the source of the message. in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated logging a single-line message to the plex media server log content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /log/networked: post: operationId: enablePapertrail summary: Enabling Papertrail tags: - Log description: |- This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time Note: This endpoint responds to all HTTP verbs but POST is preferred security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: minutes description: The number of minutes logging should be sent to Papertrail in: query schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed enabling papertrail content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': description: User doesn't have permission content: text/html: schema: type: string /media/grabbers: get: operationId: getAvailableGrabbers summary: Get available grabbers tags: - Devices description: Get available grabbers visible to the server parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: protocol description: Only return grabbers providing this protocol. in: query schema: type: string example: livetv responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: MediaGrabber: type: array items: $ref: "#/components/schemas/MediaGrabber" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaGrabber: - title: string value identifier: string value protocol: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/grabbers/devices: get: operationId: listDevices summary: Get all devices tags: - Devices description: Get the list of all devices present security: - token: - admin responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addDevice summary: Add a device tags: - Devices description: This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uri description: The URI of the device. in: query schema: type: string example: http://10.0.0.5 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /media/grabbers/devices/discover: get: operationId: discoverDevices summary: Tell grabbers to discover devices tags: - Devices description: Tell grabbers to discover devices security: - token: - admin parameters: - name: protocol description: Protocol to filter discovery. in: query schema: type: string enum: - stream - download - livetv - name: grabberIdentifier description: Targeted grabber identifier. in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/providers: get: operationId: listProviders summary: Get the list of available media providers tags: - Provider description: Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. responses: '200': description: OK content: application/json: schema: allOf: - type: object properties: MediaContainer: type: object properties: Provider: type: array items: $ref: "#/components/schemas/Provider" - $ref: "#/components/schemas/ProviderFeature" example: MediaContainer: Provider: - title: string value identifier: string value Protocol: string value types: string value title: string value type: string value key: search '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addProvider summary: Add a media provider tags: - Provider description: This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: url description: The URL of the media provider to add. in: query required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed add a media provider content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /media/providers/refresh: post: operationId: refreshProviders summary: Refresh media providers tags: - Provider description: Refresh all known media providers. This is useful in case a provider has updated features. responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed refresh media providers content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/subscriptions: get: operationId: getAllSubscriptions summary: Get all subscriptions tags: - Subscriptions description: Get all subscriptions and potentially the grabs too parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: includeGrabs description: Indicates whether the active grabs should be included as well in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeStorage description: Compute the storage of recorded items desired by this subscription in: query schema: $ref: "#/components/schemas/BoolInt" - name: X-Plex-Container-Start description: Pagination start offset. in: query schema: type: integer - name: X-Plex-Container-Size description: Pagination page size. in: query schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSubscription" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaSubscription: - title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} '403': description: User cannot access DVR on this server content: text/html: schema: type: string post: operationId: createSubscription summary: Create a subscription tags: - Subscriptions description: Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: targetLibrarySectionID description: The library section into which we'll grab the media. Not actually required when the subscription is to a playlist. in: query schema: type: integer example: 1 - name: targetSectionLocationID description: The section location into which to grab. in: query schema: type: integer example: 3 - name: type description: The type of the thing we're subscribing too (e.g. show, season). in: query schema: type: integer example: 2 x-speakeasy-name-override: mediaType - name: hints description: "Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote." in: query style: deepObject schema: type: object example: title: Family Guy - name: prefs description: Subscription preferences. in: query style: deepObject schema: type: object example: minVideoQuality: 720 - name: params description: |- Subscription parameters. - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into - `source`: Required for downloads to indicate the source of the downloaded content. in: query style: deepObject schema: type: object example: mediaProviderID: 1 responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: MediaSubscription: type: array items: $ref: "#/components/schemas/MediaSubscription" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaSubscription: - title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: User cannot access DVR on this server content: text/html: schema: type: string '409': description: An subscription with the same parameters already exists content: text/html: schema: type: string /media/subscriptions/process: post: operationId: processSubscriptions summary: Process all subscriptions tags: - Subscriptions description: Process all subscriptions asynchronously responses: '200': description: OK headers: X-Plex-Activity: description: The activity of the process schema: type: string content: text/html: schema: $ref: "#/components/schemas/SuccessResponse" '403': description: User cannot access DVR on this server content: text/html: schema: type: string /media/subscriptions/scheduled: get: operationId: getScheduledRecordings summary: Get all scheduled recordings tags: - Subscriptions description: Get all scheduled recordings across all subscriptions responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMediaGrabOperation" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive '403': description: User cannot access DVR on this server content: text/html: schema: type: string /media/subscriptions/template: get: operationId: getTemplate summary: Get the subscription template tags: - Subscriptions description: Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: guid description: The guid of the item for which to get the template in: query schema: type: string example: plex://episode/5fc70265c40548002d539d23 - name: type description: Subscription type. in: query schema: type: string x-speakeasy-name-override: mediaType - name: targetLibrarySectionID description: Target library section ID. in: query schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: SubscriptionTemplate: type: array items: type: object properties: MediaSubscription: type: array items: allOf: - $ref: "#/components/schemas/MediaSubscription" - type: object properties: title: description: The title of this subscription type type: string example: This Episode type: description: Metadata type number type: integer airingsType: type: string librarySectionTitle: type: string locationPath: type: string parameters: description: Parameter string for creating this subscription type: string selected: type: boolean targetLibrarySectionID: description: Where this subscription will record to type: integer example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 SubscriptionTemplate: - MediaSubscription: [] '403': description: User cannot access DVR on this server content: text/html: schema: type: string /music/:/transcode: get: operationId: transcodeMusic summary: Transcode Music tags: - Transcoder description: Audio transcode endpoint for music playback. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /myplex/account: get: operationId: getMyPlexAccount summary: Get MyPlex Account tags: - Users description: Get linked MyPlex account info on PMS. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/UserPlexAccount" example: title: string value adsConsentReminderAt: 1 adsConsentSetAt: 1 authToken: string value backupCodesCreated: false confirmed: false country: string value email: user@example.com emailOnlyAuth: false entitlements: - string value experimentalFeatures: false friendlyName: string value guest: false hasPassword: true home: false homeAdmin: false homeSize: 1 id: 1 joinedAt: 1 mailingListActive: false mailingListStatus: active maxHomeSize: 1 pin: string value profile: autoSelectAudio: true protected: false rememberExpiresAt: 1 restricted: false roles: - string value scrobbleTypes: string value services: - endpoint: https://plex.tv identifier: string value status: online subscription: active: true features: - string value status: Inactive subscriptions: - active: true features: - string value status: Inactive thumb: https://plex.tv twoFactorEnabled: false username: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /myplex/claim: post: operationId: claimServer summary: Claim Server tags: - General description: Claim the local PMS server using a claim token obtained from plex.tv. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ClaimTokenResponse" example: token: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /myplex/refreshReachability: put: operationId: refreshReachability summary: Refresh Reachability tags: - General description: Refresh remote access port mapping. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /photo/:/transcode: get: operationId: transcodeImage summary: Transcode an image tags: - Transcoder description: Transcode an image, possibly changing format or size parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: url description: The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url. in: query schema: type: string example: /library/metadata/265/thumb/1715112705 - name: format description: The output format for the image; defaults to jpg in: query required: false schema: type: string enum: - jpg - jpeg - png - ppm - name: width description: The desired width of the output image in: query schema: type: integer - name: height description: The desired height of the output image in: query schema: type: integer - name: quality description: The desired quality of the output. -1 means the highest quality. Defaults to -1 in: query required: false schema: type: integer minimum: -1 maximum: 127 - name: background description: The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none in: query required: false schema: type: string example: '#ff5522' - name: upscale description: Indicates if image should be upscaled to the desired width/height. Defaults to false in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: minSize description: Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension. in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: rotate description: Obey the rotation values specified in EXIF data. Defaults to true. in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: blur description: Apply a blur to the image, Defaults to 0 (none) in: query required: false schema: type: integer - name: saturation description: Scale the image saturation by the specified percentage. Defaults to 100 in: query required: false schema: type: integer minimum: 0 maximum: 100 - name: opacity description: Render the image at the specified opacity percentage. Defaults to 100 in: query required: false schema: type: integer minimum: 0 maximum: 100 - name: chromaSubsampling description: |- Use the specified chroma subsambling. - 0: 411 - 1: 420 - 2: 422 - 3: 444 Defaults to 3 (444) in: query required: false schema: type: integer enum: - 0 - 1 - 2 - 3 - name: blendColor description: The color to blend with the image. Defaults to none in: query required: false schema: type: string example: '#ff5522' responses: '200': description: The resulting image content: image/jpeg: schema: type: string format: binary image/png: schema: type: string format: binary image/x-portable-pixmap: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /ping: get: operationId: ping summary: Ping the server tags: - Authentication description: Health / latency check. No authentication required. security: [] servers: - url: https://plex.tv/api/v2 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /pins: post: operationId: createOAuthPin summary: Create OAuth PIN tags: - Authentication description: Create a 4-character PIN for device linking via OAuth. The user must visit https://plex.tv/link and enter the PIN to authorize the device. security: - clientIdentifier: [] servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: PIN created successfully content: application/json: schema: type: object properties: authToken: type: - string - 'null' clientIdentifier: type: string code: type: string createdAt: type: string expiresAt: type: string expiresIn: type: integer id: type: integer newRegistration: type: boolean product: type: string qr: type: string trusted: type: boolean example: clientIdentifier: example code: example createdAt: example expiresAt: example expiresIn: 1 id: 1 newRegistration: true product: example qr: example trusted: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /pins.xml: post: operationId: createLegacyPin summary: Create Legacy PIN tags: - Authentication description: Legacy PIN creation (XML). servers: - url: https://plex.tv responses: '200': description: OK content: application/xml: schema: $ref: "#/components/schemas/LegacyPinResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /pins/link: put: operationId: linkOAuthPin summary: Link OAuth PIN tags: - Authentication description: Link a PIN to an account (OAuth completion). servers: - url: https://plex.tv/api/v2 requestBody: content: application/json: example: authToken: example pin: example schema: type: object properties: authToken: type: string pin: type: string application/x-www-form-urlencoded: example: authToken: example pin: example schema: type: object properties: authToken: type: string pin: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff /player/playback/audioStream: post: operationId: playerAudioStream summary: Player Audio Stream tags: - Playback description: Change the active audio stream. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: streamID description: The unique identifier of the stream in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/mute: post: operationId: playerMute summary: Player Mute tags: - Playback description: Mute the client audio parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/pause: post: operationId: playerPause summary: Player Pause tags: - Playback description: Pause playback on the client parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/play: post: operationId: playerPlay summary: Player Play tags: - Playback description: Start playback on the client parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/playMedia: post: operationId: playerPlayMedia summary: Player Play Media tags: - Playback description: Play a specific media item on the client. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: key description: The key of the media item to play in: query schema: type: string - name: offset description: The byte offset for stream seeking in: query schema: type: integer - name: machineIdentifier description: The machine identifier of the target device in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/refreshPlayQueue: post: operationId: playerRefreshplayqueue summary: Player Refresh Play Queue tags: - Playback description: Refresh the play queue on the client parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/seek: post: operationId: playerSeek summary: Player Seek tags: - Playback description: Seek to a specific time in the current playback. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: offset description: Target offset in milliseconds in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setParameters: post: operationId: playerSetParameters summary: Player Set Parameters tags: - Playback description: Set shuffle, repeat, and volume parameters. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: shuffle description: Whether to enable shuffle mode in: query schema: type: integer enum: - 0 - 1 - name: repeat description: The repeat mode to set in: query schema: type: integer enum: - 0 - 1 - 2 - name: volume description: The volume level to set in: query schema: type: integer minimum: 0 maximum: 100 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setRating: post: operationId: playerSetRating summary: Player Set Rating tags: - Playback description: Rate the currently playing item. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: rating description: The rating value to set in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setState: post: operationId: playerSetState summary: Player Set State tags: - Playback description: Set the playback state directly. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: state description: The desired playback state in: query schema: type: string enum: - playing - paused - stopped responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setStreams: post: operationId: playerSetStreams summary: Player Set Streams tags: - Playback description: Set active audio, subtitle, and video streams. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: audioStreamID description: The unique identifier of the audiostream in: query schema: type: integer - name: subtitleStreamID description: The unique identifier of the subtitlestream in: query schema: type: integer - name: videoStreamID description: The unique identifier of the videostream in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setTextStream: post: operationId: playerSetTextStream summary: Player Set Text Stream tags: - Playback description: Set the active text stream. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: streamID description: The unique identifier of the stream in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/setViewOffset: post: operationId: playerSetViewOffset summary: Player Set View Offset tags: - Playback description: Set the resume offset for the current item. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: offset description: The byte offset for stream seeking in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/skipBy: post: operationId: playerSkipBy summary: Player Skip By tags: - Playback description: Skip forward or backward by a number of items. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: offset description: Number of items to skip (positive for forward, negative for backward) in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/skipTo: post: operationId: playerSkipTo summary: Player Skip To tags: - Playback description: Skip to a specific item in the play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: key description: The key of the item to skip to in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/stepBack: post: operationId: playerStepback summary: Player Step Back tags: - Playback description: Step back one frame parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/stepForward: post: operationId: playerStepforward summary: Player Step Forward tags: - Playback description: Step forward one frame parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/stop: post: operationId: playerStop summary: Player Stop tags: - Playback description: Stop playback on the client parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/subtitleStream: post: operationId: playerSubtitleStream summary: Player Subtitle Stream tags: - Playback description: Change the active subtitle stream. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: streamID description: The unique identifier of the stream in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/unmute: post: operationId: playerUnmute summary: Player Unmute tags: - Playback description: Unmute the client audio parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/videoStream: post: operationId: playerVideoStream summary: Player Video Stream tags: - Playback description: Change the active video stream. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: streamID description: The unique identifier of the stream in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/playback/volume: post: operationId: playerVolume summary: Player Volume tags: - Playback description: Set the client volume. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string - name: level description: The level in: query schema: type: integer minimum: 0 maximum: 100 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/resources: get: operationId: getClientResources summary: Get Client Resources tags: - Playback description: Get client capabilities and device info. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /player/timeline/poll: get: operationId: playerPollTimeline summary: Player Poll Timeline tags: - Playback description: Poll the client for current playback timeline. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Target-Client-Identifier description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client. in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /playlists: delete: operationId: deletePlaylistByRatingKey summary: Delete Playlist tags: - Playlists description: Delete a playlist. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ratingKey description: The rating key of the playlist to delete. in: query required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: listPlaylists summary: List playlists tags: - Playlist description: Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/smart" - name: playlistType description: Limit to a type of playlist in: query schema: type: string enum: - audio - video - photo - name: type description: Filter by playlist type. Use 42 for optimized/conversion items. in: query schema: type: integer x-speakeasy-name-override: mediaType responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: createPlaylist summary: Create a Playlist tags: - Library Playlists description: Create a new playlist. By default the playlist is blank. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uri description: The content URI for what we're playing (e.g. `library://...`). in: query schema: type: string - name: playQueueID description: To create a playlist from an existing play queue. in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /playlists/upload: post: operationId: uploadPlaylist summary: Upload media art tags: - Library Playlists description: Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: path description: Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename. in: query schema: type: string example: /home/barkley/playlist.m3u - name: force description: Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed upload media art content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': $ref: "#/components/responses/200" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '500': description: The playlist could not be imported content: text/html: schema: type: string /playQueues: post: operationId: createPlayQueue summary: Create a play queue tags: - Play Queue description: |- Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`. Note: Either `uri` or `playlistID` must be specified parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uri description: The content URI for what we're playing. in: query schema: type: string - name: playlistID description: the ID of the playlist we're playing. in: query schema: type: integer - name: type description: The type of play queue to create in: query required: true schema: type: string enum: - audio - video - photo x-speakeasy-name-override: mediaType - name: key description: The key of the first item to play, defaults to the first in the play queue. in: query schema: type: string - name: shuffle description: Whether to shuffle the playlist, defaults to 0. in: query schema: $ref: "#/components/schemas/BoolInt" - name: repeat description: If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0. in: query schema: $ref: "#/components/schemas/BoolInt" - name: continuous description: Whether to create a continuous play queue (e.g. from an episode), defaults to 0. in: query schema: $ref: "#/components/schemas/BoolInt" - name: extrasPrefixCount description: Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0. in: query schema: type: integer - name: recursive description: Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1. in: query schema: $ref: "#/components/schemas/BoolInt" - name: onDeck description: Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlayQueue" example: identifier: example offset: 1 size: 1 totalSize: 1 playQueueID: 42 playQueueLastAddedItemID: 123 playQueueSelectedItemID: 1 playQueueSelectedItemOffset: 0 playQueueSelectedMetadataItemID: 456 playQueueShuffled: false playQueueSourceURI: library://abc123/item/%2Flibrary%2Fmetadata%2F1 playQueueTotalCount: 50 playQueueVersion: 3 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /playQueues/1: get: operationId: getConversionQueue summary: Get Conversion Queue tags: - Timeline description: Get the conversion/optimization queue. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlayQueue" example: identifier: example offset: 1 size: 1 totalSize: 1 playQueueID: 42 playQueueLastAddedItemID: 123 playQueueSelectedItemID: 1 playQueueSelectedItemOffset: 0 playQueueSelectedMetadataItemID: 456 playQueueShuffled: false playQueueSourceURI: library://abc123/item/%2Flibrary%2Fmetadata%2F1 playQueueTotalCount: 50 playQueueVersion: 3 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /resources: get: operationId: getServerResources summary: Get Server Resources tags: - Plex description: Get Plex server access tokens and server connections servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - name: includeHttps description: Include Https entries in the results in: query schema: allOf: - $ref: "#/components/schemas/BoolInt" - type: integer default: 0 example: 1 - name: includeRelay description: |- Include Relay addresses in the results E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 in: query schema: allOf: - $ref: "#/components/schemas/BoolInt" - type: integer default: 0 example: 1 - name: includeIPv6 description: Include IPv6 entries in the results in: query schema: allOf: - $ref: "#/components/schemas/BoolInt" - type: integer default: 0 example: 1 responses: '200': description: List of Plex Devices. This includes Plex hosted servers and clients content: application/json: schema: type: array items: $ref: "#/components/schemas/PlexDevice" example: - accessToken: string value clientIdentifier: string value connections: - address: string value IPv6: true local: true port: 1 protocol: http relay: true uri: string value dnsRebindingProtection: true home: true httpsRequired: true name: string value natLoopbackSupported: true owned: true presence: true product: string value productVersion: string value provides: string value publicAddress: string value publicAddressMatches: true relay: true synced: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: $ref: "#/components/schemas/UnauthorizedErrorResponse" example: errors: - code: 1001 message: User could not be authenticated status: 401 /security/resources: get: operationId: getSourceConnectionInformation summary: Get Source Connection Information tags: - General description: If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: source description: The source identifier with an included prefix. in: query required: true schema: type: string - name: refresh description: Force refresh in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - $ref: "#/components/schemas/ConnectionInfoWrapper" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: accessToken: string value clientIdentifier: string value Connection: - address: string value local: true port: 1 protocol: string value relay: true uri: string value name: string value '400': description: A query param is missing or the wrong value content: text/html: schema: type: string '403': description: Invalid or no token provided or a transient token could not be created content: text/html: schema: type: string /security/token: post: operationId: createTransientToken summary: Get Transient Tokens tags: - General description: |- This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. Note: This endpoint responds to all HTTP verbs but POST in preferred parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: type description: The value `delegation` is the only supported `type` parameter. in: query required: true schema: type: string enum: - delegation x-speakeasy-name-override: mediaType - name: scope description: The value `all` is the only supported `scope` parameter. in: query required: true schema: type: string enum: - all responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: token: description: The transient token type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 token: example '400': description: A query param is missing or the wrong value content: text/html: schema: type: string '403': description: Invalid or no token provided or a transient token could not be created content: text/html: schema: type: string /server: get: operationId: getUserServer summary: Get User Server Association tags: - Users description: Get server association information for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ConnectionInfo" example: accessToken: string value clientIdentifier: string value Connection: - address: string value local: true port: 1 protocol: string value relay: true uri: string value name: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /server/access_tokens: get: operationId: getServerAccessTokens summary: Get Server Access Tokens tags: - Authentication description: List access tokens for the server. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ServerAccessTokensResponse" example: accessTokens: - expiresAt: string value scope: string value token: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /server/users/features: get: operationId: getServerUserFeatures summary: Get Server User Features tags: - Users description: Get features enabled per shared user for the server. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ServerUserFeaturesResponse" example: features: - type: string value Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value key: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /servers: get: operationId: getLocalServers summary: Get Local Servers tags: - General description: Get a list of local servers. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /services/browse: get: operationId: browseFilesystem summary: Browse Filesystem tags: - General description: Browse filesystem paths accessible to the server. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: includeFiles description: Include files in browse results in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /services/ultrablur/colors: get: operationId: getColors summary: Get UltraBlur Colors tags: - UltraBlur description: Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: url description: Url for image which requires color extraction. Can be relative PMS library path or absolute url. in: query schema: type: string example: /library/metadata/217745/art/1718931408 responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: UltraBlurColors: type: array items: $ref: "#/components/schemas/UltraBlurColors" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 UltraBlurColors: - bottomLeft: string value bottomRight: string value topLeft: string value topRight: string value '404': description: The image url could not be found. content: text/html: schema: type: string '500': description: The server was unable to successfully extract the UltraBlur colors. content: text/html: schema: type: string /services/ultrablur/image: get: operationId: getImage summary: Get UltraBlur Image tags: - UltraBlur description: Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: topLeft description: The base color (hex) for the top left quadrant. in: query schema: type: string example: 3f280a - name: topRight description: The base color (hex) for the top right quadrant. in: query schema: type: string example: 6b4713 - name: bottomRight description: The base color (hex) for the bottom right quadrant. in: query schema: type: string example: 0f2a43 - name: bottomLeft description: The base color (hex) for the bottom left quadrant. in: query schema: type: string example: 1c425d - name: width description: Width in pixels for the image. in: query schema: type: integer minimum: 320 maximum: 3840 example: 1920 - name: height description: Height in pixels for the image. in: query schema: type: integer minimum: 240 maximum: 2160 example: 1080 - name: noise description: Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 responses: '200': description: OK content: image/png: schema: type: string format: binary '400': description: Requested width and height parameters are out of bounds (maximum 3840 x 2160) content: text/html: schema: type: string /shared_servers: post: operationId: shareServer summary: Share Server tags: - Users description: Share a server with a friend or managed user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /statistics/bandwidth: get: operationId: getBandwidthStatistics summary: Get Bandwidth Statistics tags: - General description: Get dashboard bandwidth data. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: timespan description: Dashboard timespan (1-6) in: query schema: type: integer minimum: 1 maximum: 6 - name: accountID description: Filter by account ID in: query schema: type: integer - name: deviceID description: Filter by device ID in: query schema: type: integer - name: lan description: Filter to LAN-only traffic in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /statistics/resources: get: operationId: getResourceStatistics summary: Get Resource Statistics tags: - General description: Get dashboard resource data. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /status/sessions: get: operationId: listSessions summary: List Sessions tags: - Status description: List all current playbacks on this server security: - token: - admin responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: type: array items: allOf: - type: object properties: Player: $ref: "#/components/schemas/Player" Session: $ref: "#/components/schemas/Session" User: $ref: "#/components/schemas/User" - $ref: "#/components/schemas/Metadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /status/sessions/background: get: operationId: getBackgroundTasks summary: Get background tasks tags: - Status description: Get the list of all background tasks security: - token: - admin responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: TranscodeJob: type: array items: $ref: "#/components/schemas/TranscodeJob" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 TranscodeJob: - title: string value type: transcode generatorID: 1 key: string value progress: 1 ratingKey: string value remaining: 1 size: 1 speed: 1 targetTagID: 1 thumb: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /status/sessions/history/all: get: operationId: listPlaybackHistory summary: List Playback History tags: - Status description: |- List all playback history (Admin can see all users, others can only see their own). Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: X-Plex-Container-Start description: Pagination start offset in: query schema: type: integer - name: X-Plex-Container-Size description: Pagination page size in: query schema: type: integer - name: accountID description: The account id to restrict view history in: query schema: type: integer - name: viewedAt description: The time period to restrict history (typically of the form `viewedAt>=12456789`) in: query schema: type: integer - name: librarySectionID description: The library section id to restrict view history in: query schema: type: integer - name: metadataItemID description: The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type. in: query schema: type: integer - name: sort description: The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here. in: query schema: type: array items: type: string example: viewedAt:desc,accountID - name: excludeElements description: Comma-separated list of elements to exclude from the response in: query schema: type: string - name: excludeFields description: Comma-separated list of fields to exclude from the response in: query schema: type: string - name: includeFields description: Whitelist of fields to return in: query schema: type: string - name: includeElements description: Whitelist of elements to include in: query schema: type: string - name: viewedAt> description: Greater-than filter for viewedAt timestamp in: query schema: type: integer - name: viewedAt< description: Less-than filter for viewedAt timestamp in: query schema: type: integer - name: deviceID description: Filter by device ID in: query schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: type: array items: $ref: "#/components/schemas/PlaybackHistoryMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value accountID: 1 deviceID: 1 grandparentRatingKey: string value grandparentTitle: string value historyKey: string value index: 1 key: string value librarySectionID: string value originallyAvailableAt: string value parentIndex: 1 parentTitle: string value ratingKey: string value thumb: string value viewedAt: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /status/sessions/terminate: post: operationId: terminateSession summary: Terminate a session tags: - Status description: Terminate a playback session kicking off the user security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sessionId description: The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash)) in: query required: true schema: type: string example: cdefghijklmnopqrstuvwxyz - name: reason description: The reason to give to the user (typically displayed in the client) in: query schema: type: string example: Stop Playing responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed terminate a session content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '401': description: Server does not have the feature enabled content: text/html: schema: type: string '403': description: sessionId is empty content: text/html: schema: type: string '404': description: Session not found content: text/html: schema: type: string /sync: get: operationId: getSyncStatus summary: Get Sync Status tags: - General description: Get sync status overview. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithStatus" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 status: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sync/items: get: operationId: getSyncItems summary: Get Sync Items tags: - General description: Get sync items list. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sync/queue: get: operationId: getSyncQueue summary: Get Sync Queue tags: - General description: Get sync queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sync/refreshContent: put: operationId: refreshSyncContent summary: Refresh Sync Content tags: - General description: Force PMS to refresh content for known SyncLists. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sync/refreshSynclists: put: operationId: refreshSyncLists summary: Refresh Sync Lists tags: - General description: Force PMS to download new SyncList from plex.tv. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sync/transcodeQueue: get: operationId: getSyncTranscodeQueue summary: Get Sync Transcode Queue tags: - General description: Get sync transcode queue status. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /system/agents: get: operationId: getMetadataAgents summary: Get Metadata Agents tags: - General description: Get a list of available metadata agents. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /system/settings: get: operationId: getSystemSettings summary: Get System Settings tags: - General description: Get system-level settings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /system/updates: get: operationId: checkForSystemUpdates summary: Check for System Updates tags: - General description: Check for available PMS updates. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /transcode/sessions: get: operationId: getTranscodeSessions summary: Get Transcode Sessions tags: - Transcoder description: Get active transcode sessions. security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /updater/apply: put: operationId: applyUpdates summary: Applying updates tags: - Updater description: Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: tonight description: Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately. in: query schema: $ref: "#/components/schemas/BoolInt" - name: skip description: Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: The update process started correctly content: text/html: schema: $ref: "#/components/schemas/SuccessResponse" '400': description: This system cannot install updates content: text/html: schema: type: string '500': description: The update process failed to start content: text/html: schema: type: string /updater/check: put: operationId: checkUpdates summary: Checking for updates tags: - Updater description: Perform an update check and potentially download security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: download description: Indicate that you want to start download any updates found. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated checking for updates content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /updater/status: get: operationId: getUpdatesStatus summary: Querying status of updates tags: - Updater description: Get the status of updating the server security: - token: - admin responses: '200': description: OK content: application/json: schema: allOf: - type: object properties: MediaContainer: type: object properties: autoUpdateVersion: description: The version of the updater (currently `1`) type: integer canInstall: description: Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows) type: boolean checkedAt: description: The last time a check for updates was performed type: integer downloadURL: description: The URL where the update is available type: string Release: type: array items: $ref: "#/components/schemas/Release" status: description: The current error code (`0` means no error) type: integer - $ref: "#/components/schemas/UpdaterStatus" example: MediaContainer: autoUpdateVersion: 1 canInstall: true checkedAt: 1 downloadURL: example Release: - added: string value downloadURL: string value fixed: string value key: string value state: available version: string value status: 1 checkedAt: 1 downloadURL: string value Release: - added: string value downloadURL: string value fixed: string value key: string value state: available version: string value status: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /user: get: operationId: getTokenDetails summary: Get Token Details tags: - Authentication description: Get the User data from the provided X-Plex-Token servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: Logged in user details content: application/json: schema: $ref: "#/components/schemas/UserPlexAccount" example: title: string value adsConsentReminderAt: 1 adsConsentSetAt: 1 authToken: string value backupCodesCreated: false confirmed: false country: string value email: user@example.com emailOnlyAuth: false entitlements: - string value experimentalFeatures: false friendlyName: string value guest: false hasPassword: true home: false homeAdmin: false homeSize: 1 id: 1 joinedAt: 1 mailingListActive: false mailingListStatus: active maxHomeSize: 1 pin: string value profile: autoSelectAudio: true protected: false rememberExpiresAt: 1 restricted: false roles: - string value scrobbleTypes: string value services: - endpoint: https://plex.tv identifier: string value status: online subscription: active: true features: - string value status: Inactive subscriptions: - active: true features: - string value status: Inactive thumb: https://plex.tv twoFactorEnabled: false username: string value uuid: string value '400': description: Bad Request - A parameter was not specified, or was specified incorrectly. content: application/json: schema: $ref: "#/components/schemas/BadRequestErrorResponse" example: errors: - code: 1000 message: X-Plex-Client-Identifier is missing status: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: $ref: "#/components/schemas/UnauthorizedErrorResponse" example: errors: - code: 1001 message: User could not be authenticated status: 401 /user/view_state_sync: put: operationId: updateViewStateSync summary: Update View State Sync tags: - Users description: Enable or disable watch-state sync consent for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /users: get: operationId: getUsers summary: Get list of all connected users tags: - Users description: Get list of all users that are friends and have library access with the provided Plex authentication token servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: Successful response with media container data in JSON content: application/json: schema: type: object properties: MediaContainer: description: Container holding user and server details. type: object properties: friendlyName: description: The friendly name of the Plex instance. type: string example: myPlex identifier: type: string example: com.plexapp.plugins.myplex machineIdentifier: description: Unique Machine identifier of the Plex server. type: string example: 3dff4c4da3b1229a649aa574a9e2b419a684a20e size: description: Number of users in the current response. type: integer example: 30 totalSize: description: Total number of users. type: integer example: 30 User: description: List of users with access to the Plex server. type: array items: type: object properties: title: description: User's display name. type: string example: Plex User allowCameraUpload: allOf: - description: Indicates if the user is allowed to upload from a camera. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE allowChannels: allOf: - description: Indicates if the user has access to channels. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE allowSubtitleAdmin: allOf: - description: Indicates if the user can manage subtitles. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE allowSync: allOf: - description: Indicates if the user is allowed to sync media. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE allowTuners: allOf: - description: Indicates if the user is allowed to use tuners. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE email: description: User's email address. type: string example: zgfuc7krcqfimrmb9lsl5j@protonmail.com filterAll: description: Filters applied for all content. type: - 'null' - string example: '' filterMovies: description: Filters applied for movies. type: - 'null' - string example: '' filterMusic: description: Filters applied for music. type: - 'null' - string example: '' filterPhotos: description: Filters applied for photos. type: - 'null' - string example: '' filterTelevision: description: Filters applied for television. type: string example: '' home: allOf: - description: Indicates if the user is part of a home group. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE id: description: User's unique ID. type: integer example: 22526914 protected: allOf: - description: Indicates whether the account is protected. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE recommendationsPlaylistId: description: ID of the user's recommendation playlist. type: - 'null' - string example: '' restricted: allOf: - description: Indicates if the user has restricted access. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE Server: description: List of servers owned by the user. type: array items: type: object properties: allLibraries: allOf: - description: Indicates if the user has access to all libraries. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE id: description: Unique ID of the server of the connected user type: integer example: 907759180 lastSeenAt: $ref: "#/components/schemas/PlexDateTime" machineIdentifier: description: Machine identifier of the Plex server. type: string example: fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 name: description: Name of the Plex server of the connected user. type: string example: ConnectedUserFlix numLibraries: description: Number of libraries in the server this user has access to. type: integer example: 16 owned: allOf: - description: Indicates if the user owns the server. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE pending: allOf: - description: Indicates if the server is pending approval. - type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - DISABLE - ENABLE serverId: description: ID of the actual Plex server. type: integer example: 9999999 required: - id - serverId - machineIdentifier - name - lastSeenAt - numLibraries - allLibraries - owned - pending thumb: description: URL to the user's avatar image. type: string example: https://plex.tv/users/3346028014e93acd/avatar?c=1731605021 username: description: User's username. type: string example: zgfuc7krcqfimrmb9lsl5j required: - id - title - username - email - thumb - protected - home - allowTuners - allowSync - allowCameraUpload - allowChannels - allowSubtitleAdmin - restricted - Server required: - friendlyName - identifier - machineIdentifier - totalSize - size - User example: MediaContainer: friendlyName: myPlex identifier: com.plexapp.plugins.myplex machineIdentifier: 3dff4c4da3b1229a649aa574a9e2b419a684a20e size: 30 totalSize: 30 '400': description: Bad Request - A parameter was not specified, or was specified incorrectly. content: application/json: schema: $ref: "#/components/schemas/BadRequestErrorResponse" example: errors: - code: 1000 message: X-Plex-Client-Identifier is missing status: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: $ref: "#/components/schemas/UnauthorizedErrorResponse" example: errors: - code: 1001 message: User could not be authenticated status: 401 /users/account: get: operationId: getAccountXML summary: Get Account (XML) tags: - Users description: Get the logged-in user's account details in XML format (legacy v1 endpoint). servers: - url: https://plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/xml: schema: $ref: "#/components/schemas/UserPlexAccount" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /users/account.json: get: operationId: getAccountJSON summary: Get Account (JSON) tags: - Users description: Get the logged-in user's account details in JSON format (legacy v1 endpoint). servers: - url: https://plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/UserPlexAccount" example: title: string value adsConsentReminderAt: 1 adsConsentSetAt: 1 authToken: string value backupCodesCreated: false confirmed: false country: string value email: user@example.com emailOnlyAuth: false entitlements: - string value experimentalFeatures: false friendlyName: string value guest: false hasPassword: true home: false homeAdmin: false homeSize: 1 id: 1 joinedAt: 1 mailingListActive: false mailingListStatus: active maxHomeSize: 1 pin: string value profile: autoSelectAudio: true protected: false rememberExpiresAt: 1 restricted: false roles: - string value scrobbleTypes: string value services: - endpoint: https://plex.tv identifier: string value status: online subscription: active: true features: - string value status: Inactive subscriptions: - active: true features: - string value status: Inactive thumb: https://plex.tv twoFactorEnabled: false username: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /users/password: post: operationId: changePassword summary: Change Password tags: - Authentication description: Change or reset the logged-in user's password. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /users/signin: post: operationId: postUsersSignInData summary: Get User Sign In Data tags: - Authentication description: Sign in user with username and password and return user data with Plex authentication token security: [] servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" requestBody: description: Login credentials content: application/x-www-form-urlencoded: example: login: username@email.com password: password123 rememberMe: true verificationCode: '123456' schema: type: object properties: login: type: string format: email example: username@email.com password: type: string format: password example: password123 rememberMe: type: boolean default: false verificationCode: type: string example: '123456' required: - login - password responses: '201': description: Returns the user account data with a valid auth token content: application/json: schema: allOf: - $ref: "#/components/schemas/UserPlexAccount" - type: object properties: pastSubscriptions: type: array items: title: PastSubscription type: object properties: type: type: string example: plexpass billing: type: object properties: internalPaymentMethod: type: object paymentMethodId: type: - integer - 'null' required: - internalPaymentMethod - paymentMethodId canceled: type: boolean default: false example: false canConvert: type: boolean default: false example: false canDowngrade: type: boolean default: false example: false canReactivate: type: boolean default: false example: false canUpgrade: type: boolean default: false example: false endsAt: oneOf: - $ref: "#/components/schemas/PlexDateTime" - type: 'null' gracePeriod: type: boolean default: false example: false id: type: - string - 'null' mode: type: - string - 'null' onHold: type: boolean default: false example: false renewsAt: oneOf: - $ref: "#/components/schemas/PlexDateTime" - type: 'null' state: type: string enum: - ended example: ended x-speakeasy-unknown-values: allow transfer: type: - string - 'null' required: - id - mode - renewsAt - endsAt - canceled - gracePeriod - onHold - canReactivate - canUpgrade - canDowngrade - canConvert - type - transfer - state - billing trials: type: array items: type: object required: - pastSubscriptions - trials example: title: string value adsConsentReminderAt: 1 adsConsentSetAt: 1 authToken: string value backupCodesCreated: false confirmed: false country: string value email: user@example.com emailOnlyAuth: false entitlements: - string value experimentalFeatures: false friendlyName: string value guest: false hasPassword: true home: false homeAdmin: false homeSize: 1 id: 1 joinedAt: 1 mailingListActive: false mailingListStatus: active maxHomeSize: 1 pin: string value profile: autoSelectAudio: true protected: false rememberExpiresAt: 1 restricted: false roles: - string value scrobbleTypes: string value services: - endpoint: https://plex.tv identifier: string value status: online subscription: active: true features: - string value status: Inactive subscriptions: - active: true features: - string value status: Inactive thumb: https://plex.tv twoFactorEnabled: false username: string value uuid: string value pastSubscriptions: - type: plexpass billing: internalPaymentMethod: {} canceled: false canConvert: false canDowngrade: false canReactivate: false canUpgrade: false endsAt: 1556281940 gracePeriod: false onHold: false renewsAt: 1556281940 state: ended trials: - {} '400': description: Bad Request - A parameter was not specified, or was specified incorrectly. content: application/json: schema: $ref: "#/components/schemas/BadRequestErrorResponse" example: errors: - code: 1000 message: X-Plex-Client-Identifier is missing status: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: $ref: "#/components/schemas/UnauthorizedErrorResponse" example: errors: - code: 1001 message: User could not be authenticated status: 401 /users/signout: delete: operationId: signOut summary: Sign Out tags: - Authentication description: Invalidate the current authentication token. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string /webhooks: get: operationId: getWebhooks summary: Get Webhooks tags: - General description: List configured webhook URLs for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/WebhookPayload" example: Account: title: string value id: 1 thumb: string value event: media.play Metadata: {} owner: true Player: title: string value local: true publicAddress: string value uuid: string value Server: title: string value uuid: string value user: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addWebhook summary: Add Webhook tags: - General description: Add a webhook URL for the logged-in user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/decision: get: operationId: makeDecision summary: Make a decision on media playback tags: - Transcoder description: Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/transcodeType" - $ref: "#/components/parameters/transcodeSessionId" - $ref: "#/components/parameters/advancedSubtitles" - name: platform description: Client platform (some clients send this in addition to headers). in: query schema: type: string - name: audioBoost description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) in: query schema: type: integer minimum: 1 example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: type: integer minimum: 1 maximum: 8 example: 5 - name: autoAdjustQuality description: Indicates the client supports ABR. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: autoAdjustSubtitle description: Indicates if the server should adjust subtitles based on Voice Activity Data. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directPlay description: Indicates the client supports direct playing the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStream description: Indicates the client supports direct streaming the video of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStreamAudio description: Indicates the client supports direct streaming the audio of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: disableResolutionRotation description: Indicates if resolution should be adjusted for orientation. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: hasMDE description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: location description: Network type of the client, can be used to help determine target bitrate. in: query schema: type: string enum: - lan - wan - cellular example: wan - name: mediaBufferSize description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. in: query schema: type: integer example: 102400 - name: mediaIndex description: Index of the media to transcode. -1 or not specified indicates let the server choose. in: query schema: type: integer example: 0 - name: musicBitrate description: Target bitrate for audio only files (in kbps, used to transcode). in: query schema: type: integer minimum: 0 example: 5000 - name: offset description: Offset from the start of the media (in seconds). in: query schema: type: number example: 90.5 - name: partIndex description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode in: query schema: type: integer example: 0 - name: path description: Internal PMS path of the media to transcode. in: query schema: type: string example: /library/metadata/151671 - name: peakBitrate description: Maximum bitrate (in kbps) to use in ABR. in: query schema: type: integer minimum: 0 example: 12000 - name: photoResolution description: Target photo resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - name: protocol description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)" in: query schema: type: string enum: - http - hls - dash example: dash - name: secondsPerSegment description: Number of seconds to include in each transcoded segment in: query schema: type: integer example: 5 - name: subtitleSize description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) in: query schema: type: integer minimum: 1 example: 50 - name: subtitles description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream" in: query schema: type: string enum: - auto - burn - none - sidecar - embedded - segmented - unknown example: burn - name: maxVideoBitrate description: Client-side maximum video bitrate cap in kbps in: query schema: type: integer - name: videoResolution description: Cap resolution string (e.g. 1920x1080) in: query schema: type: string - name: copyts description: Copy timestamps instead of re-encoding them in: query schema: $ref: "#/components/schemas/BoolInt" - name: videoBitrate description: Target video bitrate (in kbps). in: query schema: type: integer minimum: 0 example: 12000 - name: videoQuality description: Target photo quality. in: query schema: type: integer minimum: 0 maximum: 99 example: 50 - name: X-Plex-Client-Identifier description: Unique per client. in: header required: true schema: type: string - name: X-Plex-Client-Profile-Extra description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . in: header schema: type: string example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) - name: X-Plex-Client-Profile-Name description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. in: header schema: type: string example: generic - name: X-Plex-Device description: Device the client is running on in: header schema: type: string example: Windows - name: X-Plex-Model description: Model of the device the client is running on in: header schema: type: string example: standalone - name: X-Plex-Platform description: Client Platform in: header schema: type: string example: Chrome - name: X-Plex-Platform-Version description: Client Platform Version in: header schema: type: string example: 135 - name: X-Plex-Session-Identifier description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) in: header schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDecision" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: example generalDecisionCode: 1 generalDecisionText: example mdeDecisionCode: 1 mdeDecisionText: example Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 transcodeDecisionCode: 1 transcodeDecisionText: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/fallback: post: operationId: triggerFallback summary: Manually trigger a transcoder fallback tags: - Transcoder description: 'Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw' parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/transcodeType" - $ref: "#/components/parameters/transcodeSessionId" responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed manually trigger a transcoder fallback content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '404': description: Session ID does not exist content: text/html: schema: type: string '412': description: Transcode could not fallback content: text/html: schema: type: string '500': description: Transcode failed to fallback content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/subtitles: get: operationId: transcodeSubtitles summary: Transcode subtitles tags: - Transcoder description: Only transcode subtitle streams. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/transcodeType" - $ref: "#/components/parameters/transcodeSessionId" - $ref: "#/components/parameters/advancedSubtitles" - name: platform description: Client platform (some clients send this in addition to headers). in: query schema: type: string - name: audioBoost description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) in: query schema: type: integer minimum: 1 example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: type: integer minimum: 1 maximum: 8 example: 5 - name: autoAdjustQuality description: Indicates the client supports ABR. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: autoAdjustSubtitle description: Indicates if the server should adjust subtitles based on Voice Activity Data. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directPlay description: Indicates the client supports direct playing the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStream description: Indicates the client supports direct streaming the video of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStreamAudio description: Indicates the client supports direct streaming the audio of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: disableResolutionRotation description: Indicates if resolution should be adjusted for orientation. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: hasMDE description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: location description: Network type of the client, can be used to help determine target bitrate. in: query schema: type: string enum: - lan - wan - cellular example: wan - name: mediaBufferSize description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. in: query schema: type: integer example: 102400 - name: mediaIndex description: Index of the media to transcode. -1 or not specified indicates let the server choose. in: query schema: type: integer example: 0 - name: musicBitrate description: Target bitrate for audio only files (in kbps, used to transcode). in: query schema: type: integer minimum: 0 example: 5000 - name: offset description: Offset from the start of the media (in seconds). in: query schema: type: number example: 90.5 - name: partIndex description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode in: query schema: type: integer example: 0 - name: path description: Internal PMS path of the media to transcode. in: query schema: type: string example: /library/metadata/151671 - name: peakBitrate description: Maximum bitrate (in kbps) to use in ABR. in: query schema: type: integer minimum: 0 example: 12000 - name: photoResolution description: Target photo resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - name: protocol description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)" in: query schema: type: string enum: - http - hls - dash example: dash - name: secondsPerSegment description: Number of seconds to include in each transcoded segment in: query schema: type: integer example: 5 - name: subtitleSize description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) in: query schema: type: integer minimum: 1 example: 50 - name: subtitles description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream" in: query schema: type: string enum: - auto - burn - none - sidecar - embedded - segmented - unknown example: burn - name: maxVideoBitrate description: Client-side maximum video bitrate cap in kbps in: query schema: type: integer - name: videoResolution description: Cap resolution string (e.g. 1920x1080) in: query schema: type: string - name: copyts description: Copy timestamps instead of re-encoding them in: query schema: $ref: "#/components/schemas/BoolInt" - name: videoBitrate description: Target video bitrate (in kbps). in: query schema: type: integer minimum: 0 example: 12000 - name: videoQuality description: Target photo quality. in: query schema: type: integer minimum: 0 maximum: 99 example: 50 - name: X-Plex-Client-Identifier description: Unique per client. in: header required: true schema: type: string - name: X-Plex-Client-Profile-Extra description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . in: header schema: type: string example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) - name: X-Plex-Client-Profile-Name description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. in: header schema: type: string example: generic - name: X-Plex-Device description: Device the client is running on in: header schema: type: string example: Windows - name: X-Plex-Model description: Model of the device the client is running on in: header schema: type: string example: standalone - name: X-Plex-Platform description: Client Platform in: header schema: type: string example: Chrome - name: X-Plex-Platform-Version description: Client Platform Version in: header schema: type: string example: 135 - name: X-Plex-Session-Identifier description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) in: header schema: type: string responses: '200': description: Transcoded subtitle file content: text/srt: schema: $ref: "#/components/schemas/BinaryResponse" example: | 1 00:00:02,499 --> 00:00:06,416 [SERENE MUSIC] 2 00:00:11,791 --> 00:00:13,958 [BROOK BABBLES] [FLY BUZZES] 3 00:00:16,166 --> 00:00:17,666 [BIRD TWEETS] 4 00:00:17,666 --> 00:00:18,708 [WINGS FLAP] 5 00:00:19,833 --> 00:00:20,374 [BIRD TWEETS] [WINGS FLAP] 6 00:00:20,374 --> 00:00:21,041 [THUD] 7 00:00:21,374 --> 00:00:22,249 [THUD] 8 00:00:22,249 --> 00:00:23,083 [SQUIRREL LAUGHS] 9 00:00:26,249 --> 00:00:27,541 [SNORES] 10 00:00:29,416 --> 00:00:30,708 [SNORES] 11 00:00:32,749 --> 00:00:34,041 [BUNNY SNORES] 12 00:00:35,916 --> 00:00:37,249 [BUNNY SNORES] '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /activities/{activityId}: delete: operationId: cancelActivity summary: Cancel a running activity tags: - Activities description: Cancel a running activity. Admins can cancel all activities but other users can only cancel their own security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: activityId description: The UUID of the activity to cancel. in: path required: true schema: type: string example: d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e responses: '200': $ref: "#/components/responses/200" description: Successfully deleted cancel a running activity content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Activity is not cancellable content: text/html: schema: type: string '404': description: No activity with the provided id is found content: text/html: schema: type: string /butler/{butlerTask}: delete: operationId: stopTask summary: Stop a single Butler task tags: - Butler description: This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: butlerTask description: The task name in: path required: true schema: type: string enum: - AutomaticUpdates - BackupDatabase - ButlerTaskGenerateAdMarkers - ButlerTaskGenerateCreditsMarkers - ButlerTaskGenerateIntroMarkers - ButlerTaskGenerateVoiceActivity - CleanOldBundles - CleanOldCacheFiles - DeepMediaAnalysis - GarbageCollectBlobs - GarbageCollectLibraryMedia - GenerateBlurHashes - GenerateChapterThumbs - GenerateMediaIndexFiles - LoudnessAnalysis - MusicAnalysis - OptimizeDatabase - RefreshEpgGuides - RefreshLibraries - RefreshLocalMedia - RefreshPeriodicMetadata - UpgradeMediaAnalysis responses: '200': $ref: "#/components/responses/200" description: Successfully deleted stop a single butler task content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '404': description: No task with this name was found or no task with this name was running content: text/html: schema: type: string post: operationId: startTask summary: Start a single Butler task tags: - Butler description: This endpoint will attempt to start a specific Butler task by name. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: butlerTask description: The task name in: path required: true schema: type: string enum: - AutomaticUpdates - BackupDatabase - ButlerTaskGenerateAdMarkers - ButlerTaskGenerateCreditsMarkers - ButlerTaskGenerateIntroMarkers - ButlerTaskGenerateVoiceActivity - CleanOldBundles - CleanOldCacheFiles - DeepMediaAnalysis - GarbageCollectBlobs - GarbageCollectLibraryMedia - GenerateBlurHashes - GenerateChapterThumbs - GenerateMediaIndexFiles - LoudnessAnalysis - MusicAnalysis - OptimizeDatabase - RefreshEpgGuides - RefreshLibraries - RefreshLocalMedia - RefreshPeriodicMetadata - UpgradeMediaAnalysis responses: '200': description: Task started content: text/html: schema: $ref: "#/components/schemas/SuccessResponse" '202': description: Task is already running content: text/html: schema: type: string '404': description: No task with this name was found content: text/html: schema: type: string /downloadQueue/{queueId}: get: operationId: getDownloadQueue summary: Get a download queue tags: - Download Queue description: |- Available: 0.2.0 Get a download queue by its id parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: DownloadQueue: type: array items: $ref: "#/components/schemas/DownloadQueue" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 DownloadQueue: - id: 1 itemCount: 1 status: deciding '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /downloadQueue/{queueId}/add: post: operationId: addDownloadQueueItems summary: Add to download queue tags: - Download Queue description: |- Available: 0.2.0 Add items to the download queue parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/advancedSubtitles" - $ref: "#/components/parameters/audioBoost" - $ref: "#/components/parameters/audioChannelCount" - $ref: "#/components/parameters/autoAdjustQuality" - $ref: "#/components/parameters/autoAdjustSubtitle" - $ref: "#/components/parameters/directPlay" - $ref: "#/components/parameters/directStream" - $ref: "#/components/parameters/directStreamAudio" - $ref: "#/components/parameters/disableResolutionRotation" - $ref: "#/components/parameters/hasMDE" - $ref: "#/components/parameters/location" - $ref: "#/components/parameters/mediaBufferSize" - $ref: "#/components/parameters/mediaIndex" - $ref: "#/components/parameters/musicBitrate" - $ref: "#/components/parameters/offset" - $ref: "#/components/parameters/partIndex" - $ref: "#/components/parameters/path" - $ref: "#/components/parameters/peakBitrate" - $ref: "#/components/parameters/photoResolution" - $ref: "#/components/parameters/protocol" - $ref: "#/components/parameters/secondsPerSegment" - $ref: "#/components/parameters/subtitleSize" - $ref: "#/components/parameters/subtitles" - $ref: "#/components/parameters/videoBitrate" - $ref: "#/components/parameters/videoQuality" - $ref: "#/components/parameters/videoResolution" - name: queueId description: The queue id in: path required: true schema: type: integer - name: keys description: Keys to add in: query required: true explode: false schema: type: array items: type: string example: - /library/metadata/3 - /library/metadata/6 responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: AddedQueueItems: type: array items: $ref: "#/components/schemas/AddedQueueItem" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 AddedQueueItems: - id: 1 key: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /downloadQueue/{queueId}/items: get: operationId: listDownloadQueueItems summary: Get download queue items tags: - Download Queue description: |- Available: 0.2.0 Get items from a download queue parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: DownloadQueueItem: type: array items: $ref: "#/components/schemas/DownloadQueueItem" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 DownloadQueueItem: - DecisionResult: availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: string value generalDecisionCode: 1 generalDecisionText: string value mdeDecisionCode: 1 mdeDecisionText: string value transcodeDecisionCode: 1 transcodeDecisionText: string value error: string value id: 1 key: string value queueId: 1 status: deciding transcode: {} TranscodeSession: complete: true context: string value duration: 1 error: true key: string value progress: 1 protocol: string value size: 1 sourceAudioCodec: string value sourceVideoCodec: string value speed: 1 throttled: true transcodeHwFullPipeline: true transcodeHwRequested: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /downloads/{channel}.json: get: operationId: getPlexDownloads summary: Get Plex Downloads tags: - General description: Get available Plex update downloads for a specific channel (e.g. `plexpass`, `public`). servers: - url: https://plex.tv parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: channel description: The channel identifier in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/PlexDownloadsResponse" example: MediaContainer: Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value size: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /home/users/{id}/switch: post: operationId: switchHomeUser summary: Switch Home User tags: - Authentication description: Switch to a Plex Home user and return a new auth token. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /home/users/{userId}: delete: operationId: deleteHomeUser summary: Delete Home User tags: - Users description: Remove a Plex Home user. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: userId description: The unique identifier of the user in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: updateHomeUser summary: Update Home User tags: - Users description: Update a Plex Home user. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: userId description: The unique identifier of the user in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /home/users/restricted/{userId}: put: operationId: updateRestrictedUser summary: Update Restricted User tags: - Users description: Update restricted (managed) home user settings. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: userId description: The unique identifier of the user in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/metadata/{metadataId}: get: operationId: getMetadataHubs summary: Get hubs for section by metadata item tags: - Hubs description: Get the hubs for a section by metadata item. Currently only for music sections parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - name: onlyTransient description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/responses-200" description: Successfully retrieved get hubs for section by metadata item content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: No metadata with that id or permission is denied content: text/html: schema: type: string /hubs/metadata/{metadataId}/postplay: get: operationId: getPostplayHubs summary: Get postplay hubs tags: - Hubs description: Get the hubs for a metadata to be displayed in post play parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - name: onlyTransient description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/responses-200" description: Successfully retrieved get postplay hubs content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: No metadata with that id or permission is denied content: text/html: schema: type: string /hubs/metadata/{metadataId}/related: get: operationId: getRelatedHubs summary: Get related hubs tags: - Hubs description: Get the hubs for a metadata related to the provided metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - name: onlyTransient description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/responses-200" description: Successfully retrieved get related hubs content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: No metadata with that id or permission is denied content: text/html: schema: type: string /hubs/sections/{sectionId}: get: operationId: getSectionHubs summary: Get section hubs tags: - Hubs description: Get the hubs for a single section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: sectionId description: The section ID for the hubs to fetch in: path required: true schema: type: integer - name: onlyTransient description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': description: No section with that id or permission is denied content: text/html: schema: type: string /hubs/sections/{sectionId}/manage: delete: operationId: resetSectionDefaults summary: Reset hubs to defaults tags: - Hubs description: Reset hubs for this section to defaults and delete custom hubs security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to reorder in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted reset hubs to defaults content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: Section id was not found content: text/html: schema: type: string get: operationId: listHubs summary: Get hubs tags: - Hubs description: Get the list of hubs including both built-in and custom security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to reorder in: path required: true schema: type: integer - name: metadataItemId description: Restrict hubs to ones relevant to the provided metadata item in: query schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Hub: type: array items: $ref: "#/components/schemas/ManagedHub" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value homeVisibility: all identifier: string value promotedToOwnHome: true promotedToRecommended: true promotedToSharedHome: true recommendationsVisibility: all '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: Section id was not found content: text/html: schema: type: string post: operationId: createCustomHub summary: Create a custom hub tags: - Hubs description: Create a custom hub based on a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to reorder in: path required: true schema: type: integer - name: metadataItemId description: The metadata item on which to base this hub. This must currently be a collection in: query required: true schema: type: integer - name: promotedToRecommended description: Whether this hub should be displayed in recommended in: query schema: $ref: "#/components/schemas/BoolInt" - name: promotedToOwnHome description: Whether this hub should be displayed in admin's home in: query schema: $ref: "#/components/schemas/BoolInt" - name: promotedToSharedHome description: Whether this hub should be displayed in shared user's home in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed create a custom hub content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: A hub could not be created with this metadata item content: text/html: schema: type: string '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: Section id or metadata item was not found content: text/html: schema: type: string /hubs/sections/{sectionId}/manage/move: put: operationId: moveHub summary: Move Hub tags: - Hubs description: Changed the ordering of a hub among others hubs security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to reorder in: path required: true schema: type: integer - name: identifier description: The identifier of the hub to move in: query required: true schema: type: string - name: after description: The identifier of the hub to order this hub after (or empty/missing to put this hub first) in: query schema: type: string responses: '200': $ref: "#/components/responses/get-responses-200" description: Successfully updated move hub content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: Section id was not found content: text/html: schema: type: string /library/collections/{collectionId}/items: get: operationId: getCollectionItems summary: Get items in a collection tags: - Content description: Get items in a collection. Note if this collection contains more than 100 items, paging must be used. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: collectionId description: The collection id in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '404': description: Collection not found content: text/html: schema: type: string put: operationId: addCollectionItems summary: Add items to a collection tags: - Library Collections description: Add items to a collection by uri security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: collectionId description: The collection id in: path required: true schema: type: integer - name: uri description: The URI describing the items to add to this collection in: query required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '404': description: Collection not found content: text/html: schema: type: string /library/metadata/{id}/arts: post: operationId: uploadArt summary: Upload media art Art tags: - Library description: Upload custom background art for a metadata item. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer requestBody: content: multipart/form-data: example: file: example schema: type: object properties: file: type: string format: binary responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/children: get: operationId: getMetadataChildren summary: Get Metadata Children tags: - Library description: Get children of a show, season, artist, or album. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/computePath: get: operationId: computeSonicPath summary: Compute Sonic Path tags: - Library description: Compute a sonic adventure path from a starting track. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/grandchildren: get: operationId: getMetadataGrandchildren summary: Get Metadata Grandchildren tags: - Library description: Get grandchildren (e.g. episodes under a show). security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/grandparent: get: operationId: getMetadataGrandparent summary: Get Metadata Grandparent tags: - Library description: Get grandparent metadata shortcut. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/nearest: get: operationId: getNearestMetadata summary: Get Nearest Metadata tags: - Library description: Get sonically similar items for a music track. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer - name: excludeParentID description: The unique identifier of the excludeparent in: query required: false schema: type: integer - name: excludeGrandparentID description: The unique identifier of the excludegrandparent in: query required: false schema: type: integer - name: limit description: Maximum number of items to return in: query required: false schema: type: integer - name: maxDistance description: The maxDistance in: query required: false schema: type: number responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/onDeck: get: operationId: getMetadataOnDeck summary: Get Metadata On Deck tags: - Library description: Get On Deck status for a show or season. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/parent: get: operationId: getMetadataParent summary: Get Metadata Parent tags: - Library description: Get parent metadata shortcut. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/posters: post: operationId: uploadPoster summary: Upload media art Poster tags: - Library description: Upload a custom poster image for a metadata item. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer requestBody: content: multipart/form-data: example: file: example schema: type: object properties: file: type: string format: binary responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{id}/reviews: get: operationId: getMetadataReviews summary: Get Metadata Reviews tags: - Library description: Get user reviews for a metadata item. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: id description: The unique identifier of the item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}: delete: operationId: deleteMetadataItem summary: Delete a metadata item tags: - Library description: Delete a single metadata item from the library, deleting media as well security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: proxy description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Media items could not be deleted content: text/html: schema: type: string get: operationId: getMetadataItem summary: Get a metadata item tags: - Content description: Get one or more metadata items. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: array items: type: string - name: asyncCheckFiles description: Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: asyncRefreshLocalMediaAgent description: Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: asyncRefreshAnalysis description: Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: checkFiles description: Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: skipRefresh description: Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: checkFileAvailability description: Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: asyncAugmentMetadata description: Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false. in: query schema: $ref: "#/components/schemas/BoolInt" - name: augmentCount description: Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified. in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeMarkers description: Include intro/credits markers in the response in: query schema: type: boolean - name: includeGuids description: Include external GUIDs (e.g. TMDB, TVDB) in the response in: query schema: type: boolean - name: includeChapters description: Include chapter data in the response in: query schema: type: boolean - name: includeExternalMedia description: Include external/online media in the response in: query schema: type: boolean - name: includeExtras description: Include trailers, behind-the-scenes, and other extras in: query schema: type: boolean - name: includeRelated description: Include related items in the response in: query schema: type: boolean - name: includeOnDeck description: Include On Deck status in the response in: query schema: type: boolean - name: includePopularLeaves description: Include popular episodes in the response in: query schema: type: boolean - name: includeReviews description: Include user reviews in the response in: query schema: type: boolean - name: includeStations description: Include radio station data in the response in: query schema: type: boolean - name: excludeElements description: Comma-separated list of elements to exclude from the response in: query schema: type: string - name: excludeFields description: Comma-separated list of fields to exclude from the response in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: editMetadataItem summary: Edit a metadata item tags: - Library description: Edit metadata items setting fields security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: array items: type: string - name: args description: The new values for the metadata item in: query schema: type: object responses: '200': $ref: "#/components/responses/200" description: Successfully updated edit a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Media items could not be deleted content: text/html: schema: type: string /library/metadata/{ids}/addetect: put: operationId: detectAds summary: Ad-detect an item tags: - Library description: Start the detection of ads in a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated ad-detect an item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/allLeaves: get: operationId: getAllItemLeaves summary: Get the leaves of an item tags: - Library description: Get the leaves for a metadata item such as the episodes in a show parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/analyze: put: operationId: analyzeMetadata summary: Analyze an item tags: - Library description: Start the analysis of a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: thumbOffset description: Set the offset to be used for thumbnails in: query required: false schema: type: number - name: artOffset description: Set the offset to be used for artwork in: query required: false schema: type: number responses: '200': $ref: "#/components/responses/200" description: Successfully updated analyze an item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/chapterThumbs: put: operationId: generateThumbs summary: Generate thumbs of chapters for an item tags: - Library description: Start the chapter thumb generation for an item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: force description: Force the operation even if conditions are not met in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated generate thumbs of chapters for an item content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/credits: put: operationId: detectCredits summary: Credit detect a metadata item tags: - Library description: Start credit detection on a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: force description: Force the operation even if conditions are not met in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: manual description: Whether to perform the operation manually in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated credit detect a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/extras: get: operationId: getExtras summary: Get an item's extras tags: - Library description: Get the extras for a metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: addExtras summary: Add to an item's extras tags: - Library description: Add an extra to a metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/title" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: extraType description: The metadata type of the extra in: query schema: type: integer - name: url description: The URL of the extra in: query required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed add to an item's extras content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '404': description: Either the metadata item is not present or the extra could not be added content: text/html: schema: type: string /library/metadata/{ids}/file: get: operationId: getFile summary: Get a file from a metadata or media bundle tags: - Library description: Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: url description: The bundle url, typically starting with `metadata://` or `media://` in: query schema: type: string responses: '200': description: OK content: audio/mpeg3: schema: type: string format: binary image/jpeg: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/index: put: operationId: startBifGeneration summary: Start BIF generation of an item tags: - Library description: Start the indexing (BIF generation) of an item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: force description: Force the operation even if conditions are not met in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated start bif generation of an item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/intro: put: operationId: detectIntros summary: Intro detect an item tags: - Library description: Start the detection of intros in a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: force description: Indicate whether detection should be re-run in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: threshold description: The threshold for determining if content is an intro or not in: query required: false schema: type: number responses: '200': $ref: "#/components/responses/200" description: Successfully updated intro detect an item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/marker: post: operationId: createMarker summary: Create a marker tags: - Library description: Create a marker for this user on the metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: type description: The type of marker to edit/create in: query required: true schema: type: integer x-speakeasy-name-override: mediaType - name: startTimeOffset description: The start time of the marker in: query required: true schema: type: integer - name: endTimeOffset description: The end time of the marker in: query schema: type: integer - name: attributes description: The attributes to assign to this marker in: query style: deepObject schema: type: object example: title: My favorite spot responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - $ref: "#/components/schemas/Marker" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 title: string value type: intro color: string value endTimeOffset: 1 id: 1 startTimeOffset: 1 '400': description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset` content: text/html: schema: type: string /library/metadata/{ids}/match: put: operationId: matchItem summary: Match a metadata item tags: - Library description: Match a metadata item to a guid security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: guid description: The guid in: query schema: type: string - name: name description: The name in: query required: false schema: type: string - name: year description: The year to filter by in: query required: false schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully updated match a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/matches: put: operationId: listMatches summary: Get metadata matches for an item tags: - Library description: Get the list of metadata matches for a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: title description: The title to filter by in: query schema: type: string - name: parentTitle description: The parentTitle in: query required: false schema: type: string - name: agent description: The identifier of the metadata agent to use in: query required: false schema: type: string - name: language description: The language code to use in: query required: false schema: type: string - name: year description: The year to filter by in: query required: false schema: type: integer - name: manual description: Whether to perform the operation manually in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/merge: put: operationId: mergeItems summary: Merge a metadata item tags: - Library description: Merge a metadata item with other items security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: ids description: Comma-separated list of item identifiers in: query explode: false schema: type: array items: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated merge a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/prefs: put: operationId: setItemPreferences summary: Set metadata preferences tags: - Library description: Set the preferences on a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: args description: The args in: query schema: type: object responses: '200': $ref: "#/components/responses/200" description: Successfully updated set metadata preferences content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/refresh: put: operationId: refreshItemsMetadata summary: Refresh a metadata item tags: - Library description: Refresh a metadata item from the agent security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: agent description: The identifier of the metadata agent to use in: query required: false schema: type: string - name: markUpdated description: The markUpdated in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: skipRefresh description: Skip synchronous refresh in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated refresh a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/related: get: operationId: getRelatedItems summary: Get related items tags: - Library description: Get a hub of related items to a metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/similar: get: operationId: listSimilar summary: Get similar items tags: - Library description: Get a list of similar items to a metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/split: put: operationId: splitItem summary: Split a metadata item tags: - Library description: Split a metadata item into multiple items security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated split a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/subtitles: get: operationId: getSubtitles summary: Get subtitles tags: - Library description: Add a subtitle to a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: title description: The title to filter by in: query required: false schema: type: string - name: language description: The language code to use in: query required: false schema: type: string - name: mediaItemID description: The unique identifier of the mediaitem in: query required: false schema: type: integer - name: url description: The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body in: query required: false schema: type: string - name: format description: The format in: query required: false schema: type: string - name: forced description: The forced in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: hearingImpaired description: The hearingImpaired in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully retrieved get subtitles content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/tree: get: operationId: getItemTree summary: Get metadata items as a tree tags: - Library description: Get a tree of metadata items, such as the seasons/episodes of a show parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithNestedMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MetadataItem: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/unmatch: put: operationId: unmatch summary: Unmatch a metadata item tags: - Library description: Unmatch a metadata item to info fetched from the agent security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated unmatch a metadata item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/users/top: get: operationId: listTopUsers summary: Get metadata top users tags: - Library description: Get the list of users which have played this item starting with the most security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Account: type: array items: $ref: "#/components/schemas/TopUserAccount" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Account: - globalViewCount: 1 id: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/voiceActivity: put: operationId: detectVoiceActivity summary: Detect voice activity tags: - Library description: Start the detection of voice in a metadata item security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: force description: Indicate whether detection should be re-run in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: manual description: Indicate whether detection is manually run in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated detect voice activity content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/augmentations/{augmentationId}: get: operationId: getAugmentationStatus summary: Get augmentation status tags: - Library description: Get augmentation status and potentially wait for completion parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: augmentationId description: The id of the augmentation in: path required: true schema: type: string - name: wait description: Wait for augmentation completion before returning in: query schema: $ref: "#/components/schemas/BoolInt" responses: '204': $ref: "#/components/responses/204" description: Successfully completed get augmentation status '401': description: This augmentation is not owned by the requesting user content: text/html: schema: type: string '404': description: No augmentation found content: text/html: schema: type: string /library/parts/{partId}: put: operationId: setStreamSelection summary: Set stream selection tags: - Library description: Set which streams (audio/subtitle) are selected by this user parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: partId description: The id of the part to select streams on in: path required: true schema: type: integer - name: audioStreamID description: The id of the audio stream to select in this part in: query schema: type: integer - name: subtitleStreamID description: The id of the subtitle stream to select in this part. Specify 0 to select no subtitle in: query schema: type: integer - name: allParts description: Perform the same for all parts of this media selecting similar streams in each in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated set stream selection content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: One of the audio or subtitle streams does not belong to this part content: text/html: schema: type: string /library/people/{personId}: get: operationId: getPerson summary: Get person details tags: - Library description: Get details for a single actor. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: personId description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithTags" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /library/people/{personId}/media: get: operationId: listPersonMedia summary: Get media for a person tags: - Library description: Get all the media for a single actor. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: personId description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /library/sections/{sectionId}: delete: operationId: deleteLibrarySection summary: Delete a library section tags: - Library description: Delete a library section by id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section identifier in: path required: true schema: type: string - name: async description: If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a library section content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: getLibraryDetails summary: Get a library section by id tags: - Library description: 'Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system.' parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section identifier in: path required: true schema: type: string - name: includeDetails description: Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: type: object properties: allowSync: oneOf: - type: boolean - type: string enum: - '0' - '1' art: type: string content: description: |- The flavors of directory found here: - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. - Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. type: string Directory: type: array items: $ref: "#/components/schemas/Metadata" identifier: type: string librarySectionID: type: integer mediaTagPrefix: type: string mediaTagVersion: type: integer size: type: integer sortAsc: type: boolean thumb: type: string title1: type: string viewGroup: type: string viewMode: type: integer example: MediaContainer: art: example content: example identifier: example librarySectionID: 1 mediaTagPrefix: example mediaTagVersion: 1 size: 1 sortAsc: true thumb: example title1: example viewGroup: example viewMode: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: editSection summary: Edit a library section tags: - Library description: Edit a library section by id setting parameters security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section identifier in: path required: true schema: type: string - name: name description: The name of the new section in: query schema: type: string - name: scanner description: The scanner this section should use in: query schema: type: string - name: agent description: The agent this section should use for metadata in: query required: true schema: type: string - name: metadataAgentProviderGroupId description: The agent group id for this section in: query schema: type: string - name: language description: The language of this section in: query schema: type: string - name: locations description: The locations on disk to add to this section in: query schema: type: array items: type: string example: - O:\fatboy\Media\Ripped\Music - O:\fatboy\Media\My Music - name: prefs description: The preferences for this section in: query style: deepObject schema: type: object example: collectionMode: 2 hidden: 0 responses: '200': $ref: "#/components/responses/200" description: Successfully updated edit a library section content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Section cannot be created due to bad parameters in request content: text/html: schema: type: string /library/sections/{sectionId}/agents: get: operationId: getSectionAgents summary: Get Section Agents tags: - Library description: Get available metadata agents for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/albums: get: operationId: getAlbums summary: Set section albums tags: - Content description: Get all albums in a music section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: content: secondary allowSync: false art: /:/resources/artist-fanart.jpg identifier: com.plexapp.plugins.library mediaTagPrefix: /system/bundle/media/flags/ mediaTagVersion: 1680272530 Metadata: - addedAt: 1681152176 allowSync: true art: /library/metadata/251/art/1716801576 deletedAt: 1682628386 Genre: - tag: Comedy/Spoken guid: plex://album/5d07c894403c640290c0e196 index: 1 key: /library/metadata/265/children leafCount: 12 librarySectionID: 3 librarySectionTitle: Music librarySectionUUID: d7fd8c81-a345-4e68-8113-92f23cb47e70 loudnessAnalysisVersion: '2' originallyAvailableAt: "2014-07-15T00:00:00.000Z" parentGuid: plex://artist/5d07bbfc403c6402904a60e7 parentKey: /library/metadata/251 parentRatingKey: '251' parentThumb: /library/metadata/251/thumb/1716801576 parentTitle: “Weird Al” Yankovic rating: 8 ratingKey: '265' studio: RCA summary: Already accepted as a bona fide talent in the world of parody -- his musicianship, comedic timing, his pop-culture reference awareness, and his great wordplay are all well-documented -- the only thing that matters when it comes to "Weird Al" Yankovic albums is how inspired the king of novelty songs sounds on any given LP. On his 14th studio album, Mandatory Fun, the inspiration meter goes well into the red, something heard instantly as Iggy Azalea's electro-rap "Fancy" does a complete 180 thematically on the opening "Handy," the song now heading toward the local home improvement store where the craftsmen vogue in their orange vests and blow sweet come-ons like "I'll bring you up to code" and "My socket wrenches are second to none." Pharrell's "Happy" becomes "Tacky" and Al's amazing ability to follow an everyday poke ("Wear my Ed Hardy shirt with fluorescent orange pants") with something brainy and reserved ("Got my new résumé, it's printed in Comic Sans") surprises once more, but for end-to-end "wows," it's his brilliant redo of Robin Thicke's "Blurred Lines," now the smug and twerking "Word Crimes," which gives copy editors, English professors, and grammar nerds a reason to hit the dancefloor ("And listen up when I tell you this/I hope you never use quotation marks for emphasis!"). Hardcore and hilarious musical moments start to happen when Imagine Dragons' "Radioactive" becomes "Inactive," a singalong anthem for the sluggish and the slovenly ("Near comatose, no exercise/Don't tag my toe, I'm still alive") with a dubstep-rock bassline that sounds like Galactus burping. Better still is the every-Al-album pop-polka medley, this time called "Now That's What I Call Polka!" which polkas-up Daft Punk ("Get Lucky"), PSY ("Gangnam Style"), and Miley Cyrus ("Wrecking Ball"), and with more Spike Jones-styled sound effects than usual. As for the originals this time out, the "you suck!"-minded "Sports Song" will be unavoidable under Friday night lights once a teen gets hold of it, while the ranting and wonderfully weird "First World Problems" sounds more like the Pixies than anything the Pixies did in 2014. Wonders never cease on Mandatory Fun, and neither do the laughs. ~ David Jeffries thumb: /library/metadata/265/thumb/1715112705 title: Mandatory Fun type: album updatedAt: 1715112705 year: 2014 mixedParents: true nocache: true size: 12 thumb: /:/resources/artist.png title1: Music title2: By Album viewGroup: album '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/all: get: operationId: listContent summary: Get items in the section tags: - Content description: |- Get the items in a section, potentially filtering them. When `includeCollections=1` is passed, the response may also contain `Collection` items. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/X-Plex-Container-Start" - $ref: "#/components/parameters/X-Plex-Container-Size" - $ref: "#/components/parameters/mediaQuery" - name: sectionId description: The id of the section in: path required: true schema: type: integer - name: type description: Filter by metadata type (1=movie, 2=show, 3=season, 4=episode, 8=artist, 9=album, 10=track) in: query schema: type: integer x-speakeasy-name-override: mediaType - name: sort description: Sort key and direction (e.g. addedAt:desc, titleSort) in: query schema: type: string - name: includeMeta description: Adds the Meta object to the response in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeGuids description: Adds the Guid object to the response in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeCollections description: Include collection items in results in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeExternalMedia description: Include external or online media in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeAdvanced description: Include advanced settings in: query schema: $ref: "#/components/schemas/BoolInt" - name: checkFiles description: Verify file existence in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeRelated description: Include related items in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeExtras description: Include trailers, behind-the-scenes, etc. in: query schema: $ref: "#/components/schemas/BoolInt" - name: includePopularLeaves description: Include popular episodes in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeConcerts description: Include concert items in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeOnDeck description: Include On Deck status in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeChapters description: Include chapter markers in: query schema: $ref: "#/components/schemas/BoolInt" - name: includePreferences description: Include user preferences in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeBandwidths description: Include bandwidth info in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeLoudnessRamps description: Include loudness ramp data in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeStations description: Include radio station data in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeExternalIds description: Include external GUIDs in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeReviews description: Include user reviews in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeCredits description: Include full credits in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeArt description: Force inclusion of artwork fields in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeThumb description: Force inclusion of thumbnail fields in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeBanner description: Force inclusion of banner fields in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeTheme description: Force inclusion of theme fields in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeFields description: Whitelist of fields to return in: query schema: type: string - name: excludeFields description: Blacklist of fields to omit in: query schema: type: string - name: asyncAugmentMetadata description: Async metadata augmentation in: query schema: $ref: "#/components/schemas/BoolInt" - name: asyncRefreshLocalMediaAgent description: Async local media agent refresh in: query schema: $ref: "#/components/schemas/BoolInt" - name: nocache description: Bypass cache in: query schema: $ref: "#/components/schemas/BoolInt" - name: skipRefresh description: Skip synchronous refresh in: query schema: $ref: "#/components/schemas/BoolInt" - name: excludeElements description: Comma-separated list of elements to exclude from the response in: query schema: type: string - name: filters description: General filtering expression. in: query schema: type: string - name: unwatched description: Filter to unwatched only (1 = true). in: query schema: $ref: "#/components/schemas/BoolInt" - name: genre description: Filter by genre. in: query schema: type: string - name: studio description: Filter by studio. in: query schema: type: string - name: contentRating description: Filter by content rating. in: query schema: type: string - name: resolution description: Filter by resolution. in: query schema: type: string - name: year description: Filter by year. in: query schema: type: integer - name: firstCharacter description: Filter by first character of title. in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: updateItems summary: Set the fields of the filtered items tags: - Library description: |- This endpoint takes an large possible set of values. Here are some examples. - **Parameters, extra documentation** - artist.title.value - When used with track, both artist.title.value and album.title.value need to be specified - title.value usage - Summary - Tracks always rename and never merge - Albums and Artists - if single item and item without title does not exist, it is renamed. - if single item and item with title does exist they are merged. - if multiple they are always merged. - Tracks - Works as expected will update the track's title - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName` - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName` - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName` - Albums - Functionality changes depending on the existence of an album with the same title - Album exists - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2` - Album with id 42 is merged into album titled "Album 2" - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album` - All albums are merged into the existing album titled "Moo Album" - Album does not exist - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle` - Album with id 42 has title modified to "NewAlbumTitle" - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle` - All albums are merged into a new album with title="NewAlbumTitle" - Artists - Functionaly changes depending on the existence of an artist with the same title. - Artist exists - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2` - Artist with id 42 is merged into existing artist titled "Artist 2" - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3` - All artists are merged into the existing artist titled "Artist 3" - Artist does not exist - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle` - Artist with id 42 has title modified to "NewArtistTitle" - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle` - All artists are merged into a new artist with title="NewArtistTitle" - **Notes** - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax. - Escaped square brackets are allowed, but don't render well parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: string - name: type description: The media type to filter by in: query schema: type: string x-speakeasy-name-override: mediaType - name: filters description: The filters to apply to determine which items should be modified in: query schema: type: string - name: field.value description: Set the specified field to a new value in: query schema: type: string - name: field.locked description: Set the specified field to locked (or unlocked if set to 0) in: query schema: $ref: "#/components/schemas/BoolInt" - name: title.value description: This field is treated specially by albums or artists and may be used for implicit reparenting. in: query schema: type: string - name: artist.title.value description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks in: query schema: type: string - name: artist.title.id description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks in: query schema: type: string - name: album.title.value description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id in: query schema: type: string - name: album.title.id description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id in: query schema: type: string - name: tagtype[idx].tag.tag description: Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together in: query schema: type: string - name: tagtype[idx].tagging.object description: Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set. in: query schema: type: string - name: tagtype[].tag.tag- description: Remove comma separated tags from the set of items in: query schema: type: string - name: tagtype[].tag description: Remove associations of this type (e.g. genre) from the set of items in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated set the fields of the filtered items content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: The set of parameters are inconsistent or invalid values content: text/html: schema: type: string '404': description: A required item could not be found content: text/html: schema: type: string '409': description: Rename of a collection to a name that's already taken content: text/html: schema: type: string /library/sections/{sectionId}/allLeaves: get: operationId: getAllLeaves summary: Set section leaves tags: - Content description: Get all leaves in a section (such as episodes in a show section) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: content: secondary allowSync: false art: /:/resources/show-fanart.jpg identifier: com.plexapp.plugins.library mediaTagPrefix: /system/bundle/media/flags/ mediaTagVersion: 1680272530 Metadata: - addedAt: 1348327790 art: /library/metadata/148/art/1715112830 audienceRating: 7.7 audienceRatingImage: themoviedb://image.rating chapterSource: media contentRating: TV-PG Director: - tag: Stephen Furst duration: 2625089 grandparentArt: /library/metadata/148/art/1715112830 grandparentGuid: plex://show/5d9c087202391c001f58a287 grandparentKey: /library/metadata/148 grandparentRatingKey: '148' grandparentSlug: babylon-5 grandparentTheme: /library/metadata/148/theme/1715112830 grandparentThumb: /library/metadata/148/thumb/1715112830 grandparentTitle: Babylon 5 guid: plex://episode/5d9c1359e264b7001fcb529c index: 8 key: /library/metadata/150 lastViewedAt: 1612468663 Media: - aspectRatio: 1.78 audioChannels: 6 audioCodec: ac3 bitrate: 5741 container: mkv duration: 2625089 height: 480 id: 376 Part: - container: mkv duration: 2625089 file: /Volumes/Media/TV Shows/Babylon 5/Season 4/Babylon 5 S04E08 The Illusion of Truth.mkv id: 872 key: /library/parts/872/1348327790/file.mkv size: 1883816967 videoProfile: main videoCodec: mpeg2video videoFrameRate: NTSC videoProfile: main videoResolution: '480' width: 720 originallyAvailableAt: "1997-02-17T00:00:00.000Z" parentGuid: plex://season/602e691b66dfdb002c0a5034 parentIndex: 4 parentKey: /library/metadata/149 parentRatingKey: '149' parentThumb: /library/metadata/149/thumb/1681152133 parentTitle: Season 4 ratingKey: '150' Role: - tag: Hank Delgado - tag: Diana Morgan - tag: Jeff Griggs summary: A team of ISN reporters arrives at the station wanting to do a story about Babylon 5. Sheridan refuses at first, but finally agrees on the theory that at least a small part of their side of the conflict will be shown. thumb: /library/metadata/150/thumb/1681283788 title: The Illusion of Truth titleSort: Illusion of Truth type: episode updatedAt: 1681283788 viewCount: 1 Writer: - tag: J. Michael Straczynski year: 1997 nocache: true size: 41 thumb: /:/resources/show.png title1: TV Shows viewGroup: show '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/analyze: put: operationId: startAnalysis summary: Analyze a section tags: - Library description: Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully updated analyze a section content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/artists: get: operationId: getSectionArtists summary: Get Section Artists tags: - Library description: Get artists for a music library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/arts: get: operationId: getArts summary: Set section artwork tags: - Content description: Get artwork for a library section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithArtwork" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/autocomplete: get: operationId: autocomplete summary: Get autocompletions for search tags: - Library description: |- The field to autocomplete on is specified by the `{field}.query` parameter. For example `genre.query` or `title.query`. Returns a set of items from the filtered items whose `{field}` starts with `{field}.query`. In the results, a `{field}.queryRange` will be present to express the range of the match parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: Item type in: query schema: type: integer x-speakeasy-name-override: mediaType - name: field.query description: The "field" stands in for any field, the value is a partial string for matching in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': description: A paramater is either invalid or missing content: text/html: schema: type: string /library/sections/{sectionId}/byContentRating: get: operationId: getByContentRating summary: Get By Content Rating tags: - Library description: Browse items in a library section grouped by content rating. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/byDecade: get: operationId: getByDecade summary: Get By Decade tags: - Library description: Browse items in a library section grouped by decade. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/byFolder: get: operationId: getByFolder summary: Get By Folder tags: - Library description: Browse items in a library section by underlying filesystem folder. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/byResolution: get: operationId: getByResolution summary: Get By Resolution tags: - Library description: Browse items in a library section grouped by resolution. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/byYear: get: operationId: getByYear summary: Get By Year tags: - Library description: Browse items in a library section grouped by year. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/categories: get: operationId: getCategories summary: Set section categories tags: - Content description: Get categories in a library section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithArtwork" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/clips: get: operationId: getSectionClips summary: Get Section Clips tags: - Library description: Get clips for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/cluster: get: operationId: getCluster summary: Set section clusters tags: - Content description: Get clusters in a library section (typically for photos) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithArtwork" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/collections: get: operationId: getCollections summary: Get collections in a section tags: - Library description: Get all collections in a section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/common: get: operationId: getCommon summary: Get common fields for items tags: - Library description: |- Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter Fields which are not common will be expressed in the `mixedFields` field parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: Item type in: query schema: type: integer x-speakeasy-name-override: mediaType responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /library/sections/{sectionId}/computePath: get: operationId: getSonicPath summary: Similar tracks to transition from one to another tags: - Content description: Get a list of audio tracks starting at one and ending at another which are similar across the path parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/count" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: startID description: The starting metadata item id in: query required: true schema: type: integer - name: endID description: The ending metadata item id in: query required: true schema: type: integer - name: maxDistance description: The maximum distance allowed along the path; defaults to 0.25 in: query schema: type: number responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/edit: get: operationId: getSectionEdit summary: Edit Section tags: - Library description: Get library section metadata. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: editLibrarySection summary: Edit Section tags: - Library description: Update library section metadata. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/emptyTrash: get: operationId: emptyTrash summary: Get Empty Trash tags: - Library description: Permanently remove items from the trash for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: emptyTrashPost summary: Empty Trash tags: - Library description: Permanently remove items from the trash for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: emptyTrashPut summary: Empty section trash tags: - Library description: Empty trash in the section, permanently deleting media/metadata for missing media security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully updated empty section trash content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/episodes: get: operationId: getSectionEpisodes summary: Get Section Episodes tags: - Library description: Get episodes for a TV library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/filters: get: operationId: getSectionFilters summary: Get section filters tags: - Library description: Get common filters on a section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: The filters on the section content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/firstCharacters: get: operationId: getFirstCharacters summary: Get list of first characters tags: - Library description: Get list of first characters in this section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: The metadata type to filter on in: query schema: type: integer x-speakeasy-name-override: mediaType - name: sort description: The metadata type to filter on in: query schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: type: object properties: title: type: string key: type: string size: description: The number of items starting with this character type: integer example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: example key: example size: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/hubs: get: operationId: getLibrarySectionHubs summary: Get Section Hubs tags: - Library description: Get hubs for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Hub: - title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/indexes: delete: operationId: deleteIndexes summary: Delete section indexes tags: - Library description: Delete all the indexes in a section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete section indexes content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/intros: delete: operationId: deleteIntros summary: Delete section intro markers tags: - Library description: Delete all the intro markers in a section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete section intro markers content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/label: get: operationId: getSectionLabels summary: Get Section Labels tags: - Library description: Get labels for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithTags" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/location: get: operationId: getFolders summary: Get all folder locations tags: - Content description: Get all folder locations of the media in a section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: type: object properties: title: type: string fastKey: type: string key: type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: example fastKey: example key: example '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/match: get: operationId: matchSectionItems summary: Match Section Items tags: - Library description: Match items in a library section against metadata providers. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/moment: get: operationId: listMoments summary: Set section moments tags: - Content description: Get moments in a library section (typically for photos) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithArtwork" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/move: put: operationId: moveSection summary: Move Section tags: - Library description: Move library section paths. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/movies: get: operationId: getSectionMovies summary: Get Section Movies tags: - Library description: Get movies for a movie library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/nearest: get: operationId: getSonicallySimilar summary: The nearest audio tracks tags: - Content description: Get the nearest audio tracks to a particular analysis parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: The metadata type to fetch (should be 10 for audio track) in: query schema: type: integer x-speakeasy-name-override: mediaType - name: values description: The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track in: query required: true explode: false schema: type: array items: type: integer minimum: 50 maximum: 50 - name: limit description: The limit of the number of items to fetch; defaults to 50 in: query schema: type: integer - name: maxDistance description: The maximum distance to search, defaults to 0.25 in: query schema: type: number responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/newest: get: operationId: getNewestForSection summary: Get Newest for Section tags: - Library description: Get the newest additions for a specific library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/onDeck: get: operationId: getOnDeckForSection summary: Get On Deck for Section tags: - Library description: Get the On Deck items for a specific library section. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: On Deck items content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/optimize: get: operationId: optimizeSection summary: Get Optimize Section tags: - Library description: Optimize the database for a specific library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: optimizeSectionPost summary: Optimize Section tags: - Library description: Optimize the database for a specific library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/photos: get: operationId: getSectionPhotos summary: Get Section Photos tags: - Library description: Get photos for a photo library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/playlists: get: operationId: getSectionPlaylists summary: Get Section Playlists tags: - Library description: Get playlists belonging to a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/prefs: get: operationId: getSectionPreferences summary: Get section prefs tags: - Library description: Get the prefs for a section by id and potentially overriding the agent parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: agent description: The identifier of the metadata agent to use in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSettings" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: setSectionPreferences summary: Set section prefs tags: - Library description: Set the prefs for a section by id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: prefs description: The preference key to retrieve or set in: query required: true schema: type: object example: enableCinemaTrailers: 1 hidden: 0 responses: '200': $ref: "#/components/responses/200" description: Successfully updated set section prefs content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/recentlyAdded: get: operationId: getRecentlyAddedForSection summary: Get Recently Added for Section tags: - Library description: Get recently added items for a specific library section. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: Recently added items content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/refresh: delete: operationId: cancelRefresh summary: Cancel section refresh tags: - Library description: Cancel the refresh of a section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted cancel section refresh content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: refreshSection summary: Get Refresh Section tags: - Library description: Trigger a metadata refresh for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: refreshSectionPost summary: Refresh Section tags: - Library description: Trigger a metadata refresh for a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: force description: Whether the update of metadata and items should be performed even if modification dates indicate the items have not change in: query schema: $ref: "#/components/schemas/BoolInt" - name: path description: Restrict refresh to the specified path in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed refresh section content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/search: get: operationId: searchSection summary: Search Section tags: - Library description: Search within a specific library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/settings: get: operationId: getSectionSettings summary: Get Section Settings tags: - Library description: Get section-specific settings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/shows: get: operationId: getSectionShows summary: Get Section Shows tags: - Library description: Get shows for a TV library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The id of the section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/sorts: get: operationId: getAvailableSorts summary: Get a section sorts tags: - Library description: Get the sort mechanisms available in a section parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSorts" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: [] '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/tags: get: operationId: getSectionTags summary: Get Section Tags tags: - Library description: Get tags in a library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithTags" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/timeline: get: operationId: getSectionTimeline summary: Get Section Timeline tags: - Library description: Get section timeline data. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/unmatch: get: operationId: unmatchSectionItems summary: Unmatch Section Items tags: - Library description: Unmatch items in a library section from metadata providers. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/sections/{sectionId}/unwatched: get: operationId: getUnwatchedForSection summary: Get Unwatched for Section tags: - Library description: Get unwatched items for a specific library section. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The unique identifier of the library section in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/streams/{streamId}/levels: get: operationId: getStreamLevels summary: Get loudness about a stream in json tags: - Library description: The the loudness of a stream in db, one entry per 100ms parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: streamId description: The id of the stream in: path required: true schema: type: integer - name: subsample description: Subsample result down to return only the provided number of samples in: query schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Level: type: array items: $ref: "#/components/schemas/Level" totalSamples: description: The total number of samples (as a string) type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Level: - v: 1 totalSamples: example '403': $ref: "#/components/responses/responses-403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': $ref: "#/components/responses/responses-404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /library/streams/{streamId}/loudness: get: operationId: getStreamLoudness summary: Get loudness about a stream tags: - Library description: The the loudness of a stream in db, one number per line, one entry per 100ms parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: streamId description: The id of the stream in: path required: true schema: type: integer - name: subsample description: Subsample result down to return only the provided number of samples in: query schema: type: integer responses: '200': description: OK content: text/plain: schema: type: string '403': description: The media is not accessible to the user content: text/html: schema: type: string '404': description: The stream doesn't exist, or the loudness feature is not available on this PMS content: text/html: schema: type: string /livetv/dvrs/{dvrId}: delete: operationId: deleteDVR summary: Delete a single DVR tags: - DVRs description: Delete a single DVR by its id (key) security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a single dvr content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: getDVR summary: Get a single DVR tags: - DVRs description: Get a single DVR by its id (key) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/DVRResponse" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string patch: operationId: patchDVRSettings summary: Update DVR Settings tags: - DVRs description: Update DVR settings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: updateDVRSettings summary: Update DVR Settings tags: - DVRs description: Update DVR settings. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/channels: get: operationId: getDVRChannels summary: Get DVR Channels tags: - DVRs description: List channels directly associated with a DVR. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/guide: get: operationId: getDVRGuide summary: Get DVR Guide tags: - DVRs description: Fetch program guide/schedule for a DVR. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/lineups: delete: operationId: deleteLineup summary: Delete a DVR Lineup tags: - DVRs description: Deletes a DVR device's lineup. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: lineup description: The lineup to delete in: query required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/DVRResponse" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: addLineup summary: Add a DVR Lineup tags: - DVRs description: Add a lineup to a DVR device's set of lineups. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: lineup description: The lineup to delete in: query required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/DVRResponse" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/prefs: put: operationId: setDVRPreferences summary: Set DVR preferences tags: - DVRs description: Set DVR preferences by name and value security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: name description: Set the `name` preference to the provided value in: query schema: type: string - name: value description: Preference value to set. in: query schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/DVRResponse" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/recordings: get: operationId: getDVRRecordingsByDVR summary: Get DVR Recordings by DVR tags: - Live TV description: List completed DVR recordings for a specific DVR. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/dvrs/{dvrId}/reloadGuide: delete: operationId: stopDVRReload summary: Tell a DVR to stop reloading program guide tags: - DVRs description: Tell a DVR to stop reloading program guide security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted tell a dvr to stop reloading program guide content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: reloadGuide summary: Tell a DVR to reload program guide tags: - DVRs description: Tell a DVR to reload program guide security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Activity: description: The activity of the reload process schema: type: string content: text/html: schema: $ref: "#/components/schemas/SuccessResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/sessions/{sessionId}: delete: operationId: deleteLiveTVSession summary: Delete Live TV Session tags: - Live TV description: Terminate a Live TV session. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sessionId description: The session id in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: getLiveTVSession summary: Get a single session tags: - Live TV description: Get a single livetv session and metadata parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sessionId description: The session id in: path required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/grabbers/devices/{deviceId}: delete: operationId: removeDevice summary: Remove a device tags: - Devices description: Remove a devices by its id along with its channel mappings security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: message: type: string status: type: integer example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 message: example status: 1 '404': description: Device not found content: text/html: schema: type: string get: operationId: getDeviceDetails summary: Get device details tags: - Devices description: Get a device's details by its id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '404': description: Device not found content: text/html: schema: type: string put: operationId: modifyDevice summary: Enable or disable a device tags: - Devices description: Enable or disable a device by its id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer - name: enabled description: Whether to enable the device in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: message: type: string status: type: integer example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 message: example status: 1 '404': description: Device not found content: text/html: schema: type: string /media/grabbers/devices/{deviceId}/channelmap: put: operationId: setChannelmap summary: Set a device's channel mapping tags: - Devices description: Set a device's channel mapping parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer - name: channelMapping description: The mapping of changes, passed as a map of device channel to lineup VCN. in: query style: deepObject schema: type: object example: '46.3': 2 '48.9': 4 - name: channelMappingByKey description: The mapping of changes, passed as a map of device channel to lineup key. in: query style: deepObject schema: type: object example: '46.3': 5cc83d73af4a72001e9b16d7-5cab3c634df507001fefcad0 '48.9': 5cc83d73af4a72001e9b16d7-5cab3c63ec158a001d32db8d - name: channelsEnabled description: The channels which are enabled. in: query schema: type: array items: type: string example: 46.1,44.1,45.1 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/grabbers/devices/{deviceId}/channels: get: operationId: getDevicesChannels summary: Get a device's channels tags: - Devices description: Get a device's channels by its id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: DeviceChannel: type: array items: $ref: "#/components/schemas/DeviceChannel" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 DeviceChannel: - drm: true favorite: true hd: true identifier: string value key: string value name: string value signalQuality: 1 signalStrength: 1 '404': description: Device not found content: text/html: schema: type: string /media/grabbers/devices/{deviceId}/prefs: put: operationId: setDevicePreferences summary: Set device preferences tags: - Devices description: Set device preferences by its id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer - name: name description: The preference names and values. in: query schema: type: string - name: value description: Preference value to set. in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated set device preferences content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/grabbers/devices/{deviceId}/scan: delete: operationId: stopScan summary: Tell a device to stop scanning for channels tags: - Devices description: Tell a device to stop scanning for channels parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string post: operationId: scan summary: Tell a device to scan for channels tags: - Devices description: Tell a device to scan for channels parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer - name: source description: A valid source for the scan in: query schema: type: string example: Cable responses: '200': description: OK headers: X-Plex-Activity: description: The activity of the reload process schema: type: string content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDevice" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /media/grabbers/operations/{operationId}: delete: operationId: cancelGrab summary: Cancel an existing grab tags: - Subscriptions description: |- Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription. Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: operationId description: The ID of the operation. in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully deleted cancel an existing grab content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': description: User is not owner of the grab and not the admin content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /media/providers/{provider}: delete: operationId: deleteMediaProvider summary: Delete a media provider tags: - Provider description: Deletes a media provider with the given id parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: provider description: The ID of the media provider to delete in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a media provider content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: Cannot delete a provider which is a child of another provider content: text/html: schema: type: string /media/subscriptions/{subscriptionId}: delete: operationId: deleteSubscription summary: Delete a subscription tags: - Subscriptions description: Delete a subscription, cancelling all of its grabs as well parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: subscriptionId description: The unique identifier of the subscription in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a subscription content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string get: operationId: getSubscription summary: Get a single subscription tags: - Subscriptions description: Get a single subscription and potentially the grabs too parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: subscriptionId description: The unique identifier of the subscription in: path required: true schema: type: integer - name: includeGrabs description: Indicates whether the active grabs should be included as well in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeStorage description: Compute the storage of recorded items desired by this subscription in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSubscription" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaSubscription: - title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string put: operationId: editSubscriptionPreferences summary: Edit a subscription tags: - Subscriptions description: Edit a subscription's preferences parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: subscriptionId description: The unique identifier of the subscription in: path required: true schema: type: integer - name: prefs description: The preference key to retrieve or set in: query style: deepObject schema: type: object example: minVideoQuality: 720 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSubscription" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaSubscription: - title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /media/subscriptions/{subscriptionId}/move: put: operationId: reorderSubscription summary: Re-order a subscription tags: - Subscriptions description: Re-order a subscription to change its priority security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: subscriptionId description: The unique identifier of the subscription in: path required: true schema: type: integer - name: after description: The subscription to move this sub after. If missing will insert at the beginning of the list in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithSubscription" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 MediaSubscription: - title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /pins/{pinId}: get: operationId: getOAuthPin summary: Get OAuth PIN Status tags: - Authentication description: Poll the PIN status. Returns authToken when the user has linked the device. security: - clientIdentifier: [] servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: pinId description: The unique identifier of the pin in: path required: true schema: type: integer responses: '200': description: PIN status content: application/json: schema: type: object properties: authToken: type: - string - 'null' clientIdentifier: type: string code: type: string createdAt: type: string expiresAt: type: string expiresIn: type: integer id: type: integer newRegistration: type: boolean pmsIdentifier: type: - string - 'null' pmsVersion: type: - string - 'null' product: type: string qr: type: string trusted: type: boolean example: clientIdentifier: example code: example createdAt: example expiresAt: example expiresIn: 1 id: 1 newRegistration: true product: example qr: example trusted: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /playlists/{playlistId}: delete: operationId: deletePlaylist summary: Delete a Playlist tags: - Library Playlists description: Deletes a playlist by provided id parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer responses: '204': $ref: "#/components/responses/204" description: Successfully completed delete a playlist '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string get: operationId: getPlaylist summary: Retrieve Playlist tags: - Playlist description: |- Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string put: operationId: updatePlaylist summary: Editing a Playlist tags: - Library Playlists description: Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer responses: '204': $ref: "#/components/responses/204" description: Successfully completed editing a playlist '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string /playlists/{playlistId}/generators: get: operationId: getPlaylistGenerators summary: Get a playlist's generators tags: - Library Playlists description: Get all the generators in a playlist parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: PlayQueueGenerator: type: array items: type: object properties: type: description: |- The type of playlist generator. - -1: A smart playlist generator - 42: A optimized version generator type: integer enum: - -1 - 42 changedAt: type: integer createdAt: type: integer id: type: integer playlistID: type: integer updatedAt: type: integer uri: description: The URI indicating the search for this generator type: string example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 PlayQueueGenerator: - type: 1 changedAt: 1 createdAt: 1 id: 1 playlistID: 1 updatedAt: 1 uri: example '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: schema: type: string /playlists/{playlistId}/items: delete: operationId: clearPlaylistItems summary: Clearing a playlist tags: - Library Playlists description: Clears a playlist, only works with dumb playlists. Returns the playlist. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully deleted clearing a playlist content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string get: operationId: getPlaylistItems summary: Retrieve Playlist Contents tags: - Playlist description: Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: type description: The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist. in: query explode: false schema: type: array items: type: integer x-speakeasy-name-override: mediaType responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string put: operationId: addPlaylistItems summary: Adding to a Playlist tags: - Library Playlists description: Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: uri description: The content URI for the playlist. in: query schema: type: string - name: playQueueID description: The play queue to add to a playlist. in: query schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated adding to a playlist content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string /playQueues/{playQueueId}: get: operationId: getPlayQueue summary: Retrieve a play queue tags: - Play Queue description: Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer - name: own description: If the server should transfer ownership to the requesting client (used in remote control scenarios). in: query schema: $ref: "#/components/schemas/BoolInt" - name: center description: The play queue item ID for the center of the window - this doesn't change the current selected item. in: query schema: type: string - name: window description: How many items on each side of the center of the window in: query schema: type: integer - name: includeBefore description: Whether to include the items before the center (if 0, center is not included either), defaults to 1. in: query schema: $ref: "#/components/schemas/BoolInt" - name: includeAfter description: Whether to include the items after the center (if 0, center is not included either), defaults to 1. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: The play queue content: application/json: schema: $ref: "#/components/schemas/PlayQueueResponse" example: playQueueID: 1 playQueueLastAddedItemID: string value playQueueSelectedItemID: 1 playQueueSelectedItemOffset: 1 playQueueSelectedMetadataItemID: 1 playQueueShuffled: true playQueueSourceURI: string value playQueueTotalCount: 1 playQueueVersion: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found content: text/html: schema: type: string put: operationId: addToPlayQueue summary: Add a generator or playlist to a play queue tags: - Play Queue description: Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer - name: uri description: The content URI for what we're adding to the queue. in: query schema: type: string - name: playlistID description: The ID of the playlist to add to the playQueue. in: query schema: type: string - name: next description: Play this item next (defaults to 0 - queueing at the end of manually queued items). in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated add a generator or playlist to a play queue content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found content: text/html: schema: type: string /playQueues/{playQueueId}/items: delete: operationId: clearPlayQueue summary: Clear a play queue tags: - Play Queue description: Deletes all items in the play queue, and increases the version of the play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /playQueues/{playQueueId}/reset: put: operationId: resetPlayQueue summary: Reset a play queue tags: - Play Queue description: Reset a play queue to the first item being the current item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated reset a play queue content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found content: text/html: schema: type: string /playQueues/{playQueueId}/shuffle: put: operationId: shuffle summary: Shuffle a play queue tags: - Play Queue description: Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found or current item not found content: text/html: schema: type: string /playQueues/{playQueueId}/unshuffle: put: operationId: unshuffle summary: Unshuffle a play queue tags: - Play Queue description: Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated unshuffle a play queue content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found or current item not found content: text/html: schema: type: string /servers/{machineId}: get: operationId: getServerDetails summary: Get Server Details tags: - Users description: Get server details for sharing. servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: machineId description: The unique machine identifier of the server in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/ServerConfiguration" example: identifier: example offset: 1 size: 1 totalSize: 1 allowCameraUpload: true allowChannelAccess: true allowMediaDeletion: true allowSharing: true allowSync: true allowTuners: true backgroundProcessing: true certificate: true companionProxy: true countryCode: example diagnostics: - example eventStream: true friendlyName: example hubSearch: true itemClusters: true livetv: 7 machineIdentifier: 0123456789abcdef0123456789abcdef012345678 mediaProviders: true multiuser: true musicAnalysis: 2 myPlex: true myPlexMappingState: mapped myPlexSigninState: ok myPlexSubscription: true myPlexUsername: example offlineTranscode: 1 ownerFeatures: - example platform: example platformVersion: example pluginHost: true pushNotifications: true readOnlyLibraries: true streamingBrainABRVersion: 1 streamingBrainVersion: 1 sync: true transcoderActiveVideoSessions: 1 transcoderAudio: true transcoderLyrics: true transcoderPhoto: true transcoderSubtitles: true transcoderVideo: true transcoderVideoBitrates: - example transcoderVideoQualities: - example transcoderVideoResolutions: - example updatedAt: 1 updater: true version: example voiceSearch: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /servers/{machineId}/shared_servers: post: operationId: shareServerLegacy summary: Share Server (Legacy v1) tags: - Users description: Share a library with a friend (legacy v1 XML endpoint). servers: - url: https://plex.tv/api parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: machineId description: The unique machine identifier of the server in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /services/browse/{base64path}: get: operationId: browseFilesystemPath summary: Browse Filesystem Path tags: - General description: Browse a specific filesystem path. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: base64path description: The base64path in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /sharings/{userId}: delete: operationId: removeShare summary: Remove Share tags: - Users description: Remove a share / friend. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: userId description: The unique identifier of the user in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: updateShare summary: Update Share tags: - Users description: Update friend filters (allowSync, filterMovies, etc.). servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: userId description: The unique identifier of the user in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /status/sessions/history/{historyId}: delete: operationId: deleteHistory summary: Delete Single History Item tags: - Status description: Delete a single history item by id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: historyId description: The id of the history item (the `historyKey` from above) in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainer" example: identifier: example offset: 1 size: 1 totalSize: 1 '404': description: History item not found content: text/html: schema: type: string get: operationId: getHistoryItem summary: Get Single History Item tags: - Status description: Get a single history item by id security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: historyId description: The id of the history item (the `historyKey` from above) in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/historyAll-get-responses-200" description: Successfully retrieved get single history item content: application/json: schema: $ref: "#/components/schemas/PlaybackHistoryMetadata" example: title: string value type: string value accountID: 1 deviceID: 1 grandparentRatingKey: string value grandparentTitle: string value historyKey: string value index: 1 key: string value librarySectionID: string value originallyAvailableAt: string value parentIndex: 1 parentTitle: string value ratingKey: string value thumb: string value viewedAt: 1 '404': description: History item not found content: text/html: schema: type: string /sync/items/{syncId}: get: operationId: getSyncItem summary: Get Sync Item tags: - General description: Get sync item details. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: syncId description: The unique identifier of the sync item in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /system/agents/{agentId}: get: operationId: getMetadataAgentDetails summary: Get Metadata Agent Details tags: - General description: Get details and settings for a specific metadata agent. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: agentId description: The unique identifier of the metadata agent in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDirectory" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /user/{uuid}/settings/opt_outs: get: operationId: getUserOptOuts summary: Get User Opt-Outs tags: - Users description: Get online media source opt-out settings for a user. servers: - url: https://plex.tv/api/v2 parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: uuid description: The universally unique identifier in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/UserOptOutsResponse" example: optOuts: - type: string value id: string value value: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/start.{extension}: get: operationId: startTranscodeSession summary: Start A Transcoding Session tags: - Transcoder x-speakeasy-usage-example: true description: Starts the transcoder and returns the corresponding streaming resource document. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/transcodeType" - $ref: "#/components/parameters/transcodeSessionId" - $ref: "#/components/parameters/advancedSubtitles" - name: platform description: Client platform (some clients send this in addition to headers). in: query schema: type: string - name: extension description: Extension in: path required: true schema: type: string enum: - m3u8 - mpd - name: audioBoost description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) in: query schema: type: integer minimum: 1 example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: type: integer minimum: 1 maximum: 8 example: 5 - name: autoAdjustQuality description: Indicates the client supports ABR. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: autoAdjustSubtitle description: Indicates if the server should adjust subtitles based on Voice Activity Data. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directPlay description: Indicates the client supports direct playing the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStream description: Indicates the client supports direct streaming the video of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: directStreamAudio description: Indicates the client supports direct streaming the audio of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: disableResolutionRotation description: Indicates if resolution should be adjusted for orientation. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: hasMDE description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 - name: location description: Network type of the client, can be used to help determine target bitrate. in: query schema: type: string enum: - lan - wan - cellular example: wan - name: mediaBufferSize description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. in: query schema: type: integer example: 102400 - name: mediaIndex description: Index of the media to transcode. -1 or not specified indicates let the server choose. in: query schema: type: integer example: 0 - name: musicBitrate description: Target bitrate for audio only files (in kbps, used to transcode). in: query schema: type: integer minimum: 0 example: 5000 - name: offset description: Offset from the start of the media (in seconds). in: query schema: type: number example: 90.5 - name: partIndex description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode in: query schema: type: integer example: 0 - name: path description: Internal PMS path of the media to transcode. in: query schema: type: string example: /library/metadata/151671 - name: peakBitrate description: Maximum bitrate (in kbps) to use in ABR. in: query schema: type: integer minimum: 0 example: 12000 - name: photoResolution description: Target photo resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - name: protocol description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)" in: query schema: type: string enum: - http - hls - dash example: dash - name: secondsPerSegment description: Number of seconds to include in each transcoded segment in: query schema: type: integer example: 5 - name: subtitleSize description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) in: query schema: type: integer minimum: 1 example: 50 - name: subtitles description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream" in: query schema: type: string enum: - auto - burn - none - sidecar - embedded - segmented - unknown example: burn - name: maxVideoBitrate description: Client-side maximum video bitrate cap in kbps in: query schema: type: integer - name: videoResolution description: Cap resolution string (e.g. 1920x1080) in: query schema: type: string - name: copyts description: Copy timestamps instead of re-encoding them in: query schema: $ref: "#/components/schemas/BoolInt" - name: videoBitrate description: Target video bitrate (in kbps). in: query schema: type: integer minimum: 0 example: 12000 - name: videoQuality description: Target photo quality. in: query schema: type: integer minimum: 0 maximum: 99 example: 50 - name: X-Plex-Client-Identifier description: Unique per client. in: header required: true schema: type: string - name: X-Plex-Client-Profile-Extra description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . in: header schema: type: string example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) - name: X-Plex-Client-Profile-Name description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. in: header schema: type: string example: generic - name: X-Plex-Device description: Device the client is running on in: header schema: type: string example: Windows - name: X-Plex-Model description: Model of the device the client is running on in: header schema: type: string example: standalone - name: X-Plex-Platform description: Client Platform in: header schema: type: string example: Chrome - name: X-Plex-Platform-Version description: Client Platform Version in: header schema: type: string example: 135 - name: X-Plex-Session-Identifier description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) in: header schema: type: string responses: '200': description: MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream content: application/vnd.apple.mpegurl: schema: $ref: "#/components/schemas/BinaryResponse" example: | #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3538000,RESOLUTION=1280x720,FRAME-RATE=60.000000 session/32635662-0d05-4acd-8f72-512cc64396d4/base/index.m3u8 text/html: schema: $ref: "#/components/schemas/BinaryResponse" example: | video/x-matroska: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': $ref: "#/components/responses/404" description: Not Found - The requested resource does not exist content: text/html: schema: type: string /downloadQueue/{queueId}/item/{itemId}/decision: get: operationId: getItemDecision summary: Grab download queue item decision tags: - Download Queue description: |- Available: 0.2.0 Grab the decision for a download queue item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer - name: itemId description: The item ids in: path required: true schema: type: integer example: 32 responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithDecision" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: example generalDecisionCode: 1 generalDecisionText: example mdeDecisionCode: 1 mdeDecisionText: example Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 transcodeDecisionCode: 1 transcodeDecisionText: example '400': description: The item is not in a state where a decision is available content: text/html: schema: type: string /downloadQueue/{queueId}/item/{itemId}/media: get: operationId: getDownloadQueueMedia summary: Grab download queue media tags: - Download Queue description: |- Available: 0.2.0 Grab the media for a download queue item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer - name: itemId description: The item ids in: path required: true schema: type: integer example: 32 responses: '200': description: The raw media file content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '503': description: |- ![503](https://http.cat/503.jpg) The queue item is not yet complete and is currently transcoding or waiting to transcode headers: Retry-After: description: The estimated time before completion or -1 if unknown schema: type: integer content: text/html: schema: type: string /downloadQueue/{queueId}/items/{itemId}: delete: operationId: removeDownloadQueueItems summary: Delete download queue items tags: - Download Queue description: delete items from a download queue parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer - name: itemId description: The item id in: path required: true explode: false schema: type: array items: type: integer example: - 32 - 345 - 23 responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete download queue items content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string get: operationId: getDownloadQueueItems summary: Get download queue items tags: - Download Queue description: |- Available: 0.2.0 Get items from a download queue parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer - name: itemId description: The item ids in: path required: true explode: false schema: type: array items: type: integer example: - 32 - 345 - 23 responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: DownloadQueueItem: type: array items: $ref: "#/components/schemas/DownloadQueueItem" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 DownloadQueueItem: - DecisionResult: availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: string value generalDecisionCode: 1 generalDecisionText: string value mdeDecisionCode: 1 mdeDecisionText: string value transcodeDecisionCode: 1 transcodeDecisionText: string value error: string value id: 1 key: string value queueId: 1 status: deciding transcode: {} TranscodeSession: complete: true context: string value duration: 1 error: true key: string value progress: 1 protocol: string value size: 1 sourceAudioCodec: string value sourceVideoCodec: string value speed: 1 throttled: true transcodeHwFullPipeline: true transcodeHwRequested: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /downloadQueue/{queueId}/items/{itemId}/restart: post: operationId: restartProcessingDownloadQueueItems summary: Restart processing of items from the decision tags: - Download Queue description: |- Available: 0.2.0 Reprocess download queue items with previous decision parameters parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: queueId description: The queue id in: path required: true schema: type: integer - name: itemId description: The item ids in: path required: true explode: false schema: type: array items: type: integer example: - 32 - 345 - 23 responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed restart processing of items from the decision content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /hubs/sections/{sectionId}/manage/{identifier}: delete: operationId: deleteCustomHub summary: Delete a custom hub tags: - Hubs description: Delete a custom hub from the server security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to change in: path required: true schema: type: integer - name: identifier description: The identifier of the hub to change in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a custom hub content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: The hub is not a custom hub content: text/html: schema: type: string '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: The section or hub was not found content: text/html: schema: type: string put: operationId: updateHubVisibility summary: Change hub visibility tags: - Hubs description: Changed the visibility of a hub for both the admin and shared users security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: The section ID for the hubs to change in: path required: true schema: type: integer - name: identifier description: The identifier of the hub to change in: path required: true schema: type: string - name: promotedToRecommended description: Whether this hub should be displayed in recommended in: query schema: $ref: "#/components/schemas/BoolInt" - name: promotedToOwnHome description: Whether this hub should be displayed in admin's home in: query schema: $ref: "#/components/schemas/BoolInt" - name: promotedToSharedHome description: Whether this hub should be displayed in shared user's home in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully updated change hub visibility content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '403': $ref: "#/components/responses/403" description: Forbidden - User does not have permission to access this resource content: text/html: schema: type: string '404': description: Section id was not found content: text/html: schema: type: string /library/collections/{collectionId}/composite/{updatedAt}: get: operationId: getCollectionImage summary: Get a collection's image tags: - Content description: Get an image for the collection based on the items within parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/composite" - name: collectionId description: The collection id in: path required: true schema: type: integer - name: updatedAt description: The update time of the image. Used for busting cache. in: path required: true schema: type: integer responses: '200': description: OK content: image/jpeg: schema: type: string format: binary '404': description: Collection not found content: text/html: schema: type: string /library/collections/{collectionId}/items/{itemId}: put: operationId: updateCollectionItem summary: Update an item in a collection tags: - Library Collections description: Delete an item from a collection security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: collectionId description: The collection id in: path required: true schema: type: integer - name: itemId description: The item to delete in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': description: Item not found content: text/html: schema: type: string '404': description: Collection not found content: text/html: schema: type: string /library/collections/{collectionId}/items/{itemId}/move: put: operationId: moveCollectionItem summary: Reorder an item in the collection tags: - Library Collections description: Reorder items in a collection with one item after another security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: collectionId description: The collection id in: path required: true schema: type: integer - name: itemId description: The item to move in: path required: true schema: type: integer - name: after description: The item to move this item after. If not provided, this item will be moved to the beginning in: query schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '400': description: Item not found content: text/html: schema: type: string '404': description: Collection not found content: text/html: schema: type: string /library/media/{mediaId}/chapterImages/{chapter}: get: operationId: getChapterImage summary: Get a chapter image tags: - Library description: Get a single chapter image for a piece of media parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: mediaId description: The id of the media item in: path required: true schema: type: integer - name: chapter description: The index of the chapter in: path required: true schema: type: integer responses: '200': description: OK content: image/jpeg: schema: type: string format: binary '404': description: Either the media item or the chapter image was not found content: text/html: schema: type: string /library/metadata/{ids}/{element}: post: operationId: setItemArtwork summary: Set an item's artwork, theme, etc tags: - Library description: |- Set the artwork, thumb, element for a metadata item Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: element description: The type of artwork element (e.g., art, poster, thumb) in: path required: true schema: type: string enum: - thumb - art - clearLogo - banner - poster - theme - name: url description: The url of the new asset. If not provided, the binary of the asset must be provided in the post body. in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully created/executed set an item's artwork, theme, etc content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: updateItemArtwork summary: Set an item's artwork, theme, etc tags: - Library description: |- Set the artwork, thumb, element for a metadata item Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: element description: The type of artwork element (e.g., art, poster, thumb) in: path required: true schema: type: string enum: - thumb - art - clearLogo - banner - poster - theme - name: url description: The url of the new asset. in: query schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully updated set an item's artwork, theme, etc content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/marker/{marker}: delete: operationId: deleteMarker summary: Delete a marker tags: - Library description: Delete a marker for this user on the metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: marker description: The marker identifier in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a marker content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Marker is not a bookmark content: text/html: schema: type: string '404': description: Marker could not be found content: text/html: schema: type: string put: operationId: editMarker summary: Edit a marker tags: - Library description: Edit a marker for this user on the metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: marker description: The id of the marker to edit in: path required: true schema: type: string - name: type description: The type of marker to edit/create in: query required: true schema: type: integer x-speakeasy-name-override: mediaType - name: startTimeOffset description: The start time of the marker in: query required: true schema: type: integer - name: endTimeOffset description: The end time of the marker in: query schema: type: integer - name: attributes description: The attributes to assign to this marker in: query style: deepObject schema: type: object example: title: My favorite spot responses: '200': $ref: "#/components/responses/post-responses-200" description: Successfully updated edit a marker content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/responses-400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: The marker could not be found content: text/html: schema: type: string /library/metadata/{ids}/media/{mediaItem}: delete: operationId: deleteMediaItem summary: Delete a media item tags: - Library description: Delete a single media from a metadata item in the library security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: mediaItem description: The mediaItem in: path required: true schema: type: string - name: proxy description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a media item content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': description: Media item could not be deleted content: text/html: schema: type: string '404': description: Media item could not be found content: text/html: schema: type: string /library/parts/{partId}/indexes/{index}: get: operationId: getPartIndex summary: Get BIF index for a part tags: - Library description: Get BIF index for a part by index type parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: partId description: The part id who's index is to be fetched in: path required: true schema: type: integer - name: index description: The type of index to grab. in: path required: true schema: type: string enum: - sd - name: interval description: The interval between images to return in ms. in: query schema: type: integer responses: '200': description: OK content: application/octet-stream: schema: type: string format: binary '404': description: The part or the index doesn't exist or the interval is too small content: text/html: schema: type: string /library/sections/{sectionId}/collection/{collectionId}: delete: operationId: deleteCollection summary: Delete a collection tags: - Library description: Delete a library collection from the PMS security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: collectionId description: Collection Id in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a collection content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '404': description: Collection not found content: text/html: schema: type: string /library/sections/{sectionId}/composite/{updatedAt}: get: operationId: getSectionImage summary: Get a section composite image tags: - Library description: Get a composite image of images in this section security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - $ref: "#/components/parameters/mediaQuery" - $ref: "#/components/parameters/composite" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: updatedAt description: The update time of the image. Used for busting cache. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/200" description: Successfully retrieved get a section composite image content: application/json: schema: $ref: "#/components/schemas/BinaryResponse" example: '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/streams/{streamId}.{ext}: delete: operationId: deleteStream summary: Delete a stream tags: - Library description: Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: streamId description: The id of the stream in: path required: true schema: type: integer - name: ext description: This is not a part of this endpoint but documented here to satisfy OpenAPI in: path required: true schema: type: string responses: '200': $ref: "#/components/responses/200" description: Successfully deleted delete a stream content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '403': description: This user cannot delete this stream content: text/html: schema: type: string '500': description: The stream cannot be deleted content: text/html: schema: type: string get: operationId: getStream summary: Get a stream tags: - Library description: Get a stream (such as a sidecar subtitle stream) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: streamId description: The id of the stream in: path required: true schema: type: integer - name: ext description: The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles in: path required: true schema: type: string - name: encoding description: The requested encoding for the subtitle (only used for text subtitles) in: query required: false schema: type: string - name: format description: The requested format for the subtitle to convert the subtitles to (only used for text subtitles) in: query required: false schema: type: string - name: autoAdjustSubtitle description: Whether the server should attempt to automatically adjust the subtitle timestamps to match the media in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: The stream in the requested format. content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '403': description: The media is not accessible to the user content: text/html: schema: type: string '404': description: The stream doesn't exist or has no data content: text/html: schema: type: string '501': description: The stream is not a sidecar subtitle content: text/html: schema: type: string put: operationId: setStreamOffset summary: Set a stream offset tags: - Library description: Set a stream offset in ms. This may not be respected by all clients parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: streamId description: The id of the stream in: path required: true schema: type: integer - name: ext description: This is not a part of this endpoint but documented here to satisfy OpenAPI in: path required: true schema: type: string - name: offset description: The offest in ms in: query required: false schema: type: integer responses: '200': description: The stream in the requested format. content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '400': description: The stream doesn't exist content: text/html: schema: type: string /livetv/dvrs/{dvrId}/channels/{channel}/tune: post: operationId: tuneChannel summary: Tune a channel on a DVR tags: - DVRs description: Tune a channel on a DVR to the provided channel parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: channel description: The channel ID to tune in: path required: true schema: type: string example: '2.1' responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithMetadata" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 '500': description: Tuning failed content: text/html: schema: type: string /livetv/dvrs/{dvrId}/devices/{deviceId}: delete: operationId: removeDeviceFromDVR summary: Remove a device from an existing DVR tags: - DVRs description: Remove a device from an existing DVR security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: deviceId description: The ID of the device to add. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainerWithStatus" - type: object properties: DVR: type: array items: $ref: "#/components/schemas/DVR" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string put: operationId: addDeviceToDVR summary: Add a device to an existing DVR tags: - DVRs description: Add a device to an existing DVR security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: dvrId description: The ID of the DVR. in: path required: true schema: type: integer - name: deviceId description: The ID of the device to add. in: path required: true schema: type: integer responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainerWithStatus" - type: object properties: DVR: type: array items: $ref: "#/components/schemas/DVR" example: MediaContainer: DVR: - Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /livetv/epg/countries/{country}/{epgId}/lineups: get: operationId: getCountriesLineups summary: Get lineups for a country via postal code tags: - EPG description: Returns a list of lineups for a given country, EPG provider and postal code parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: country description: 3 letter country code in: path required: true schema: type: string - name: epgId description: The `providerIdentifier` of the provider in: path required: true schema: type: string - name: postalCode description: The postal code for the lineups to fetch in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithLineup" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Lineup: - title: string value type: string value identifier: string value key: string value lineupType: 1 location: string value uuid: string value uuid: example '404': description: No provider with the identifier was found content: text/html: schema: type: string /livetv/epg/countries/{country}/{epgId}/regions: get: operationId: getCountryRegions summary: Get regions for a country tags: - EPG description: Get regions for a country within an EPG provider parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: country description: 3 letter country code in: path required: true schema: type: string - name: epgId description: The `providerIdentifier` of the provider in: path required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Country: type: array items: $ref: "#/components/schemas/EPGRegion" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Country: - title: string value type: string value key: string value national: true '404': description: No provider with the identifier was found content: text/html: schema: type: string /livetv/sessions/{sessionId}/{consumerId}/index.m3u8: get: operationId: getSessionPlaylistIndex summary: Get a session playlist index tags: - Live TV description: Get a playlist index for playing this session parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sessionId description: The session id in: path required: true schema: type: string - name: consumerId description: The consumer id in: path required: true schema: type: string responses: '200': description: Index playlist for playing HLS content content: application/vnd.apple.mpegurl: schema: $ref: "#/components/schemas/BinaryResponse" '404': description: Session or consumer not found content: text/html: schema: type: string /media/grabbers/devices/{deviceId}/thumb/{version}: get: operationId: getThumb summary: Get device thumb tags: - Devices description: Get a device's thumb for display to the user security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: deviceId description: The ID of the device. in: path required: true schema: type: integer - name: version description: A version number of the thumb used for busting cache in: path required: true schema: type: integer responses: '200': description: The thumbnail for the device content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '301': description: The thumb URL on the device content: text/html: schema: type: string '404': description: No thumb found for this device content: text/html: schema: type: string /playlists/{playlistId}/items/{generatorId}: delete: operationId: deletePlaylistItem summary: Delete a Generator tags: - Library Playlists description: Deletes an item from a playlist. Only works with dumb playlists. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: generatorId description: The generator item ID to delete. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully deleted delete a generator content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: schema: type: string get: operationId: getPlaylistGenerator summary: Get a playlist generator tags: - Library Playlists description: Get a playlist's generator. Only used for optimized versions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: generatorId description: The generator item ID to delete. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Item: type: array items: type: object properties: title: type: string type: description: The type of this generator type: integer enum: - -1 - 42 composite: description: The composite thumbnail image path type: string Device: type: object properties: profile: type: string id: type: integer Location: type: object properties: librarySectionID: type: integer uri: type: string MediaSettings: type: object properties: advancedSubtitles: type: string enum: - auto - burn - none - sidecar - embedded - segmented audioBoost: type: integer audioChannelCount: type: integer autoAdjustQuality: type: boolean autoAdjustSubtitle: type: boolean directPlay: type: boolean directStream: type: boolean directStreamAudio: type: boolean disableResolutionRotation: type: boolean maxVideoBitrate: type: integer musicBitrate: type: integer peakBitrate: type: integer photoQuality: type: integer minimum: 0 maximum: 100 photoResolution: type: string secondsPerSegment: type: integer subtitles: type: string enum: - auto - burn - none - sidecar - embedded - segmented subtitleSize: type: integer videoBitrate: type: integer videoQuality: type: integer minimum: 0 maximum: 100 videoResolution: type: string Policy: type: object properties: scope: type: string enum: - all - count unwatched: description: True if only unwatched items are optimized type: boolean value: description: If the scope is count, the number of items to optimize type: integer Status: type: object properties: itemsCompleteCount: type: integer itemsCount: type: integer itemsSuccessfulCount: type: integer state: type: string enum: - pending - complete - failed totalSize: type: integer target: type: string targetTagID: description: The tag of this generator's settings type: integer example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Item: - title: example type: 1 composite: example Device: {} id: 1 Location: {} MediaSettings: {} Policy: {} Status: {} target: example targetTagID: 1 '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: schema: type: string put: operationId: modifyPlaylistGenerator summary: Modify a Generator tags: - Library Playlists description: Modify a playlist generator. Only used for optimizer parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: generatorId description: The generator item ID to modify. in: path required: true schema: type: integer - name: Item description: |- Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 in: query style: deepObject explode: true schema: type: object properties: title: type: string type: type: integer Location: type: object properties: uri: type: string locationID: type: integer Policy: type: object properties: scope: type: string enum: - all - count unwatched: $ref: "#/components/schemas/BoolInt" value: type: integer target: type: string targetTagID: type: integer example: Location: uri: library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146 locationID: -1 Policy: value: '' scope: all unwatched: 0 target: '' targetTagID: 1 title: Jack-Jack Attack type: 42 responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated modify a generator content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: schema: type: string /playlists/{playlistId}/items/{generatorId}/items: get: operationId: getPlaylistGeneratorItems summary: Get a playlist generator's items tags: - Library Playlists description: Get a playlist generator's items parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: generatorId description: The generator item ID to delete. in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: type: object properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: allOf: - $ref: "#/components/schemas/Metadata" - type: object properties: processingState: description: The state of processing if this generator is part of an optimizer playlist type: string enum: - processed - completed - tombstoned - disabled - error - pending processingStateContext: description: The error which could have occurred (or `good`) type: string enum: - good - sourceFileUnavailable - sourceFileMetadataError - clientProfileError - ioError - transcoderError - unknownError - mediaAnalysisError - downloadFailed - accessDenied - cannotTranscode - codecInstallError example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 processingState: processed processingStateContext: good '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: schema: type: string /playlists/{playlistId}/items/{playlistItemId}/move: put: operationId: movePlaylistItem summary: Moving items in a playlist tags: - Library Playlists description: Moves an item in a playlist. Only works with dumb playlists. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: playlistItemId description: The playlist item ID to move. in: path required: true schema: type: integer - name: after description: The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist in: query schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated moving items in a playlist content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: schema: type: string /playQueues/{playQueueId}/items/{playQueueItemId}: delete: operationId: deletePlayQueueItem summary: Delete an item from a play queue tags: - Play Queue description: Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer - name: playQueueItemId description: The play queue item ID to delete. in: path required: true schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully deleted delete an item from a play queue content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue not found content: text/html: schema: type: string /playQueues/{playQueueId}/items/{playQueueItemId}/move: put: operationId: movePlayQueueItem summary: Move an item in a play queue tags: - Play Queue description: Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playQueueId description: The ID of the play queue. in: path required: true schema: type: integer - name: playQueueItemId description: The play queue item ID to delete. in: path required: true schema: type: integer - name: after description: The play queue item ID to insert the new item after. If not present, moves to the beginning. in: query schema: type: integer responses: '200': $ref: "#/components/responses/slash-post-responses-200" description: Successfully updated move an item in a play queue content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Play queue or queue item not found content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/session/{sessionId}/{segmentId}.m4s: get: operationId: getDASHSegment summary: Get DASH Segment tags: - Transcoder description: DASH segment delivery for adaptive streaming. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: transcodeType description: The type of transcoding (e.g., video, audio) in: path required: true schema: type: string - name: sessionId description: The unique identifier of the session in: path required: true schema: type: string - name: segmentId description: The unique identifier of the media segment in: path required: true schema: type: string responses: '200': description: OK content: video/mp4: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /{transcodeType}/:/transcode/universal/session/{sessionId}/{segmentId}.ts: get: operationId: getHLSSegment summary: Get HLS Segment tags: - Transcoder description: HLS TS segment delivery for adaptive streaming. security: - token: - admin parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: transcodeType description: The type of transcoding (e.g., video, audio) in: path required: true schema: type: string - name: sessionId description: The unique identifier of the session in: path required: true schema: type: string - name: segmentId description: The unique identifier of the media segment in: path required: true schema: type: string responses: '200': description: OK content: video/mp2t: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/metadata/{ids}/{element}/{timestamp}: get: operationId: getItemArtwork summary: Get an item's artwork, theme, etc tags: - Library description: Get the artwork, thumb, element for a metadata item parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: ids description: Comma-separated list of IDs in: path required: true schema: type: string - name: element description: The type of artwork element (e.g., art, poster, thumb) in: path required: true schema: type: string enum: - thumb - art - clearLogo - banner - poster - theme - name: timestamp description: A timestamp on the element used for cache management in the client in: path required: true schema: type: integer responses: '200': description: OK content: audio/mpeg3: schema: type: string format: binary image/jpeg: schema: type: string format: binary '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '401': $ref: "#/components/responses/401" description: Unauthorized - Authentication token is missing or invalid content: text/html: schema: type: string /library/parts/{partId}/{changestamp}/{filename}: get: operationId: getMediaPart summary: Get a media part tags: - Library description: |- Get a media part for streaming or download. - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future. - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains. parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: partId description: The part id who's index is to be fetched in: path required: true schema: type: integer - name: changestamp description: The changestamp of the part; used for busting potential caches. Provided in the `key` for the part in: path required: true schema: type: integer - name: filename description: A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part in: path required: true schema: type: string - name: download description: Whether this is a file download in: query schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK headers: Content-Disposition: description: 'Note: This header is only included in download requests' schema: type: string content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '403': description: Client requested download and server owner has forbidden download of media content: text/html: schema: type: string '404': description: The part doesn't exist content: text/html: schema: type: string '503': description: Client requested the part without a decision and no decision could be made or decision is for a transcode content: text/html: schema: type: string '509': description: Client requested the part without a decision and no decision could be made because there is insufficient bandwidth for client to direct play this part content: text/html: schema: type: string /library/parts/{partId}/indexes/{index}/{offset}: get: operationId: getImageFromBif summary: Get an image from part BIF tags: - Library description: Extract an image from the BIF for a part at a particular offset parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: partId description: The part id who's index is to be fetched in: path required: true schema: type: integer - name: index description: The type of index to grab. in: path required: true schema: type: string enum: - sd - name: offset description: The offset to seek in ms. in: path required: true schema: type: integer responses: '200': description: OK content: image/jpeg: schema: type: string format: binary '404': description: The part or the index doesn't exist content: text/html: schema: type: string /livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups: get: operationId: listLineups summary: Get lineups for a region tags: - EPG description: Get lineups for a region within an EPG provider parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: country description: 3 letter country code in: path required: true schema: type: string - name: epgId description: The `providerIdentifier` of the provider in: path required: true schema: type: string - name: region description: The region for the lineup in: path required: true schema: type: string responses: '200': description: OK headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of objects available schema: type: integer content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithLineup" example: MediaContainer: identifier: example offset: 1 size: 1 totalSize: 1 Lineup: - title: string value type: string value identifier: string value key: string value lineupType: 1 location: string value uuid: string value uuid: example '404': description: No provider with the identifier was found content: text/html: schema: type: string /livetv/sessions/{sessionId}/{consumerId}/{segmentId}: get: operationId: getSessionSegment summary: Get a single session segment tags: - Live TV description: Get a single LiveTV session segment parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: sessionId description: The session id in: path required: true schema: type: string - name: consumerId description: The consumer id in: path required: true schema: type: string - name: segmentId description: The segment id in: path required: true schema: type: string responses: '200': description: MPEG-TS segment for playing HLS content content: application/octet-stream: schema: $ref: "#/components/schemas/BinaryResponse" '404': description: Session, consumer, or segment not found content: text/html: schema: type: string /playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}: put: operationId: refreshPlaylist summary: Reprocess a generator tags: - Library Playlists description: Make a generator reprocess (refresh) parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: playlistId description: The ID of the playlist in: path required: true schema: type: integer - name: generatorId description: The generator item ID to act on in: path required: true schema: type: integer - name: metadataId description: The metadata item ID to act on in: path required: true schema: type: integer - name: action description: The action to perform for this item on this optimizer queue in: path required: true schema: type: string enum: - reprocess - disable - enable responses: '200': $ref: "#/components/responses/200" description: Successfully updated reprocess a generator content: application/json: schema: $ref: "#/components/schemas/SuccessResponse" example: success: true '400': $ref: "#/components/responses/400" description: Bad Request - Invalid parameters or malformed request content: text/html: schema: type: string '404': description: Playlist not found (or user may not have permission to access playlist) or generator or metadata item not found content: text/html: schema: type: string components: securitySchemes: clientIdentifier: name: X-Plex-Client-Identifier description: |- An opaque identifier unique to the client. Required for OAuth PIN flows and JWT device registration endpoints. type: apiKey in: header token: name: X-Plex-Token description: |- The token which identifies the user accessing the PMS. This can be either: - A traditional access token obtained from plex.tv - A JWT token obtained through the JWT authentication flow JWT tokens provide better security with: - Short-lived tokens (7 days expiration) - Public-key cryptography (ED25519) - Better clock synchronization - Individual device revocation capability type: apiKey in: header parameters: accepts: name: accepts description: Indicates the client accepts the indicated media types in: header schema: type: string default: application/xml enum: - application/json - application/xml advancedSubtitles: name: advancedSubtitles description: "Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost" in: query schema: type: string enum: - burn - text - unknown example: burn audioBoost: name: audioBoost description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) in: query schema: type: integer minimum: 1 example: 50 audioChannelCount: name: audioChannelCount description: Target video number of audio channels. in: query schema: type: integer minimum: 1 maximum: 8 example: 5 autoAdjustQuality: name: autoAdjustQuality description: Indicates the client supports ABR. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 autoAdjustSubtitle: name: autoAdjustSubtitle description: Indicates if the server should adjust subtitles based on Voice Activity Data. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 composite: name: composite in: query schema: type: object properties: type: description: Limit composite to specified metadata types type: integer format: description: The image type type: string enum: - jpg - png backgroundColor: description: 6 character hex RGB value for background color for image type: string border: description: The width of the intra-image border type: integer cols: description: Number of columns to construct in the composite image type: integer crop: description: Where to crop source images to fit into composite image proportions type: string enum: - center - top height: description: The height of the image type: integer media: description: The default image type to use as the sources type: string enum: - thumb - art - banner repeat: description: Allow repetion of images if there are not enough source images to fill grid type: boolean rows: description: Number of rows to construct in the composite image type: integer width: description: The width of the image type: integer count: name: count description: Limit results to count items in: query schema: type: integer directPlay: name: directPlay description: Indicates the client supports direct playing the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 directStream: name: directStream description: Indicates the client supports direct streaming the video of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 directStreamAudio: name: directStreamAudio description: Indicates the client supports direct streaming the audio of the indicated content. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 disableResolutionRotation: name: disableResolutionRotation description: Indicates if resolution should be adjusted for orientation. in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 hasMDE: name: hasMDE description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 in: query schema: $ref: "#/components/schemas/BoolInt" example: 1 location: name: location description: Network type of the client, can be used to help determine target bitrate. in: query schema: type: string enum: - lan - wan - cellular example: wan mediaBufferSize: name: mediaBufferSize description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. in: query schema: type: integer example: 102400 mediaIndex: name: mediaIndex description: Index of the media to transcode. -1 or not specified indicates let the server choose. in: query schema: type: integer example: 0 mediaQuery: name: mediaQuery description: |- A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic. The query supports: - Fields: integer, boolean, tag, string, date, language - Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type) - Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR) - Sorting: sort parameter with :desc, :nullsLast modifiers - Grouping: group parameter - Limits: limit parameter Examples: - Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24` - String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24" - Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10 See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries. in: query style: form explode: true schema: $ref: "#/components/schemas/MediaQuery" musicBitrate: name: musicBitrate description: Target bitrate for audio only files (in kbps, used to transcode). in: query schema: type: integer minimum: 0 example: 5000 offset: name: offset description: Offset from the start of the media (in seconds). in: query schema: type: number example: 90.5 partIndex: name: partIndex description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode in: query schema: type: integer example: 0 path: name: path description: Internal PMS path of the media to transcode. in: query schema: type: string example: /library/metadata/151671 peakBitrate: name: peakBitrate description: Maximum bitrate (in kbps) to use in ABR. in: query schema: type: integer minimum: 0 example: 12000 photoResolution: name: photoResolution description: Target photo resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 protocol: name: protocol description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)" in: query schema: type: string enum: - http - hls - dash example: dash secondsPerSegment: name: secondsPerSegment description: Number of seconds to include in each transcoded segment in: query schema: type: integer example: 5 smart: name: smart description: Whether this is a smart collection/playlist in: query schema: type: boolean subtitles: name: subtitles description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream" in: query schema: type: string enum: - auto - burn - none - sidecar - embedded - segmented - unknown example: burn subtitleSize: name: subtitleSize description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) in: query schema: type: integer minimum: 1 example: 50 title: name: title description: The title to filter by or assign in: query schema: type: string transcodeSessionId: name: transcodeSessionId description: Transcode session UUID in: query schema: type: string transcodeType: name: transcodeType description: Type of transcode media in: path required: true schema: type: string enum: - video - music - audio - subtitles type: name: type description: |- The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode 5 = artist 6 = album 7 = track 8 = photo_album 9 = photo E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries in: query schema: $ref: "#/components/schemas/MediaType" example: 2 videoBitrate: name: videoBitrate description: Target video bitrate (in kbps). in: query schema: type: integer minimum: 0 example: 12000 videoQuality: name: videoQuality description: Target photo quality. in: query schema: type: integer minimum: 0 maximum: 99 example: 50 videoResolution: name: videoResolution description: Target maximum video resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 X-Plex-Client-Identifier: name: X-Plex-Client-Identifier description: An opaque identifier unique to the client in: header required: true schema: type: string example: abc123 example: abc123 x-speakeasy-name-override: Client-Identifier X-Plex-Container-Size: name: X-Plex-Container-Size description: |- The number of items to return. If not specified, all items will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 50 in: query required: false schema: type: integer format: int32 default: 50 example: 50 X-Plex-Container-Start: name: X-Plex-Container-Start description: |- The index of the first item to return. If not specified, the first item will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 0 in: query required: false schema: type: integer format: int32 default: 0 example: 0 X-Plex-Device: name: X-Plex-Device description: A relatively friendly name for the client device in: header schema: type: string example: Roku 3 example: Roku 3 x-speakeasy-name-override: Device X-Plex-Device-Name: name: X-Plex-Device-Name description: A friendly name for the client in: header schema: type: string example: Living Room TV example: Living Room TV x-speakeasy-name-override: Device-Name X-Plex-Device-Vendor: name: X-Plex-Device-Vendor description: The device vendor in: header schema: type: string example: Roku example: Roku x-speakeasy-name-override: Device-Vendor X-Plex-Marketplace: name: X-Plex-Marketplace description: The marketplace on which the client application is distributed in: header schema: type: string example: googlePlay example: googlePlay x-speakeasy-name-override: Marketplace X-Plex-Model: name: X-Plex-Model description: A potentially less friendly identifier for the device model in: header schema: type: string example: 4200X example: 4200X x-speakeasy-name-override: Model X-Plex-Platform: name: X-Plex-Platform description: The platform of the client in: header schema: type: string example: Roku example: Roku x-speakeasy-name-override: Platform X-Plex-Platform-Version: name: X-Plex-Platform-Version description: The version of the platform in: header schema: type: string example: 4.3 build 1057 example: 4.3 build 1057 x-speakeasy-name-override: Platform-Version X-Plex-Product: name: X-Plex-Product description: The name of the client product in: header schema: type: string example: Plex for Roku example: Plex for Roku x-speakeasy-name-override: Product X-Plex-Version: name: X-Plex-Version description: The version of the client application in: header schema: type: string example: 2.4.1 example: 2.4.1 x-speakeasy-name-override: Version headers: X-Plex-Container-Start: description: Provided on all MediaContainer objects indicating the offset of where this container page starts schema: type: integer X-Plex-Container-Total-Size: description: Provided on all MediaContainer objects indicating the total size of the collection schema: type: integer example: 100 minimum: 0 responses: '200': description: OK content: text/html: {} '204': description: No Content content: text/html: {} '400': description: Bad Request content: text/html: {} '401': description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/Error" '403': description: Forbidden content: text/html: {} '404': description: Not Found content: text/html: {} dvrRequestHandler_slash-get-responses-200: description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainerWithStatus" - properties: DVR: items: $ref: "#/components/schemas/DVR" type: array type: object type: object get-responses-200: description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - properties: Hub: items: $ref: "#/components/schemas/ManagedHub" type: array type: object type: object historyAll-get-responses-200: description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - properties: Metadata: items: $ref: "#/components/schemas/PlaybackHistoryMetadata" type: array type: object type: object LibrarySections: description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: "#/components/schemas/ServerConfiguration" - properties: Directory: items: properties: count: type: integer key: description: The key where this directory is found type: string title: type: string type: object type: array type: object type: object post-responses-200: description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - $ref: "#/components/schemas/Marker" type: object responses-200: description: OK headers: X-Plex-Container-Start: $ref: "#/components/headers/X-Plex-Container-Start" X-Plex-Container-Total-Size: $ref: "#/components/headers/X-Plex-Container-Total-Size" content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithHubs" responses-400: description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset` content: text/html: {} responses-403: description: The media is not accessible to the user content: text/html: {} responses-404: description: The stream doesn't exist, or the loudness feature is not available on this PMS content: text/html: {} slash-get-responses-200: description: OK content: application/json: schema: properties: MediaContainer: properties: content: description: |- The flavors of directory found here: - Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. - Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. type: string allowSync: oneOf: - type: boolean - enum: - '0' - '1' type: string art: type: string Directory: items: $ref: "#/components/schemas/Metadata" type: array identifier: type: string librarySectionID: type: integer mediaTagPrefix: type: string mediaTagVersion: type: integer size: type: integer sortAsc: type: boolean thumb: type: string title1: type: string viewGroup: type: string viewMode: type: integer type: object type: object slash-post-responses-200: description: OK content: application/json: schema: $ref: "#/components/schemas/MediaContainerWithPlaylistMetadata" schemas: Activity: type: object example: title: string value type: string value cancellable: true Context: {} progress: 1 Response: {} subtitle: string value userID: 1 uuid: string value additionalProperties: true properties: title: description: A user-friendly title for this activity type: string type: description: The type of activity type: string cancellable: description: Indicates whether this activity can be cancelled type: boolean Context: description: An object with additional values type: object additionalProperties: true progress: description: A progress percentage. A value of -1 means the progress is indeterminate type: number minimum: -1 maximum: 100 Response: description: An object with the response to the async opperation type: object additionalProperties: true subtitle: description: A user-friendly sub-title for this activity type: string userID: description: The user this activity belongs to type: integer uuid: description: The ID of the activity type: string x-speakeasy-unknown-fields: true AddedQueueItem: type: object example: id: 1 key: string value properties: id: description: The queue item id that was added or the existing one if an item already exists in this queue with the same parameters type: integer key: description: The key added to the queue type: string AllowSync: example: true oneOf: - type: boolean - type: string enum: - '0' - '1' AuthKeysResponse: type: object example: keys: - alg: string value e: string value kid: string value kty: string value n: string value use: string value properties: keys: type: array items: type: object properties: alg: type: string e: type: string kid: type: string kty: type: string n: type: string use: type: string AuthNonceResponse: type: object example: nonce: string value properties: nonce: description: A random nonce string for authentication type: string AuthTokenResponse: type: object example: authToken: string value clientIdentifier: string value jwt: string value properties: authToken: description: The Plex authentication token type: string clientIdentifier: type: string jwt: description: JWT token for device authentication type: string BadRequestErrorResponse: type: object example: errors: - code: 400 message: Bad Request status: 400 properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1000 message: type: string example: X-Plex-Client-Identifier is missing x-speakeasy-error-message: true status: type: integer format: int32 example: 400 x-speakeasy-name-override: BadRequest Bandwidth: type: object example: bandwidth: 1 resolution: string value time: 1 properties: bandwidth: description: The bandwidth at this time in kbps type: integer resolution: description: The user-friendly resolution at this time type: string time: description: Media playback time where this bandwidth started type: integer BinaryResponse: description: A binary data response (image, audio, video, or other media) type: string format: binary example: BoolInt: type: integer format: int32 enum: - 0 - 1 default: 0 example: 1 x-speakeasy-enums: - false - true ButlerTask: type: object example: title: string value description: string value enabled: true interval: 1 name: string value scheduleRandomized: true properties: title: description: A user-friendly title of the task type: string description: description: A user-friendly description of the task type: string enabled: description: Whether this task is enabled or not type: boolean interval: description: The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc. type: integer name: description: The name of the task type: string scheduleRandomized: description: Indicates whether the timing of the task is randomized within the butler interval type: boolean Channel: type: object example: title: string value callSign: string value channelVcn: string value drm: true favorite: true hd: true identifier: string value key: string value language: string value signalQuality: 1 signalStrength: 1 thumb: string value properties: title: type: string callSign: type: string channelVcn: type: string drm: description: Whether the channel requires DRM. type: boolean example: false favorite: description: Whether the channel is marked as a favorite. type: boolean example: true hd: type: boolean identifier: type: string key: type: string language: type: string signalQuality: description: Signal quality percentage (0-100). type: integer example: 85 signalStrength: description: Signal strength percentage (0-100). type: integer example: 90 thumb: type: string ChannelMapping: type: object example: channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value properties: channelKey: type: string deviceIdentifier: type: string enabled: type: string lineupIdentifier: type: string ChannelResponse: type: object example: MediaContainer: size: 1 Channel: - id: 1 title: Example Channel properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Channel: type: array items: $ref: "#/components/schemas/Channel" ClaimTokenResponse: type: object example: token: string value properties: token: description: The claim token for server authentication type: string CloudServerResponse: type: object example: address: string value name: string value port: 1 scheme: string value properties: address: type: string name: type: string port: type: integer scheme: type: string Collection: description: A collection of related media items. type: object example: artBlurHash: string value collectionFilterBasedOnUser: true collectionMode: default collectionPublished: true collectionSort: string value lastRatedAt: 1 thumbBlurHash: string value userRating: 1 properties: artBlurHash: description: Blur hash for collection art. type: string example: LhE3*HRjR*a#ogWBofj[bbf6ofa# collectionFilterBasedOnUser: description: Whether the smart collection filter is based on the current user. type: boolean example: false collectionMode: description: Display mode for the collection. type: string enum: - default - hideItems - showItems example: default collectionPublished: description: Whether the collection is published to Plex Discover. type: boolean example: true collectionSort: description: Sort order for items in the collection. type: string example: addedAt:desc lastRatedAt: description: Timestamp of the last user rating. type: integer example: 1704067200 thumbBlurHash: description: Blur hash for collection thumbnail. type: string example: LhE3*HRjR*a#ogWBofj[bbf6ofa# userRating: description: User star rating (0-10). type: number example: 8.5 Connection: type: object example: address: string value local: true port: 1 protocol: string value relay: true uri: string value properties: address: type: string local: description: Indicates if the connection is the server's LAN address type: boolean port: type: integer protocol: type: string relay: description: Indicates the connection is over a relayed connection type: boolean uri: type: string ConnectionInfo: type: object example: accessToken: string value clientIdentifier: string value Connection: - address: string value local: true port: 1 protocol: string value relay: true uri: string value name: string value properties: accessToken: type: string clientIdentifier: type: string Connection: type: array items: $ref: "#/components/schemas/Connection" name: type: string ConnectionInfoWrapper: type: object example: Device: Connection: - uri: http://192.168.1.1:32400 properties: Device: $ref: "#/components/schemas/ConnectionInfo" DecisionResult: type: object example: availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: string value generalDecisionCode: 1 generalDecisionText: string value mdeDecisionCode: 1 mdeDecisionText: string value transcodeDecisionCode: 1 transcodeDecisionText: string value properties: availableBandwidth: description: The maximum bitrate set when item was added type: integer directPlayDecisionCode: type: integer directPlayDecisionText: type: string generalDecisionCode: type: integer generalDecisionText: type: string mdeDecisionCode: description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1` type: integer mdeDecisionText: description: Descriptive text for the above code type: string transcodeDecisionCode: type: integer transcodeDecisionText: type: string Device: type: object example: title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value properties: title: description: Display title for the device. type: string example: Living Room Tuner ChannelMapping: type: array items: $ref: "#/components/schemas/ChannelMapping" deviceIdentifier: description: Distinct hardware identifier for the device. type: string example: HDHomeRun-1234ABCD enabled: description: Whether the device is enabled. type: boolean example: true id: description: Unique device ID. type: integer example: 42 key: type: string lastSeenAt: type: integer lineup: description: EPG lineup association. type: string example: OTA lineupType: description: Type of EPG lineup. type: string example: Antenna make: type: string model: type: string modelNumber: type: string name: description: Human-readable device name. type: string example: HDHomeRun CONNECT protocol: type: string sources: type: string state: type: string status: type: string thumb: description: URL to the device thumbnail image. type: string example: https://plex.tv/devices/42/thumb thumbVersion: description: Version of the device thumbnail. type: integer example: 1 tuners: type: string uri: type: string uuid: type: string DeviceChannel: type: object example: drm: true favorite: true hd: true identifier: string value key: string value name: string value signalQuality: 1 signalStrength: 1 properties: drm: description: Indicates the channel is DRMed and thus may not be playable type: boolean favorite: type: boolean hd: type: boolean identifier: type: string key: type: string name: type: string signalQuality: type: integer signalStrength: type: integer Directory: type: object example: title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value additionalProperties: true properties: title: type: string type: type: string art: type: string content: type: boolean filter: type: string hasPrefs: type: boolean hasStoreServices: type: boolean hubKey: type: string identifier: type: string key: type: string lastAccessedAt: type: integer Pivot: type: array items: type: object properties: title: type: string type: type: string context: type: string id: type: string key: type: string symbol: type: string share: type: integer thumb: type: string titleBar: type: string DownloadQueue: type: object example: id: 1 itemCount: 1 status: deciding properties: id: type: integer itemCount: type: integer status: description: |- The state of this queue - deciding: At least one item is still being decided - waiting: At least one item is waiting for transcode and none are currently transcoding - processing: At least one item is being transcoded - done: All items are available (or potentially expired) - error: At least one item has encountered an error type: string enum: - deciding - waiting - processing - done - error DownloadQueueItem: type: object example: DecisionResult: availableBandwidth: 1 directPlayDecisionCode: 1 directPlayDecisionText: string value generalDecisionCode: 1 generalDecisionText: string value mdeDecisionCode: 1 mdeDecisionText: string value transcodeDecisionCode: 1 transcodeDecisionText: string value error: string value id: 1 key: string value queueId: 1 status: deciding transcode: {} TranscodeSession: complete: true context: string value duration: 1 error: true key: string value progress: 1 protocol: string value size: 1 sourceAudioCodec: string value sourceVideoCodec: string value speed: 1 throttled: true transcodeHwFullPipeline: true transcodeHwRequested: true properties: DecisionResult: $ref: "#/components/schemas/DecisionResult" error: description: The error encountered in transcoding or decision type: string id: type: integer key: type: string queueId: type: integer status: description: |- The state of the item: - deciding: The item decision is pending - waiting: The item is waiting for transcode - processing: The item is being transcoded - available: The item is available for download - error: The item encountered an error in the decision or transcode - expired: The transcoded item has timed out and is no longer available type: string enum: - deciding - waiting - processing - available - error - expired transcode: description: The transcode session object which is not yet documented otherwise it'd be a $ref here. type: object TranscodeSession: $ref: "#/components/schemas/TranscodeSession" DVR: type: object example: Device: - title: string value ChannelMapping: - channelKey: string value deviceIdentifier: string value enabled: string value lineupIdentifier: string value deviceIdentifier: string value enabled: true id: 1 key: string value lastSeenAt: 1 lineup: string value lineupType: string value make: string value model: string value modelNumber: string value name: string value protocol: string value sources: string value state: string value status: string value thumb: string value thumbVersion: 1 tuners: string value uri: string value uuid: string value key: string value language: string value lineup: string value uuid: string value properties: Device: type: array items: $ref: "#/components/schemas/Device" key: type: string language: type: string lineup: type: string uuid: type: string DVRResponse: type: object example: MediaContainer: size: 1 DVR: - key: /tv.plex.provider.epg title: HDHomerun properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainerWithStatus" - type: object properties: DVR: type: array items: $ref: "#/components/schemas/DVR" EPGCountry: type: object example: title: string value type: string value example: string value code: string value flavor: 1 key: string value language: string value languageTitle: string value properties: title: type: string type: type: string example: type: string code: description: Three letter code type: string flavor: description: |- - `0`: The country is divided into regions, and following the key will lead to a list of regions. - `1`: The county is divided by postal codes, and an example code is returned in `example`. - `2`: The country has a single postal code, returned in `example`. type: integer enum: - 0 - 1 - 2 key: type: string language: description: Three letter language code type: string languageTitle: description: The title of the language type: string EPGLanguage: type: object example: title: string value code: string value properties: title: type: string code: description: 3 letter language code type: string EPGRegion: type: object example: title: string value type: string value key: string value national: true properties: title: type: string type: type: string key: type: string national: type: boolean Error: type: object example: errors: - code: 1 message: string value status: 1 properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string example: User could not be authenticated x-speakeasy-error-message: true status: type: integer format: int32 example: 401 Feature: type: object example: type: string value Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value key: string value properties: type: type: string Directory: type: array items: $ref: "#/components/schemas/Directory" key: type: string Filter: example: filter: genre=action filterType: string allOf: - $ref: "#/components/schemas/Directory" - description: Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API. type: object properties: title: description: The title for the filter. type: string filter: description: This represents the filter name used for the filter, which can be used to construct complex media queries with. type: string filterType: description: This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter. type: string key: description: This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element. type: string GeoIPResponse: type: object example: city: string value coordinates: string value country: string value country_code: string value subdivisions: string value timezone: string value properties: city: type: string coordinates: type: string country: type: string country_code: type: string subdivisions: type: string timezone: type: string Hub: type: object example: title: string value type: string value context: string value hubIdentifier: string value hubKey: string value key: string value Metadata: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 more: true promoted: true random: true reason: string value reasonID: 1 reasonTitle: string value size: 1 style: string value subtype: string value totalSize: 1 additionalProperties: true properties: title: description: A title for this grouping of content type: string type: description: The type of the items contained in this hub, or possibly `mixed` if there are multiple types type: string example: track context: type: string example: hub.home.onDeck hubIdentifier: description: A unique identifier for the hub type: string example: home.onDeck hubKey: description: A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional. type: string key: description: The key at which all of the content for this hub can be retrieved type: string example: /hubs/sections/home/onDeck Metadata: type: array items: $ref: "#/components/schemas/Metadata" more: description: '"A boolean indicating that the hub contains more than what''s included in the current response."' type: boolean promoted: description: Indicating if the hub should be promoted to the user's homescreen type: boolean random: description: Indicating that the contents of the hub may change on each request type: boolean reason: description: Reason for hub inclusion (e.g. "because you watched"). type: string example: becauseYouWatched reasonID: description: ID of the item that triggered the reason. type: integer example: 12345 reasonTitle: description: Human-readable reason title. type: string example: Because You Watched The Matrix size: type: integer example: 1 style: description: A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell` type: string subtype: description: The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types type: string example: podcast totalSize: type: integer example: 8 x-speakeasy-unknown-fields: true Image: description: Images such as movie posters and background artwork are represented by Image elements. type: object example: type: background alt: string value url: string value properties: type: description: Describes both the purpose and intended presentation of the image. type: string enum: - background - backgroundSquare - banner - clearLogo - coverPoster - snapshot alt: description: Title to use for accessibility. type: string url: description: The relative path or absolute url for the image. type: string IPResponse: type: object example: ip: 192.168.1.1 properties: ip: description: The public IP address type: string format: ipv4 Items: type: object example: size: 10 items: [] allOf: - $ref: "#/components/schemas/Metadata" - type: object properties: MetadataItem: type: array items: $ref: "#/components/schemas/Items" description: Nested metadata items type: object JWKRegistrationRequest: type: object example: jwk: crv: string value kid: string value kty: string value x: string value strong: false properties: jwk: description: JSON Web Key for device authentication type: object properties: crv: type: string example: Ed25519 kid: type: string kty: type: string example: OKP x: type: string strong: description: Request strong authentication type: boolean default: false Key: type: string example: /library/metadata/1 LegacyPinResponse: type: object example: authToken: string value clientIdentifier: string value code: string value expiresIn: 1 id: 1 trusted: true properties: authToken: description: The authentication token type: string clientIdentifier: type: string code: description: The 4-character PIN code type: string expiresIn: type: integer id: description: The PIN ID type: integer trusted: type: boolean Level: type: object example: v: 1 properties: v: description: The level in db. type: number LibrarySection: type: object example: title: string value type: movie agent: string value allowSync: true art: string value composite: string value content: true contentChangedAt: 1 createdAt: 1 directory: true filters: true hidden: true key: string value language: string value Location: - id: 1 refreshing: true scannedAt: 1 scanner: string value thumb: string value updatedAt: 1 uuid: string value properties: title: description: The title of the library type: string example: Movies type: $ref: "#/components/schemas/MediaTypeString" agent: type: string allowSync: oneOf: - type: boolean - type: string enum: - '0' - '1' art: type: string composite: type: string content: type: boolean contentChangedAt: $ref: "#/components/schemas/PlexDateTime" createdAt: $ref: "#/components/schemas/PlexDateTime" directory: type: boolean filters: description: Indicates whether this section has filtering capabilities type: boolean hidden: type: boolean key: $ref: "#/components/schemas/Key" language: type: string Location: type: array items: description: Represents a top-level location on disk where media in this library section is stored type: object properties: id: type: integer path: description: The path of where this directory exists on disk refreshing: description: Indicates whether this library section is currently scanning type: boolean scannedAt: $ref: "#/components/schemas/PlexDateTime" scanner: type: string thumb: $ref: "#/components/schemas/Thumb" updatedAt: $ref: "#/components/schemas/PlexDateTime" uuid: description: The universally unique identifier for the library. type: string example: e69655a2-ef48-4aba-bb19-d3cc3401e7d6 required: - uuid - language - type Lineup: type: object example: title: string value type: string value identifier: string value key: string value lineupType: 1 location: string value uuid: string value properties: title: type: string type: description: The type of this object (`lineup` in this case) type: string identifier: description: Lineup identifier. type: string example: OTA key: description: API key for this lineup. type: string example: /tv.plex.lineup.ota lineupType: description: |- - `-1`: N/A - `0`: Over the air - `1`: Cable - `2`: Satellite - `3`: IPTV - `4`: Virtual type: integer enum: - -1 - 0 - 1 - 2 - 3 - 4 location: type: string uuid: description: The uuid of this lineup type: string LogMessageRequest: type: object example: level: DEBUG message: string value source: string value properties: level: description: Log level (DEBUG, INFO, WARN, ERROR) type: string enum: - DEBUG - INFO - WARN - ERROR example: INFO message: description: The log message content type: string example: Server started successfully source: description: Source of the log message type: string example: PlexMediaServer ManagedHub: type: object example: title: string value homeVisibility: all identifier: string value promotedToOwnHome: true promotedToRecommended: true promotedToSharedHome: true recommendationsVisibility: all properties: title: description: The title of this hub type: string homeVisibility: description: |- Whether this hub is visible on the home screen - all: Visible to all users - none: Visible to no users - admin: Visible to only admin users - shared: Visible to shared users type: string enum: - all - none - admin - shared identifier: description: The identifier for this hub type: string promotedToOwnHome: description: Whether this hub is visible to admin user home type: boolean promotedToRecommended: description: Whether this hub is promoted to all for recommendations type: boolean promotedToSharedHome: description: Whether this hub is visible to shared user's home type: boolean recommendationsVisibility: description: |- The visibility of this hub in recommendations: - all: Visible to all users - none: Visible to no users - admin: Visible to only admin users - shared: Visible to shared users type: string enum: - all - none - admin - shared Marker: type: object example: title: string value type: intro color: string value endTimeOffset: 1 id: 1 startTimeOffset: 1 additionalProperties: true properties: title: type: string type: type: string enum: - intro - commercial - bookmark - resume - credit color: type: string endTimeOffset: type: integer id: type: integer startTimeOffset: type: integer Media: description: "`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element." type: object example: aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 additionalProperties: true properties: aspectRatio: type: number format: float example: 2.35 audioChannels: type: integer format: int32 example: 2 audioCodec: type: string example: aac audioProfile: type: string example: lc bitrate: type: integer format: int32 example: 5612 container: type: string example: mov duration: type: integer format: int32 example: 150192 has64bitOffsets: type: boolean example: false hasVoiceActivity: description: |- Voice activity detection availability flag returned by PMS. PMS may return this as a boolean or as string values (`"0"` or `"1"`). example: '0' oneOf: - type: boolean - type: string enum: - '0' - '1' height: type: integer format: int32 example: 544 id: type: integer format: int64 example: 1 optimizedForStreaming: type: integer format: int32 enum: - 0 - 1 Part: type: array items: $ref: "#/components/schemas/Part" selected: description: Whether this media version is selected for playback. type: boolean example: true uuid: description: Unique identifier for this media instance. type: string example: 5d776d057ae4e7001f65e7d0 videoCodec: type: string example: h264 videoFrameRate: type: string example: 24p videoProfile: type: string example: main videoResolution: type: string example: '720' width: type: integer format: int32 example: 1280 required: - id MediaContainer: description: |- `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. type: object example: identifier: com.plexapp.plugins.library offset: 0 size: 1 totalSize: 100 properties: identifier: type: string offset: description: The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. type: integer size: type: integer totalSize: description: The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. type: integer MediaContainerWithArtwork: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 artwork: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: type: array items: type: object additionalProperties: true properties: title: description: The title of the item type: string type: type: string enum: - image key: description: The path to the artwork type: string MediaContainerWithDecision: description: |- `MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`). It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well. type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Decision: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: availableBandwidth: description: The maximum available bitrate when the decision was rendered. type: integer directPlayDecisionCode: type: integer directPlayDecisionText: type: string generalDecisionCode: description: The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all. type: integer generalDecisionText: type: string mdeDecisionCode: description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1` type: integer mdeDecisionText: description: Descriptive text for the above code type: string Metadata: type: array items: allOf: - $ref: "#/components/schemas/Metadata" - type: object properties: Media: type: array items: allOf: - $ref: "#/components/schemas/Media" - type: object properties: abr: type: boolean Part: type: array items: allOf: - $ref: "#/components/schemas/Part" - type: object properties: decision: type: string enum: - directplay - transcode - none selected: type: boolean Stream: type: array items: allOf: - $ref: "#/components/schemas/Stream" - type: object properties: decision: type: string enum: - copy - transcode - burn - unavailable - ignore - none location: type: string enum: - direct - sidecar-subs - segments-video - segments-audio - segments-av - segments-subs - embedded - sidecar resourceSession: type: string selected: type: boolean transcodeDecisionCode: type: integer transcodeDecisionText: type: string MediaContainerWithDevice: type: object example: MediaContainer: identifier: com.plexapp.system.devices size: 1 Device: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Device: type: array items: $ref: "#/components/schemas/Device" MediaContainerWithDirectory: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Directory: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: $ref: "#/components/schemas/Directory" MediaContainerWithHubs: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Hub: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Hub: type: array items: $ref: "#/components/schemas/Hub" MediaContainerWithLineup: type: object example: MediaContainer: identifier: tv.plex.provider.epg size: 1 Lineup: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Lineup: type: array items: $ref: "#/components/schemas/Lineup" uuid: description: The UUID of this set lineups type: string MediaContainerWithMediaGrabOperation: type: object example: MediaContainer: identifier: com.plexapp.system size: 1 MediaGrabOperation: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: MediaGrabOperation: type: array items: $ref: "#/components/schemas/MediaGrabOperation" MediaContainerWithMetadata: description: A MediaContainer that includes metadata items. When `includeCollections=1` is passed to endpoints such as `/library/sections/{sectionId}/all`, this container may also include `Collection` items. type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Metadata: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: type: array items: $ref: "#/components/schemas/Metadata" MediaContainerWithNestedMetadata: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Metadata: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: MetadataItem: type: array items: type: object allOf: - $ref: "#/components/schemas/Metadata" - type: object properties: MetadataItem: type: array items: $ref: "#/components/schemas/Items" description: Nested metadata items type: object MediaContainerWithPlaylistMetadata: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Metadata: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Metadata: type: array items: allOf: - type: object properties: readOnly: description: If we return this as true then this playlist cannot be altered or deleted directly by the client. type: boolean composite: description: A composite image for the playlist. type: string duration: description: The total duration of the playlist in ms type: integer durationInSeconds: description: Total duration in seconds (redundant but present in XML). type: integer example: 7200 key: description: Leads to a list of items in the playlist. type: string leafCount: description: The number of items in the playlist. type: integer playlistType: description: The type of the playlist. type: string enum: - audio - video - photo radio: description: Whether this is a generated radio playlist. type: boolean example: false smart: description: Whether or not the playlist is smart. type: boolean specialPlaylistType: description: If this is a special playlist, this returns its type (e.g. favorites). type: string - $ref: "#/components/schemas/Metadata" MediaContainerWithPlayQueue: description: A media container representing a play queue. example: playQueueID: 1 playQueueSelectedItemID: 1 playQueueSelectedItemOffset: 0 playQueueTotalCount: 10 allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: playQueueID: type: integer example: 42 playQueueLastAddedItemID: type: integer example: 123 playQueueSelectedItemID: type: integer example: 1 playQueueSelectedItemOffset: type: integer example: 0 playQueueSelectedMetadataItemID: type: integer example: 456 playQueueShuffled: type: boolean example: false playQueueSourceURI: type: string example: library://abc123/item/%2Flibrary%2Fmetadata%2F1 playQueueTotalCount: type: integer example: 50 playQueueVersion: type: integer example: 3 MediaContainerWithSettings: type: object example: MediaContainer: identifier: com.plexapp.system.settings size: 1 Setting: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Setting: type: array items: $ref: "#/components/schemas/Setting" MediaContainerWithSorts: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Sort: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: $ref: "#/components/schemas/Sort" MediaContainerWithStatus: type: object example: MediaContainer: identifier: com.plexapp.system size: 1 Status: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: status: description: A status indicator. If present and non-zero, indicates an error type: integer MediaContainerWithSubscription: type: object example: MediaContainer: identifier: com.plexapp.system size: 1 MediaSubscription: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: MediaSubscription: type: array items: $ref: "#/components/schemas/MediaSubscription" MediaContainerWithTags: type: object example: MediaContainer: identifier: com.plexapp.plugins.library size: 1 Tag: [] properties: MediaContainer: allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: Directory: type: array items: $ref: "#/components/schemas/Tag" MediaGrabber: type: object example: title: string value identifier: string value protocol: string value properties: title: type: string identifier: type: string protocol: type: string MediaGrabOperation: description: A media grab operation represents a scheduled or active recording of media type: object example: currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive properties: currentSize: type: integer grabberIdentifier: type: string grabberProtocol: type: string id: type: string key: type: string mediaIndex: type: integer mediaSubscriptionID: type: integer Metadata: $ref: "#/components/schemas/Metadata" percent: type: number provider: type: string status: type: string enum: - inactive - scheduled - inprogress - complete - cancelled - error - postprocessing - paused MediaQuery: description: |- A querystring-based filtering language used to select subsets of media. When provided as an object, properties are serialized as a querystring using form style with explode. Only the defined properties below are allowed. The object serializes to a querystring format like: `type=4&sourceType=2&sort=duration:desc,index` type: object example: type: 4 sourceType: 2 sort: duration:desc,index additionalProperties: false properties: type: $ref: "#/components/schemas/MediaType" description: The type of media to retrieve or filter by. group: description: Field to group results by (similar to SQL GROUP BY) type: string limit: description: Maximum number of results to return type: integer sort: description: Field(s) to sort by, with optional modifiers. Use comma to separate multiple fields, and :desc or :nullsLast for modifiers (e.g., "duration:desc,index") type: string sourceType: description: Change the default level to which fields refer (used with type for hierarchical queries) type: integer MediaSubscription: description: A media subscription contains a representation of metadata desired to be recorded type: object example: title: string value type: 1 airingsType: New Airings Only createdAt: 1 Directory: {} durationTotal: 1 key: string value librarySectionTitle: string value locationPath: string value MediaGrabOperation: - currentSize: 1 grabberIdentifier: string value grabberProtocol: string value id: string value key: string value mediaIndex: 1 mediaSubscriptionID: 1 Metadata: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 percent: 1 provider: string value status: inactive Playlist: {} Setting: - type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value storageTotal: 1 targetLibrarySectionID: 1 targetSectionLocationID: 1 Video: {} properties: title: type: string type: description: The metadata type of the root item of the subscription type: integer airingsType: type: string enum: - New Airings Only - New and Repeat Airings createdAt: type: integer Directory: description: Media Matching Hints type: object additionalProperties: true durationTotal: description: Only included if `includeStorage` is specified type: integer key: type: string librarySectionTitle: type: string locationPath: type: string MediaGrabOperation: type: array items: $ref: "#/components/schemas/MediaGrabOperation" Playlist: description: Media Matching Hints type: object additionalProperties: true Setting: type: array items: $ref: "#/components/schemas/Setting" storageTotal: description: Only included if `includeStorage` is specified type: integer targetLibrarySectionID: description: The library section id for where the item is to be recorded type: integer targetSectionLocationID: description: The library section location id for where the item is to be recorded type: integer Video: description: Media Matching Hints type: object additionalProperties: true MediaType: description: |- The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode 5 = artist 6 = album 7 = track 8 = photo_album 9 = photo E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries type: integer enum: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 example: 2 x-speakeasy-enums: - MOVIE - TV_SHOW - SEASON - EPISODE - ARTIST - ALBUM - TRACK - PHOTO_ALBUM - PHOTO MediaTypeString: description: The type of media content in the Plex library. This can represent videos, music, or photos. type: string enum: - movie - show - season - episode - artist - album - track - photoalbum - photo - collection example: movie x-speakeasy-enums: - MOVIE - TV_SHOW - SEASON - EPISODE - ARTIST - ALBUM - TRACK - PHOTO_ALBUM - PHOTO - COLLECTION Metadata: description: |- Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. type: object example: title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 additionalProperties: true properties: title: description: The title of the item (e.g. “300” or “The Simpsons”) type: string type: description: The type of the video item, such as `movie`, `episode`, or `clip`. type: string absoluteIndex: description: When present, contains the disc number for a track on multi-disc albums. type: integer format: int32 addedAt: description: In units of seconds since the epoch, returns the time at which the item was added to the library. type: integer format: int64 art: description: When present, the URL for the background artwork for the item. type: string example: /library/metadata/58683/art/1703239236 artBlurHash: description: Blur hash for background art. type: string example: LhE3*HRjR*a#ogWBofj[bbf6ofa# audienceRating: description: Some rating systems separate reviewer ratings from audience ratings type: number format: float minimum: 0 maximum: 10 audienceRatingImage: description: A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). type: string Autotag: type: array items: $ref: "#/components/schemas/Tag" banner: description: When present, the URL for a banner graphic for the item. type: string chapterSource: description: When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). type: string example: media childCount: description: The number of child items associated with this media item. type: integer format: int32 example: 1 composite: description: When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). type: string contentRating: description: If known, the content rating (e.g. MPAA) for an item. type: string Country: type: array items: $ref: "#/components/schemas/Tag" Director: type: array items: $ref: "#/components/schemas/Tag" distance: description: Levenshtein distance for voice search results. type: integer example: 2 duration: description: When present, the duration for the item, in units of milliseconds. type: integer format: int32 editionTitle: description: Edition string (e.g. "Director's Cut"). type: string example: Director's Cut enableCreditsMarkerGeneration: description: Whether credits marker generation is enabled for this item. type: boolean example: true Filter: description: Typically only seen in metadata at a library's top level type: array items: $ref: "#/components/schemas/Filter" Genre: type: array items: $ref: "#/components/schemas/Tag" grandparentArt: description: The `art` of the grandparent type: string grandparentGuid: description: The GUID of the grandparent media item. type: string example: plex://show/5d9c081b170e24001f2a7be4 grandparentHero: description: The `hero` of the grandparent type: string grandparentKey: description: The `key` of the grandparent type: string grandparentRatingKey: description: The `ratingKey` of the grandparent type: string grandparentTheme: description: The `theme` of the grandparent type: string grandparentThumb: description: The `thumb` of the grandparent type: string grandparentTitle: description: The `title` of the grandparent type: string guid: description: The globally unique identifier for the media item. type: string example: plex://movie/5d7768ba96b655001fdc0408 Guid: type: array items: type: object properties: id: description: The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// type: string example: imdbExample: summary: IMDB example value: imdb://tt13015952 tmdbExample: summary: TMDB example value: tmdb://2434012 tvdbExample: summary: TVDB example value: tvdb://7945991 pattern: ^(imdb|tmdb|tvdb)://.+$ required: - id x-speakeasy-name-override: guids hero: description: When present, the URL for a hero image for the item. type: string Image: type: array items: $ref: "#/components/schemas/Image" index: description: When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. type: integer format: int32 key: description: The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. type: string languageOverride: description: Per-item language override. type: string example: en lastRatedAt: description: Timestamp of the last user rating. type: integer example: 1704067200 lastViewedAt: allOf: - $ref: "#/components/schemas/PlexDateTime" - description: When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. leafCount: description: For shows and seasons, contains the number of total episodes. type: integer format: int32 Media: type: array items: $ref: "#/components/schemas/Media" musicAnalysisVersion: description: Analysis version for music items. type: integer example: 1 originallyAvailableAt: description: When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. type: string format: date example: "2022-12-14T00:00:00.000Z" originalTitle: description: When present, used to indicate an item's original title, e.g. a movie's foreign title. type: string parentGuid: description: The GUID of the parent media item. type: string example: plex://show/5d9c081b170e24001f2a7be4 parentHero: description: The `hero` of the parent type: string parentIndex: description: The `index` of the parent type: integer format: int32 parentKey: description: The `key` of the parent type: string parentRatingKey: description: The `ratingKey` of the parent type: string parentThumb: description: The `thumb` of the parent type: string parentTitle: description: The `title` of the parent type: string playlistItemID: description: Item ID within a playlist. type: integer example: 42 primaryExtraKey: description: Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. type: string prompt: description: Prompt to give the user for this directory (such as `Search Movies`) type: string rating: description: When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. type: number format: float minimum: 0 maximum: 10 Rating: type: array items: $ref: "#/components/schemas/Tag" x-speakeasy-name-override: RatingArray ratingCount: description: Number of ratings under this metadata type: integer format: int32 ratingImage: description: When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. type: string ratingKey: description: This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. type: string Role: type: array items: $ref: "#/components/schemas/Tag" search: description: Indicates this is a search directory type: boolean secondary: description: Used by old clients to provide nested menus allowing for primative (but structured) navigation. type: boolean skipChildren: description: When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. oneOf: - type: boolean - type: string enum: - '0' - '1' skipCount: description: Number of times this track has been skipped. type: integer example: 3 skipParent: description: When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). oneOf: - type: boolean - type: string enum: - '0' - '1' slug: description: URL-friendly slug for the item. type: string example: the-matrix Sort: description: Typically only seen in metadata at a library's top level type: array items: $ref: "#/components/schemas/Sort" sourceURI: description: Remote or shared server item URI. type: string example: provider://tv.plex.provider.vod/library/metadata/5d776d057ae4e7001f65e7d0 studio: description: When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). type: string subtype: description: The subtype of the video item, such as `photo` when the video item is in a photo library type: string summary: description: When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). type: string tagline: description: When present, a pithy one-liner about the item (usually only seen for movies). type: string theme: description: When present, the URL for theme music for the item (usually only for TV shows). type: string example: /library/metadata/1/theme/1705636920 thumb: description: When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. type: string example: /library/metadata/58683/thumb/1703239236 thumbBlurHash: description: Blur hash for thumbnail. type: string example: LhE3*HRjR*a#ogWBofj[bbf6ofa# titleSort: description: Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). type: string updatedAt: description: In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). type: integer useOriginalTitle: description: Whether to display the original title. type: boolean example: false userRating: description: When the user has rated an item, this contains the user rating type: number format: float minimum: 0 maximum: 10 viewCount: description: When a users has completed watched or listened to an item, this attribute contains the number of consumptions. type: integer format: int32 viewedLeafCount: description: For shows and seasons, contains the number of viewed episodes. type: integer format: int32 viewOffset: description: When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. type: integer format: int32 Writer: type: array items: $ref: "#/components/schemas/Tag" year: description: When present, the year associated with the item's release (e.g. release year for a movie). type: integer format: int32 required: - addedAt - key - title - type x-speakeasy-unknown-fields: true NotificationContainer: type: object example: type: string value PlaySessionStateNotification: - controllable: string value guid: string value key: string value playQueueID: 1 playQueueItemID: 1 ratingKey: string value sessionKey: string value state: playing transcodeSession: string value url: string value viewOffset: 1 ReachabilityNotification: - status: string value size: 1 StatusNotification: - title: string value description: string value type: string value TimelineEntry: - title: string value type: 1 itemID: 1 metadataState: string value playQueueItemID: 1 state: 1 properties: type: description: The notification type type: string PlaySessionStateNotification: type: array items: $ref: "#/components/schemas/PlaySessionStateNotification" ReachabilityNotification: type: array items: $ref: "#/components/schemas/ReachabilityNotification" size: description: Number of notifications type: integer StatusNotification: type: array items: $ref: "#/components/schemas/StatusNotification" TimelineEntry: type: array items: $ref: "#/components/schemas/TimelineEntry" Part: description: '`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.' type: object example: accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value additionalProperties: true properties: accessible: description: Indicates if the part is accessible. type: boolean example: true audioProfile: type: string example: lc container: description: The container of the media file, such as `mp4` or `mkv` type: string example: mov deepAnalysisVersion: description: Deep analysis version for this part. type: integer example: 2 duration: description: The duration of the media item, in milliseconds type: integer format: int32 example: 150192 exists: description: Indicates if the part exists. type: boolean example: true file: description: The local file path at which the part is stored on the server type: string example: /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov has64bitOffsets: type: boolean example: false id: type: integer format: int64 example: 1 indexes: type: string example: sd key: description: The key from which the media can be streamed type: string example: /library/parts/1/1531779263/file.mov optimizedForStreaming: type: boolean example: false packetLength: description: RTP packet length for streaming. type: integer example: 188 protocol: description: Streaming protocol (e.g. dash, hls, direct). type: string example: dash requiredBandwidths: description: Comma-separated list of bandwidth requirements. type: string example: 10000,15000,20000 size: description: The size of the media, in bytes type: integer format: int64 example: 105355654 Stream: type: array items: $ref: "#/components/schemas/Stream" syncItemId: description: Mobile sync item association ID. type: integer example: 12345 syncState: description: Sync state (e.g. pending, downloaded, processing). type: string example: pending videoProfile: type: string example: main required: - id - key PlaybackHistoryMetadata: type: object example: title: string value type: string value accountID: 1 deviceID: 1 grandparentRatingKey: string value grandparentTitle: string value historyKey: string value index: 1 key: string value librarySectionID: string value originallyAvailableAt: string value parentIndex: 1 parentTitle: string value ratingKey: string value thumb: string value viewedAt: 1 properties: title: description: The title of the item played type: string type: description: The metadata type of the item played type: string accountID: description: The account id of this playback type: integer deviceID: description: The device id which played the item type: integer grandparentRatingKey: description: The rating key of the grandparent item type: string grandparentTitle: description: The title of the grandparent item (e.g. show name for an episode) type: string historyKey: description: The key for this individual history item type: string index: description: The index of the item (e.g. episode number) type: integer key: description: The metadata key for the item played type: string librarySectionID: description: The library section id containing the item played type: string originallyAvailableAt: description: The originally available at of the item played type: string parentIndex: description: The index of the parent item (e.g. season number) type: integer parentTitle: description: The title of the parent item (e.g. season name for an episode) type: string ratingKey: description: The rating key for the item played type: string thumb: description: The thumb of the item played type: string viewedAt: description: The time when the item was played type: integer Player: description: Information about the player being used for playback type: object example: title: string value address: string value local: true machineIdentifier: string value model: string value platform: string value platformVersion: string value product: string value relayed: true remotePublicAddress: string value secure: true state: string value userID: 1 vendor: string value version: string value properties: title: description: The title of the client type: string address: description: The remote address type: string local: description: Indicating if the client is playing from the local LAN type: boolean machineIdentifier: description: The identifier of the client type: string model: description: The model of the client type: string platform: description: The platform of the client type: string platformVersion: description: The platformVersion of the client type: string product: description: The product name of the client type: string relayed: description: Indicating if the client is playing over a relay connection type: boolean remotePublicAddress: description: The client's public address type: string secure: description: Indicating if the client is playing over HTTPS type: boolean state: description: The client's last reported state type: string userID: description: The id of the user type: integer vendor: description: The vendor of the client type: string version: description: The version of the client type: string PlayQueueResponse: type: object example: playQueueID: 1 playQueueLastAddedItemID: string value playQueueSelectedItemID: 1 playQueueSelectedItemOffset: 1 playQueueSelectedMetadataItemID: 1 playQueueShuffled: true playQueueSourceURI: string value playQueueTotalCount: 1 playQueueVersion: 1 properties: playQueueID: description: The ID of the play queue, which is used in subsequent requests. type: integer playQueueLastAddedItemID: description: Defines where the "Up Next" region starts type: string playQueueSelectedItemID: description: The queue item ID of the currently selected item. type: integer playQueueSelectedItemOffset: description: The offset of the selected item in the play queue, from the beginning of the queue. type: integer playQueueSelectedMetadataItemID: description: The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library). type: integer playQueueShuffled: description: Whether or not the queue is shuffled. type: boolean playQueueSourceURI: description: The original URI used to create the play queue. type: string playQueueTotalCount: description: The total number of items in the play queue. type: integer playQueueVersion: description: The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh. type: integer PlaySessionStateNotification: description: Real-time playback state change notification type: object example: controllable: string value guid: string value key: string value playQueueID: 1 playQueueItemID: 1 ratingKey: string value sessionKey: string value state: playing transcodeSession: string value url: string value viewOffset: 1 properties: controllable: type: string guid: type: string key: type: string playQueueID: type: integer playQueueItemID: type: integer ratingKey: type: string sessionKey: type: string state: type: string enum: - playing - paused - stopped transcodeSession: type: string url: type: string viewOffset: type: integer PlexDateTime: description: Unix epoch datetime in seconds type: integer format: int64 example: 1556281940 PlexDateTimeISO: type: string format: date-time example: "2019-06-24T11:38:02Z" PlexDevice: title: PlexDevice type: object example: accessToken: string value clientIdentifier: string value connections: - address: string value IPv6: true local: true port: 1 protocol: http relay: true uri: string value dnsRebindingProtection: true home: true httpsRequired: true name: string value natLoopbackSupported: true owned: true presence: true product: string value productVersion: string value provides: string value publicAddress: string value publicAddressMatches: true relay: true synced: true properties: accessToken: type: string clientIdentifier: type: string connections: type: array items: type: object properties: address: description: The (ip) address or domain name used for the connection type: string IPv6: description: If the connection is using IPv6 type: boolean local: description: If the connection is local address type: boolean port: description: The port used for the connection type: integer format: int32 protocol: description: The protocol used for the connection (http, https, etc) type: string enum: - http - https example: http relay: description: If the connection is relayed through plex.direct type: boolean uri: description: The full URI of the connection type: string required: - protocol - address - port - uri - local - relay - IPv6 createdAt: allOf: - $ref: "#/components/schemas/PlexDateTimeISO" - description: The time the device was created/registered device: type: - 'null' - string dnsRebindingProtection: type: boolean home: type: boolean httpsRequired: type: boolean lastSeenAt: allOf: - $ref: "#/components/schemas/PlexDateTimeISO" - description: The last time the device was seen name: type: string natLoopbackSupported: type: boolean owned: type: boolean ownerId: description: ownerId is null when the device is owned by the token used to send the request type: - 'null' - integer platform: type: - 'null' - string platformVersion: type: - 'null' - string presence: type: boolean product: type: string productVersion: type: string provides: type: string publicAddress: type: string publicAddressMatches: type: boolean relay: type: boolean sourceTitle: type: - 'null' - string synced: type: boolean required: - name - product - productVersion - clientIdentifier - createdAt - lastSeenAt - provides - ownerId - sourceTitle - publicAddress - accessToken - owned - home - synced - relay - presence - httpsRequired - publicAddressMatches - dnsRebindingProtection - natLoopbackSupported - connections PlexDownloadsResponse: type: object example: MediaContainer: Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value size: 1 properties: MediaContainer: type: object properties: Directory: type: array items: $ref: "#/components/schemas/Directory" size: type: integer ProgressResponse: type: object example: MediaContainer: size: 1 Video: - title: string value type: string value absoluteIndex: 1 addedAt: 1 art: string value artBlurHash: string value audienceRating: 1 audienceRatingImage: string value Autotag: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value banner: string value chapterSource: string value childCount: 1 composite: string value contentRating: string value Country: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value Director: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value distance: 1 duration: 1 editionTitle: string value enableCreditsMarkerGeneration: true Filter: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value filterType: string value Genre: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value grandparentArt: string value grandparentGuid: string value grandparentHero: string value grandparentKey: string value grandparentRatingKey: string value grandparentTheme: string value grandparentThumb: string value grandparentTitle: string value guid: string value Guid: - id: string value hero: string value Image: - type: background alt: string value url: string value index: 1 key: string value languageOverride: string value lastRatedAt: 1 leafCount: 1 Media: - aspectRatio: 1 audioChannels: 1 audioCodec: string value audioProfile: string value bitrate: 1 container: string value duration: 1 has64bitOffsets: true hasVoiceActivity: true height: 1 id: 1 optimizedForStreaming: 1 Part: - accessible: true audioProfile: string value container: string value deepAnalysisVersion: 1 duration: 1 exists: true file: string value has64bitOffsets: true id: 1 indexes: string value key: string value optimizedForStreaming: true packetLength: 1 protocol: string value requiredBandwidths: string value size: 1 Stream: - title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 syncItemId: 1 syncState: string value videoProfile: string value selected: true uuid: string value videoCodec: string value videoFrameRate: string value videoProfile: string value videoResolution: string value width: 1 musicAnalysisVersion: 1 originallyAvailableAt: string value originalTitle: string value parentGuid: string value parentHero: string value parentIndex: 1 parentKey: string value parentRatingKey: string value parentThumb: string value parentTitle: string value playlistItemID: 1 primaryExtraKey: string value prompt: string value rating: 1 Rating: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value ratingCount: 1 ratingImage: string value ratingKey: string value Role: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value search: true secondary: true skipChildren: true skipCount: 1 skipParent: true slug: string value Sort: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value default: asc defaultDirection: asc descKey: string value firstCharacterKey: string value sourceURI: string value studio: string value subtype: string value summary: string value tagline: string value theme: string value thumb: string value thumbBlurHash: string value titleSort: string value updatedAt: 1 useOriginalTitle: true userRating: 1 viewCount: 1 viewedLeafCount: 1 viewOffset: 1 Writer: - confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value year: 1 properties: MediaContainer: type: object properties: size: type: integer Video: type: array items: $ref: "#/components/schemas/Metadata" Provider: description: A media provider registered with the PMS. type: object example: title: string value identifier: string value Protocol: string value types: string value properties: title: description: Human-readable provider title. type: string example: Plex VOD identifier: description: Unique provider identifier. type: string example: tv.plex.provider.vod Protocol: description: Protocol version used by the provider. type: string example: '1.0' types: description: Content types provided. type: string example: movie,show ProviderFeature: description: A feature supported by a media provider. type: object example: title: string value type: string value key: search properties: title: description: Human-readable feature title. type: string example: Search type: description: Feature type. type: string example: content key: description: Feature key identifier. type: string enum: - search - metadata - content - match - manage - timeline - rate - playqueue - playlist - subscribe - promoted - continuewatching - collection - actions - imagetranscoder - queryParser - grid example: search ReachabilityNotification: description: Server reachability status change notification type: object example: status: string value properties: status: type: string Release: type: object example: added: string value downloadURL: string value fixed: string value key: string value state: available version: string value properties: added: description: A list of what has been added in this version type: string downloadURL: description: The URL of where this update is available type: string fixed: description: A list of what has been fixed in this version type: string key: description: The URL key of the update type: string state: description: |- The status of this update. - available - This release is available - downloading - This release is downloading - downloaded - This release has been downloaded - installing - This release is installing - tonight - This release will be installed tonight - skipped - This release has been skipped - error - This release has an error - notify - This release is only notifying it is available (typically because it cannot be installed on this setup) - done - This release is complete type: string enum: - available - downloading - downloaded - installing - tonight - skipped - error - notify - done version: description: The version available type: string ServerAccessTokensResponse: type: object example: accessTokens: - expiresAt: string value scope: string value token: string value properties: accessTokens: type: array items: type: object properties: expiresAt: type: string scope: type: string token: type: string ServerConfiguration: example: friendlyName: My Plex Server machineIdentifier: abc123 allOf: - $ref: "#/components/schemas/MediaContainer" - type: object properties: allowCameraUpload: type: boolean allowChannelAccess: type: boolean allowMediaDeletion: type: boolean allowSharing: type: boolean allowSync: type: boolean allowTuners: type: boolean backgroundProcessing: type: boolean certificate: type: boolean companionProxy: type: boolean countryCode: type: string diagnostics: description: Comma-separated list of enabled diagnostics modules. type: array items: type: string eventStream: type: boolean friendlyName: type: string hubSearch: type: boolean itemClusters: type: boolean livetv: type: integer example: 7 machineIdentifier: example: 0123456789abcdef0123456789abcdef012345678 mediaProviders: type: boolean multiuser: type: boolean musicAnalysis: type: integer example: 2 myPlex: type: boolean myPlexMappingState: example: mapped myPlexSigninState: example: ok myPlexSubscription: type: boolean myPlexUsername: type: string offlineTranscode: description: Whether offline transcoding is enabled. type: integer format: int32 ownerFeatures: description: List of enabled owner features. type: array items: type: string platform: type: string platformVersion: type: string pluginHost: type: boolean pushNotifications: type: boolean readOnlyLibraries: type: boolean streamingBrainABRVersion: type: integer streamingBrainVersion: type: integer sync: type: boolean transcoderActiveVideoSessions: type: integer transcoderAudio: type: boolean transcoderLyrics: type: boolean transcoderPhoto: type: boolean transcoderSubtitles: type: boolean transcoderVideo: type: boolean transcoderVideoBitrates: description: List of supported transcoder video bitrates. type: array items: type: string transcoderVideoQualities: description: List of supported transcoder video qualities. type: array items: type: string transcoderVideoResolutions: description: List of supported transcoder video resolutions. type: array items: type: string updatedAt: type: integer updater: type: boolean version: type: string voiceSearch: type: boolean ServerUserFeaturesResponse: type: object example: features: - type: string value Directory: - title: string value type: string value art: string value content: true filter: string value hasPrefs: true hasStoreServices: true hubKey: string value identifier: string value key: string value lastAccessedAt: 1 Pivot: - title: string value type: string value context: string value id: string value key: string value symbol: string value share: 1 thumb: string value titleBar: string value key: string value properties: features: type: array items: $ref: "#/components/schemas/Feature" Session: description: Information about the playback session type: object example: title: string value bandwidth: 1 id: string value location: lan sessionKey: string value userID: 1 uuid: string value additionalProperties: true properties: title: description: Title of the media being played. type: string example: The Matrix bandwidth: description: The bandwidth used by this client's playback in kbps type: integer id: description: The id of the playback session type: string location: description: The location of the client type: string enum: - lan - wan sessionKey: description: Unique session key for this playback session. type: string example: abc123 userID: description: ID of the user owning this session. type: integer example: 12345 uuid: description: UUID of the playback session. type: string example: 5d776d057ae4e7001f65e7d0 x-speakeasy-unknown-fields: true Setting: description: A configuration setting or preference type: object example: type: bool default: string value advanced: true enumValues: string value group: string value hidden: true id: string value label: string value summary: string value value: string value properties: type: description: The type of the value of this setting type: string enum: - bool - int - text - double default: description: The default value of this setting oneOf: - type: string - type: number - type: boolean advanced: description: Whether the setting is considered advanced and normally hidden from the user type: boolean enumValues: description: The possible values for this setting if restricted. The list is `|` separated with `value:name` entries. type: string group: description: The group name of this setting to aid in display of a hierarchy type: string hidden: description: Whether the setting is hidden or not type: boolean id: description: The query parameter name for this setting type: string label: description: A user-friendly name for the setting type: string summary: description: A description of the setting type: string value: description: The current value of this setting oneOf: - type: string - type: number - type: boolean Sort: example: default: asc defaultDirection: asc descKey: titleSort:desc key: titleSort allOf: - $ref: "#/components/schemas/Directory" - description: Each `Sort` object contains a description of the sort field. type: object properties: title: description: The title of the field. type: string default: description: If present, this sort is the default and in this direction type: string enum: - asc - desc defaultDirection: description: This default diction of this sort type: string enum: - asc - desc descKey: description: The key for sorting this field in reverse order type: string firstCharacterKey: description: The key to use to get items sorted by this field and indexed by the first character type: string key: description: The key to use in the sort field to make items sort by this item type: string StatusNotification: description: Server status notification (e.g. library scan complete) type: object example: title: string value description: string value type: string value properties: title: type: string description: type: string type: type: string Stream: description: '`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).' type: object example: title: string value format: string value default: true albumGain: 1 albumPeak: 1 albumRange: 1 audioChannelLayout: string value bitDepth: 1 bitrate: 1 bitrateMode: cbr canAutoSync: true channels: 1 chromaLocation: string value chromaSubsampling: string value closedCaptions: true codec: string value codedHeight: 1 codedWidth: 1 colorPrimaries: string value colorRange: string value colorSpace: string value colorTrc: string value displayTitle: string value DOVIBLCompatID: 1 DOVIBLPresent: true DOVIELPresent: true DOVILevel: 1 DOVIPresent: true DOVIProfile: 1 DOVIRPUPresent: true DOVIVersion: string value dub: true embeddedInVideo: string value endRamp: string value extendedDisplayTitle: string value forced: true frameRate: 1 gain: 1 hasScalingMatrix: true headerCompression: true hearingImpaired: true height: 1 id: 1 index: 1 key: string value language: string value languageCode: string value languageTag: string value level: 1 loudness: 1 lra: 1 minLines: 1 original: true peak: 1 perfectMatch: true profile: string value provider: string value providerTitle: string value refFrames: 1 samplingRate: 1 scanType: string value score: 1 selected: true sourceKey: string value startRamp: string value streamIdentifier: 1 timed: true transient: true userID: 1 visualImpaired: true width: 1 additionalProperties: true properties: title: description: Optional title for the stream (e.g., language variant). type: string example: SDH format: description: Format of the stream (e.g., srt). type: string example: srt default: description: Indicates if this stream is default. type: boolean example: true albumGain: description: ReplayGain album gain in dB. type: number example: -8.5 albumPeak: description: ReplayGain album peak amplitude. type: number example: 0.95 albumRange: description: ReplayGain album dynamic range in dB. type: number example: 12.3 audioChannelLayout: description: Audio channel layout. type: string example: 5.1(side) bitDepth: description: Bit depth of the video stream. type: integer format: int32 example: 10 bitrate: description: Bitrate of the stream. type: integer format: int32 example: 24743 bitrateMode: description: Audio bitrate mode (cbr or vbr). type: string enum: - cbr - vbr example: vbr canAutoSync: description: Indicates if the stream can auto-sync. type: boolean example: false oneOf: - type: boolean - type: string enum: - '0' - '1' channels: description: Number of audio channels (for audio streams). type: integer format: int32 example: 6 chromaLocation: description: Chroma sample location. type: string example: topleft chromaSubsampling: description: Chroma subsampling format. type: string example: 14520 closedCaptions: type: boolean example: true codec: description: Codec used by the stream. type: string example: hevc codedHeight: description: Coded video height. type: integer format: int32 example: 1608 codedWidth: description: Coded video width. type: integer format: int32 example: 3840 colorPrimaries: description: Color primaries used. type: string example: bt2020 colorRange: description: Color range (e.g., tv). type: string example: tv colorSpace: description: Color space. type: string example: bt2020nc colorTrc: description: Color transfer characteristics. type: string example: smpte2084 displayTitle: description: Display title for the stream. type: string example: 4K DoVi/HDR10 (HEVC Main 10) DOVIBLCompatID: description: Dolby Vision BL compatibility ID. type: integer format: int32 example: 1 DOVIBLPresent: description: Indicates if Dolby Vision BL is present. type: boolean example: true DOVIELPresent: description: Indicates if Dolby Vision EL is present. type: boolean example: false DOVILevel: description: Dolby Vision level. type: integer format: int32 example: 6 DOVIPresent: description: Indicates if Dolby Vision is present. type: boolean example: true DOVIProfile: description: Dolby Vision profile. type: integer format: int32 example: 8 DOVIRPUPresent: description: Indicates if Dolby Vision RPU is present. type: boolean example: true DOVIVersion: description: Dolby Vision version. type: string example: '1.0' dub: description: Indicates if the stream is a dub. type: boolean example: true embeddedInVideo: type: string example: progressive endRamp: description: Loudness ramp end type. type: string example: none extendedDisplayTitle: description: Extended display title for the stream. type: string example: 4K DoVi/HDR10 (HEVC Main 10) forced: type: boolean example: true frameRate: description: Frame rate of the stream. type: number format: float example: 23.976 gain: description: Track replay gain in dB. type: number example: -6.2 hasScalingMatrix: type: boolean example: false headerCompression: description: Indicates whether header compression is enabled. type: boolean example: true hearingImpaired: description: Indicates if the stream is for the hearing impaired. type: boolean example: true height: description: Height of the video stream. type: integer format: int32 example: 1602 id: description: Unique stream identifier. type: integer format: int32 example: 1002625 index: description: Index of the stream. type: integer format: int32 example: 0 key: description: Key to access this stream part. type: string example: /library/streams/216389 language: description: Language of the stream. type: string example: English languageCode: description: ISO language code. type: string example: eng languageTag: description: Language tag (e.g., en). type: string example: en level: description: Video level. type: integer format: int32 example: 150 loudness: description: Integrated loudness in LUFS. type: number example: -14 lra: description: Loudness range in LU. type: number example: 8.5 minLines: description: Minimum lines in the lyric file. type: integer example: 10 original: description: Indicates if this is the original stream. type: boolean example: true peak: description: Track peak amplitude. type: number example: 0.98 perfectMatch: description: Whether the subtitle is an exact match. type: boolean example: true profile: description: Video profile. type: string example: main 10 provider: description: Lyric or subtitle provider name. type: string example: OpenSubtitles providerTitle: description: Subtitle provider display name. type: string example: OpenSubtitles.org refFrames: description: Number of reference frames. type: integer format: int32 example: 1 samplingRate: description: Sampling rate for the audio stream. type: integer format: int32 example: 48000 scanType: type: string example: progressive score: description: Subtitle match confidence score (0-100). type: number example: 95.5 selected: description: Indicates if this stream is selected (applicable for audio streams). type: boolean example: true sourceKey: description: Source identifier for the subtitle. type: string example: opensubtitles startRamp: description: Loudness ramp start type. type: string example: none streamIdentifier: type: integer format: int32 example: 1 streamType: allOf: - type: integer format: int32 enum: - 1 - 2 - 3 example: 1 x-speakeasy-enums: - VIDEO - AUDIO - SUBTITLE - description: |- Stream type: - VIDEO = 1 (Video stream) - AUDIO = 2 (Audio stream) - SUBTITLE = 3 (Subtitle stream) timed: description: Whether lyrics are timestamped. type: boolean example: true transient: description: Whether the subtitle is temporary or downloaded. type: boolean example: false userID: description: ID of the user who added the subtitle. type: integer example: 12345 visualImpaired: description: Whether this audio track is an audio description track. type: boolean example: false width: description: Width of the video stream. type: integer format: int32 example: 3840 required: - id - key - codec - displayTitle - streamType x-speakeasy-unknown-fields: true SuccessResponse: description: A simple success indicator for operations that return no meaningful data type: object example: success: true properties: success: type: boolean example: true Tag: description: A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes. type: object example: confidence: 1 context: string value filter: string value id: 1 ratingKey: string value role: string value tag: string value tagKey: string value tagType: 1 thumb: string value properties: confidence: description: Measure of the confidence of an automatic tag type: number context: type: string filter: description: A filter parameter that can be used to query for more content that matches this tag value. type: string example: actor=49 id: type: integer format: int32 ratingKey: description: 'The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.' type: string example: '58683' role: description: The role this actor played type: string example: Secretary tag: description: The value of the tag (the name) type: string example: Shaun Lawton tagKey: description: Plex identifier for this tag which can be used to fetch additional information from plex.tv type: string example: 5d3ee12c4cde6a001c3e0b27 tagType: type: integer format: int32 thumb: type: string example: http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg required: - tag Thumb: type: string example: /library/metadata/1/thumb/1234567890 TimelineEntry: description: A timeline update entry delivered via WebSocket or EventSource type: object example: title: string value type: 1 itemID: 1 metadataState: string value playQueueItemID: 1 state: 1 properties: title: type: string type: type: integer itemID: type: integer metadataState: type: string playQueueItemID: type: integer state: type: integer TokenExchangeRequest: type: object example: clientIdentifier: string value jwt: string value scope: string value properties: clientIdentifier: description: Unique client identifier type: string jwt: description: JWT token to exchange for a Plex auth token type: string scope: description: Requested scope for the token type: string TopUserAccount: type: object example: globalViewCount: 1 id: 1 properties: globalViewCount: type: integer id: type: integer TranscodeJob: type: object example: title: string value type: transcode generatorID: 1 key: string value progress: 1 ratingKey: string value remaining: 1 size: 1 speed: 1 targetTagID: 1 thumb: string value properties: title: type: string type: type: string enum: - transcode generatorID: type: integer key: type: string progress: type: number minimum: 0 maximum: 100 ratingKey: type: string remaining: description: The number of seconds remaining in this job type: integer size: description: The size of the result so far type: integer speed: description: The speed of the transcode; 1.0 means real-time type: number targetTagID: description: The tag associated with the job. This could be the tag containing the optimizer settings. type: integer thumb: type: string TranscodeSession: description: The transcode session if item is currently being transcoded type: object example: complete: true context: string value duration: 1 error: true key: string value progress: 1 protocol: string value size: 1 sourceAudioCodec: string value sourceVideoCodec: string value speed: 1 throttled: true transcodeHwFullPipeline: true transcodeHwRequested: true properties: complete: type: boolean context: type: string duration: type: integer error: type: boolean key: type: string progress: type: number minimum: 0 maximum: 100 protocol: type: string size: type: integer sourceAudioCodec: type: string sourceVideoCodec: type: string speed: type: number throttled: type: boolean transcodeHwFullPipeline: type: boolean transcodeHwRequested: type: boolean UltraBlurColors: type: object example: bottomLeft: string value bottomRight: string value topLeft: string value topRight: string value properties: bottomLeft: description: The color (hex) for the bottom left quadrant. type: string bottomRight: description: The color (hex) for the bottom right quadrant. type: string topLeft: description: The color (hex) for the top left quadrant. type: string topRight: description: The color (hex) for the top right quadrant. type: string UnauthorizedErrorResponse: type: object example: errors: - code: 401 message: Unauthorized status: 401 properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string example: User could not be authenticated x-speakeasy-error-message: true status: type: integer format: int32 example: 401 x-speakeasy-name-override: Unauthorized UpdaterStatus: description: Status of the PMS updater. type: object example: checkedAt: 1 downloadURL: string value Release: - added: string value downloadURL: string value fixed: string value key: string value state: available version: string value status: 1 properties: checkedAt: description: Timestamp of the last update check. type: integer downloadURL: description: The URL where the update is available. type: string Release: type: array items: $ref: "#/components/schemas/Release" status: description: The current error code (0 means no error). type: integer User: description: The user playing the content type: object example: title: string value id: string value thumb: string value properties: title: description: The username type: string id: description: The id of the user type: string thumb: description: Thumb image to display for the user type: string UserOptOutsResponse: type: object example: optOuts: - type: string value id: string value value: true properties: optOuts: type: array items: type: object properties: type: type: string id: type: string value: type: boolean UserPlexAccount: title: UserPlexAccount type: object example: title: string value adsConsentReminderAt: 1 adsConsentSetAt: 1 authToken: string value backupCodesCreated: false confirmed: false country: string value email: user@example.com emailOnlyAuth: false entitlements: - string value experimentalFeatures: false friendlyName: string value guest: false hasPassword: true home: false homeAdmin: false homeSize: 1 id: 1 joinedAt: 1 mailingListActive: false mailingListStatus: active maxHomeSize: 1 pin: string value profile: autoSelectAudio: true protected: false rememberExpiresAt: 1 restricted: false roles: - string value scrobbleTypes: string value services: - endpoint: https://plex.tv identifier: string value status: online subscription: active: true features: - string value status: Inactive subscriptions: - active: true features: - string value status: Inactive thumb: https://plex.tv twoFactorEnabled: false username: string value uuid: string value additionalProperties: true properties: title: description: The title of the account (username or friendly name) type: string example: UsernameTitle adsConsent: description: Unknown type: - boolean - 'null' adsConsentReminderAt: oneOf: - $ref: "#/components/schemas/PlexDateTime" - type: 'null' adsConsentSetAt: oneOf: - $ref: "#/components/schemas/PlexDateTime" - type: 'null' anonymous: description: Unknown type: - boolean - 'null' default: false attributionPartner: type: - string - 'null' example: null authToken: description: The account token type: string example: CxoUzBTSV5hsxjTpFKaf backupCodesCreated: description: If the two-factor authentication backup codes have been created type: boolean default: false confirmed: description: If the account has been confirmed type: boolean default: false country: description: The account country type: string example: US minLength: 2 maxLength: 2 email: description: The account email address type: string format: email example: username@email.com emailOnlyAuth: description: If login with email only is enabled type: boolean default: false entitlements: description: List of devices your allowed to use with this account type: array example: '[]' items: type: string experimentalFeatures: description: If experimental features are enabled type: boolean default: false friendlyName: description: Your account full name type: string example: friendlyUsername guest: description: If the account is a Plex Home guest user type: boolean default: false hasPassword: description: If the account has a password type: boolean default: true home: description: If the account is a Plex Home user type: boolean default: false homeAdmin: description: If the account is the Plex Home admin type: boolean default: false homeSize: description: The number of accounts in the Plex Home type: integer format: int32 example: 1 id: description: The Plex account ID type: integer format: int32 example: 13692262 joinedAt: $ref: "#/components/schemas/PlexDateTime" locale: description: The account locale type: - string - 'null' mailingListActive: description: If you are subscribed to the Plex newsletter type: boolean default: false mailingListStatus: description: Your current mailing list status type: string enum: - active - unsubscribed - removed example: active x-speakeasy-enums: - ACTIVE - UNSUBSCRIBED - REMOVED maxHomeSize: description: The maximum number of accounts allowed in the Plex Home type: integer format: int32 example: 15 pin: description: '[Might be removed] The hashed Plex Home PIN' deprecated: true type: string profile: $ref: "#/components/schemas/UserProfile" protected: description: If the account has a Plex Home PIN enabled type: boolean default: false rememberExpiresAt: $ref: "#/components/schemas/PlexDateTime" restricted: description: If the account is a Plex Home managed user type: boolean default: false roles: description: '[Might be removed] List of account roles. Plexpass membership listed here' type: array items: type: string scrobbleTypes: description: Unknown type: string services: type: array items: type: object properties: endpoint: type: string format: uri example: https://epg.provider.plex.tv identifier: type: string example: metadata-dev secret: type: - string - 'null' status: type: string enum: - online - offline example: online x-speakeasy-enums: - ONLINE - OFFLINE x-speakeasy-unknown-values: allow token: type: - string - 'null' example: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv required: - identifier - endpoint - token - secret - status subscription: title: Subscription description: If the account's Plex Pass subscription is active type: object properties: active: description: If the account's Plex Pass subscription is active type: boolean example: true features: description: List of features allowed on your Plex Pass subscription type: array items: description: |- - Android - Dolby Vision - Android - PiP - CU Sunset - HRK_enable_EUR - TREBLE-show-features - ad-countdown-timer - adaptive_bitrate - album-types - allow_dvr - amazon-loop-debug - avod-ad-analysis - avod-new-media - blacklist_get_signin - boost-voices - camera_upload - client-radio-stations - cloudflare-turnstile-required - cloudsync - collections - comments_and_replies_push_notifications - community_access_plex_tv - companions_sonos - content_filter - custom-home-removal - disable_home_user_friendships - disable_sharing_friendships - downloads-gating - drm_support - dvr - dvr-block-unsupported-countries - epg-recent-channels - exclude restrictions - federated-auth - friend_request_push_notifications - grandfather-sync - guided-upgrade - hardware_transcoding - home - hwtranscode - imagga-v2 - increase-password-complexity - ios14-privacy-banner - iterable-notification-tokens - item_clusters - keep-payment-method - kevin-bacon - korea-consent - le_isrg_root_x1 - lets_encrypt - lightning-dvr-pivot - live-tv-support-incomplete-segments - livetv - lyrics - metadata_search - music-analysis - music_videos - new_plex_pass_prices - news-provider-sunset-modal - nominatim - pass - photos-favorites - photos-metadata-edition - photosV6-edit - photosV6-tv-albums - pms_health - premium-dashboard - premium_music_metadata - radio - rate-limit-client-token - scrobbling-service-plex-tv - session_bandwidth_restrictions - session_kick - shared_server_notification - shared_source_notification - signin_notification - signin_with_apple - silence-removal - sleep-timer - spring_serve_ad_provider - sync - sweet-fades - transcoder_cache - trailers - tuner-sharing - two-factor-authentication - unsupportedtuners - upgrade-3ds2 - visualizers - vod-schema - vod_cloudflare - volume-leveling - watch-together-invite - watchlist-rss - web_server_dashboard - webhooks - blacklist-subnets - chromecast-music-mp - Sync v3 - livetv-platform-specific - nonAnonymousAccount - parental-controls - Subtitles on Demand - ultrablur - web-desktop-gracenote-banner type: string paymentService: description: Payment service used for your Plex Pass subscription type: - string - 'null' plan: description: Name of Plex Pass subscription plan type: - string - 'null' status: description: String representation of subscriptionActive type: string enum: - Inactive - Active example: Inactive x-speakeasy-enums: - INACTIVE - ACTIVE x-speakeasy-unknown-values: allow subscribedAt: description: Date the account subscribed to Plex Pass type: - string - 'null' example: "2021-04-12T18:21:12Z" subscriptionDescription: description: Description of the Plex Pass subscription type: - string - 'null' subscriptions: type: array items: title: Subscription type: object properties: active: description: If the account's Plex Pass subscription is active type: boolean example: true features: description: List of features allowed on your Plex Pass subscription type: array items: description: |- - Android - Dolby Vision - Android - PiP - CU Sunset - HRK_enable_EUR - TREBLE-show-features - ad-countdown-timer - adaptive_bitrate - album-types - allow_dvr - amazon-loop-debug - avod-ad-analysis - avod-new-media - blacklist_get_signin - boost-voices - camera_upload - client-radio-stations - cloudflare-turnstile-required - cloudsync - collections - comments_and_replies_push_notifications - community_access_plex_tv - companions_sonos - content_filter - custom-home-removal - disable_home_user_friendships - disable_sharing_friendships - downloads-gating - drm_support - dvr - dvr-block-unsupported-countries - epg-recent-channels - exclude restrictions - federated-auth - friend_request_push_notifications - grandfather-sync - guided-upgrade - hardware_transcoding - home - hwtranscode - imagga-v2 - increase-password-complexity - ios14-privacy-banner - iterable-notification-tokens - item_clusters - keep-payment-method - kevin-bacon - korea-consent - le_isrg_root_x1 - lets_encrypt - lightning-dvr-pivot - live-tv-support-incomplete-segments - livetv - lyrics - metadata_search - music-analysis - music_videos - new_plex_pass_prices - news-provider-sunset-modal - nominatim - pass - photos-favorites - photos-metadata-edition - photosV6-edit - photosV6-tv-albums - pms_health - premium-dashboard - premium_music_metadata - radio - rate-limit-client-token - scrobbling-service-plex-tv - session_bandwidth_restrictions - session_kick - shared_server_notification - shared_source_notification - signin_notification - signin_with_apple - silence-removal - sleep-timer - spring_serve_ad_provider - sync - sweet-fades - transcoder_cache - trailers - tuner-sharing - two-factor-authentication - unsupportedtuners - upgrade-3ds2 - visualizers - vod-schema - vod_cloudflare - volume-leveling - watch-together-invite - watchlist-rss - web_server_dashboard - webhooks - blacklist-subnets - chromecast-music-mp - Sync v3 - livetv-platform-specific - nonAnonymousAccount - parental-controls - Subtitles on Demand - ultrablur - web-desktop-gracenote-banner type: string paymentService: description: Payment service used for your Plex Pass subscription type: - string - 'null' plan: description: Name of Plex Pass subscription plan type: - string - 'null' status: description: String representation of subscriptionActive type: string enum: - Inactive - Active example: Inactive x-speakeasy-unknown-values: allow subscribedAt: description: Date the account subscribed to Plex Pass type: - string - 'null' example: "2021-04-12T18:21:12Z" thumb: description: URL of the account thumbnail type: string format: uri example: https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 twoFactorEnabled: description: If two-factor authentication is enabled type: boolean default: false username: description: The account username type: string example: Username uuid: description: The account UUID type: string example: dae343c1f45beb4f required: - authToken - email - friendlyName - hasPassword - id - joinedAt - title - twoFactorEnabled - username - uuid x-speakeasy-unknown-fields: true UserProfile: title: UserProfile type: object example: autoSelectAudio: true properties: autoSelectAudio: description: If the account has automatically select audio and subtitle tracks enabled type: boolean default: true example: true autoSelectSubtitle: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 default: 0 example: 1 x-speakeasy-enums: - MANUALLY_SELECTED - SHOWN_WITH_FOREIGN_AUDIO - ALWAYS_ENABLED - description: The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) defaultAudioAccessibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 default: 0 example: 0 x-speakeasy-enums: - PREFER_NON_ACCESSIBILITY - PREFER_ACCESSIBILITY - ONLY_ACCESSIBILITY - ONLY_NON_ACCESSIBILITY - description: The audio accessibility mode (0 = Prefer non-accessibility audio, 1 = Prefer accessibility audio, 2 = Only show accessibility audio, 3 = Only show non-accessibility audio) defaultAudioLanguage: description: The preferred audio language for the account type: - string - 'null' example: ja defaultAudioLanguages: description: The preferred audio languages for the account type: - array - 'null' example: null items: type: string defaultSubtitleAccessibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 default: 0 example: 1 x-speakeasy-enums: - PREFER_NON_SDH - PREFER_SDH - ONLY_SDH - ONLY_NON_SDH - description: The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) defaultSubtitleForced: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 default: 0 example: 1 x-speakeasy-enums: - PREFER_NON_FORCED - PREFER_FORCED - ONLY_FORCED - ONLY_NON_FORCED - description: The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) defaultSubtitleLanguage: description: The preferred subtitle language for the account type: - string - 'null' example: en defaultSubtitleLanguages: description: The preferred subtitle languages for the account type: - array - 'null' example: null items: type: string mediaReviewsLanguages: description: The languages for media reviews visibility type: - array - 'null' example: null items: type: string mediaReviewsVisibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 default: 0 example: 1 x-speakeasy-enums: - NO_ONE - CRITICS_ONLY - PLEX_USERS_ONLY - PLEX_USERS_AND_CRITICS - description: Whether or not the account has media reviews visibility enabled watchedIndicator: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 default: 0 example: 1 x-speakeasy-enums: - NONE - MOVIES_AND_TV_SHOWS - MOVIES - TV_SHOWS - description: Whether or not media watched indicators are enabled (little orange dot on media) required: - autoSelectAudio - defaultAudioLanguage - defaultSubtitleLanguage - autoSelectSubtitle - defaultSubtitleAccessibility - defaultSubtitleForced - watchedIndicator - mediaReviewsVisibility WebhookPayload: description: Payload delivered by Plex to configured webhook URLs. type: object example: Account: title: string value id: 1 thumb: string value event: media.play Metadata: {} owner: true Player: title: string value local: true publicAddress: string value uuid: string value Server: title: string value uuid: string value user: true properties: Account: type: object properties: title: type: string example: Plex User id: type: integer example: 1 thumb: type: string example: https://plex.tv/users/1/thumb event: description: Event type that triggered the webhook. type: string enum: - media.play - media.pause - media.resume - media.stop - media.scrobble - media.rate - library.new - library.on.deck example: media.play Metadata: description: The media item associated with the event. Shape varies by event type. type: object owner: type: boolean example: true Player: type: object properties: title: type: string example: Chrome local: type: boolean example: true publicAddress: type: string example: 192.168.1.100 uuid: type: string example: player-uuid-123 Server: type: object properties: title: type: string example: My Server uuid: type: string example: 5d776d057ae4e7001f65e7d0 user: type: boolean example: true x-speakeasy-retries: backoff: exponent: 2 initialInterval: 1000 maxElapsedTime: 300000 maxInterval: 30000 retryConnectionErrors: true statusCodes: - '429' strategy: backoff