openapi: 3.1.1 info: title: Plex Media Server version: 1.1.1 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: protocol: description: The network protocol to use. Typically (`http` or `https`) default: http host: description: "The Host of the PMS.\nIf using on a local network, this is the internal IP address of the server hosting the PMS.\nIf using on an external network, this is the external IP address for your network, and requires port forwarding.\nIf using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding. \n" default: localhost port: description: "The Port number configured on the PMS. Typically (`32400`). \nIf using a reverse proxy, this would be the port number configured on the proxy.\n" default: '32400' - 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: 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. - name: Download Queue description: API Operations against the Download Queue - 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\nA 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.\nPlay 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. \nYou 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.\nAll 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.\nThe 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: Playlist description: Media playlists that can be created and played back - 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. - 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. x-tagGroups: - name: General tags: - General - Library - Library Playlists - Library Collections - Status - Activities - Updater - Butler - Events - Log - Preferences - Download Queue - UltraBlur - Transcoder - name: Playback & Sessions tags: - Status - Timeline - Play Queue - Transcoder - name: Media Provider tags: - Provider - Content - Hubs - Search - Rate - Playlist - Play Queue - Timeline - name: DVR tags: - DVRs - Devices - EPG - Subscriptions - Live TV paths: /: get: summary: Get PMS info operationId: getServerInfo description: Information about this PMS setup and configuration tags: - General parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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' /:/eventsource/notifications: get: summary: Connect to Eventsource operationId: getNotifications description: Connect to the event source to get a stream of events tags: - 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: format: binary type: string /:/prefs: get: summary: Get all preferences operationId: getAllPreferences description: Get the list of all preferences tags: - Preferences responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithSettings' put: summary: Set preferences operationId: setPreferences description: Set a set of preferences in query parameters tags: - 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: prefs in: query required: true schema: type: object example: FriendlyName: My Server ScheduledLibraryUpdateInterval: 3600 sendCrashReports: 1 responses: '200': $ref: '#/components/responses/200' '400': description: Attempt to set a preferences that doesn't exist content: text/html: {} '403': description: Attempt to set a preferences that doesn't exist content: text/html: {} /:/prefs/get: get: summary: Get a preferences operationId: getPreference description: Get a single preference and value tags: - 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: id description: The preference to fetch in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithSettings' '404': description: No preference with the provided name found. content: text/html: {} /:/rate: put: summary: Rate an item operationId: setRating description: |- Set the rating on an item. This API does respond to the GET verb but applications should use PUT tags: - Rate parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: maximum: 10 minimum: 0 type: number - 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' '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: {} '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: {} /:/scrobble: put: summary: Mark an item as played operationId: markPlayed 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 tags: - 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: 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: The URI of the item to mark as played. See intro for description of the URIs in: query required: false schema: type: string responses: '200': $ref: '#/components/responses/200' '400': description: Bad Request. Can occur when parameters are of the wrong type, or missing content: text/html: {} '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: {} /:/timeline: post: summary: Report media timeline operationId: report 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). tags: - 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: 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: 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/ServerConfiguration' - properties: Bandwidths: description: A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth properties: Bandwidth: items: 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 type: object type: array type: object 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 type: object type: object '400': $ref: '#/components/responses/400' /:/unscrobble: put: summary: Mark an item as unplayed operationId: unscrobble 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 tags: - 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: 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: The URI of the item to mark as played. See intro for description of the URIs in: query required: false schema: type: string responses: '200': $ref: '#/components/responses/200' '400': description: Bad Request. Can occur when parameters are of the wrong type, or missing content: text/html: {} '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: {} /:/websocket/notifications: get: summary: Connect to WebSocket operationId: connectWebSocket description: Connect to the web socket to get a stream of events tags: - 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: format: binary type: string /activities: get: summary: Get all activities operationId: listActivities description: List all activities on the server. Admins can see all activities but other users can only see their own tags: - Activities responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - properties: Activity: items: properties: cancellable: description: Indicates whether this activity can be cancelled type: boolean Context: description: An object with additional values additionalProperties: true type: object progress: description: A progress percentage. A value of -1 means the progress is indeterminate maximum: 100 minimum: -1 type: number Response: description: An object with the response to the async opperation additionalProperties: true type: object subtitle: description: A user-friendly sub-title for this activity type: string title: description: A user-friendly title for this activity type: string type: description: The type of activity type: string userID: description: The user this activity belongs to type: integer uuid: description: The ID of the activity type: string type: object type: array type: object type: object /butler: delete: summary: Stop all Butler tasks operationId: stopTasks description: This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. tags: - Butler security: - token: - admin responses: '200': $ref: '#/components/responses/200' get: summary: Get all Butler tasks operationId: getTasks description: | Get the list of butler tasks and their scheduling tags: - Butler security: - token: - admin responses: '200': description: Butler tasks content: application/json: schema: properties: ButlerTasks: properties: ButlerTask: items: properties: 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 title: description: A user-friendly title of the task type: string type: object type: array type: object type: object post: summary: Start all Butler tasks operationId: startTasks 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. tags: - Butler security: - token: - admin responses: '200': $ref: '#/components/responses/200' /downloadQueue: post: summary: Create download queue operationId: createDownloadQueue 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. tags: - Download Queue responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: DownloadQueue: items: 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 enum: - deciding - waiting - processing - done - error type: string type: object type: array type: object /hubs: get: summary: Get global hubs operationId: getAllHubs description: Get the global hubs in this PMS tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: $ref: '#/components/schemas/Hub' type: array type: object type: object /hubs/continueWatching: get: summary: Get the continue watching hub operationId: getContinueWatching description: Get the global continue watching hub tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: $ref: '#/components/schemas/Hub' type: array type: object type: object /hubs/items: get: summary: Get a hub's items operationId: getHubItems description: Get the items within a single hub specified by identifier tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: properties: MediaContainer: $ref: '#/components/schemas/MediaContainer' type: object '404': description: The specified hub could not be found content: text/html: {} /hubs/promoted: get: summary: Get the hubs which are promoted operationId: getPromotedHubs description: Get the global hubs which are promoted (should be displayed on the home screen) tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: $ref: '#/components/schemas/Hub' type: array type: object type: object /hubs/search: get: summary: Search Hub operationId: searchHubs 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. tags: - Search parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 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/Hub' type: array type: object type: object '400': description: A required parameter was not given, the wrong type, or wrong value content: text/html: {} '404': description: Search restrictions result in no possible items found (such as searching no sections) content: text/html: {} /hubs/search/voice: get: summary: Voice Search Hub operationId: voiceSearchHubs 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. tags: - Search parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 - $ref: '#/components/parameters/type' - name: limit description: The number of items to return per hub. 3 if not specified in: query schema: type: integer 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/Hub' type: array type: object type: object '400': description: A required parameter was not given, the wrong type, or wrong value content: text/html: {} /identity: get: summary: Get PMS identity operationId: getIdentity description: Get details about this PMS's identity tags: - General security: - {} responses: '200': description: OK content: application/json: schema: properties: MediaContainer: 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 type: object type: object /library/all: get: summary: Get all items in library operationId: getLibraryItems description: Request all metadata items according to a query. tags: - 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/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' /library/caches: delete: summary: Delete library caches operationId: deleteCaches description: Delete the hub caches so they are recomputed on next request tags: - Library security: - token: - admin responses: '200': $ref: '#/components/responses/200' /library/clean/bundles: put: summary: Clean bundles operationId: cleanBundles description: Clean out any now unused bundles. Bundles can become unused when media is deleted tags: - Library security: - token: - admin responses: '200': $ref: '#/components/responses/200' /library/collections: post: summary: Create collection operationId: createCollection description: Create a collection in the library tags: - Collections parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 where this collection will be created in: query required: true schema: type: string - $ref: '#/components/parameters/title' - $ref: '#/components/parameters/smart' - name: uri description: The URI for processing the smart collection. Required for a smart collection in: query schema: type: string - $ref: '#/components/parameters/type' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithMetadata' '400': description: The uri is missing for a smart collection or the section could not be found content: text/html: {} /library/file: post: summary: Ingest a transient item operationId: ingestTransientItem 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. tags: - 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" - 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' /library/matches: get: summary: Get library matches operationId: getLibraryMatches 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 tags: - 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/type' - name: includeFullMetadata in: query schema: 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. $ref: "#/components/schemas/BoolInt" - name: includeAncestorMetadata in: query schema: description: Whether or not to include metadata for the item's ancestor (e.g. show and season data for an episode). $ref: "#/components/schemas/BoolInt" - name: includeAlternateMetadataSources in: query schema: description: Whether or not to return all sources for each metadata field, which results in a different structure being passed back. $ref: "#/components/schemas/BoolInt" - name: guid description: Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. in: query schema: type: string - $ref: '#/components/parameters/title' - 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' /library/optimize: put: summary: Optimize the Database operationId: optimizeDatabase description: Initiate optimize on the database. tags: - 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: 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' /library/randomArtwork: get: summary: Get random artwork operationId: getRandomArtwork 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. tags: - 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" - 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' /library/sections/all: get: summary: Get library sections (main Media Provider Only) operationId: getSections 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). tags: - Library 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: allowSync: $ref: '#/components/schemas/AllowSync' Directory: items: $ref: '#/components/schemas/LibrarySection' type: array title1: description: Typically just "Plex Library" type: string type: object type: object post: summary: Add a library section operationId: addSection description: Add a new library section to the server tags: - 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: 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 - 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' '400': description: Section cannot be created due to bad parameters in request content: text/html: {} /library/sections/all/refresh: delete: summary: Stop refresh operationId: stopAllRefreshes description: Stop all refreshes across all sections tags: - Library security: - token: - admin responses: '200': $ref: '#/components/responses/LibrarySections' /library/sections/prefs: get: summary: Get section prefs operationId: getSectionsPrefs description: Get a section's preferences for a metadata type tags: - 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: type description: The metadata type in: query required: true schema: type: integer - name: agent description: The metadata agent in use in: query schema: type: string responses: '200': $ref: '#/components/responses/LibrarySections' '400': description: type not provided or not an integer content: text/html: {} /library/sections/refresh: post: summary: Refresh all sections operationId: refreshSectionsMetadata description: Tell PMS to refresh all section metadata tags: - 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: force description: Force refresh of metadata in: query schema: type: boolean responses: '200': $ref: '#/components/responses/200' '503': description: Server cannot refresh a music library when not signed in content: text/html: {} /library/tags: get: summary: Get all library tags of a type operationId: getTags description: Get all library tags of a type tags: - 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/type' responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: 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 type: object type: array type: object type: object /livetv/dvrs: get: summary: Get DVRs operationId: listDVRs description: Get the list of all available DVRs tags: - DVRs 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object post: summary: Create a DVR operationId: createDVR description: Creation of a DVR, after creation of a devcie and a lineup is selected tags: - DVRs 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' /livetv/epg/channelmap: get: summary: Compute the best channel map operationId: computeChannelMap description: Compute the best channel map, given device and lineup tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: ChannelMapping: items: 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 type: object type: array type: object type: object '404': description: No device or provider with the identifier was found content: text/html: {} '500': description: Failed to compute channel map content: text/html: {} /livetv/epg/channels: get: summary: Get channels for a lineup operationId: getChannels description: Get channels for a lineup within an EPG provider tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Channel: items: $ref: '#/components/schemas/Channel' type: array type: object type: object '404': description: No provider with the identifier was found content: text/html: {} /livetv/epg/countries: get: summary: Get all countries operationId: getCountries description: This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute tags: - EPG 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Country: items: properties: code: description: Three letter code type: string example: 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`. enum: - 0 - 1 - 2 type: integer key: type: string language: description: Three letter language code type: string languageTitle: description: The title of the language type: string title: type: string type: type: string type: object type: array type: object type: object /livetv/epg/languages: get: summary: Get all languages operationId: getAllLanguages description: Returns a list of all possible languages for EPG data. tags: - EPG 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Language: items: properties: code: description: 3 letter language code type: string title: type: string type: object type: array type: object type: object /livetv/epg/lineup: get: summary: Compute the best lineup operationId: getLineup description: Compute the best lineup, given lineup group and device tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 '404': description: No device or provider with the identifier was found content: text/html: {} '500': description: Could not get device's channels content: text/html: {} /livetv/epg/lineupchannels: get: summary: Get the channels for mulitple lineups operationId: getLineupChannels description: Get the channels across multiple lineups tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Lineup: items: allOf: - $ref: '#/components/schemas/Lineup' - properties: Channel: items: $ref: '#/components/schemas/Channel' type: array type: object type: array type: object type: object '404': description: No provider with the identifier was found content: text/html: {} /livetv/sessions: get: summary: Get all sessions operationId: getSessions description: Get all livetv sessions and metadata tags: - Live TV 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' /log: post: summary: Logging a multi-line message to the Plex Media Server log operationId: writeLog 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. tags: - Log security: - token: - admin requestBody: required: true description: Line separated list of log items content: text/plain: {} responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' put: summary: Logging a single-line message to the Plex Media Server log operationId: writeMessage 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 tags: - Log 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' /log/networked: post: summary: Enabling Papertrail operationId: enablePapertrail 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 tags: - Log 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' '403': description: User doesn't have permission content: text/html: {} /media/grabbers: get: summary: Get available grabbers operationId: getAvailableGrabbers description: Get available grabbers visible to the server tags: - Devices parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: MediaGrabber: items: properties: identifier: type: string protocol: type: string title: type: string type: object type: array type: object type: object /media/grabbers/devices: get: summary: Get all devices operationId: listDevices description: Get the list of all devices present tags: - Devices 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' post: summary: Add a device operationId: addDevice description: This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. tags: - 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" - 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' '400': $ref: '#/components/responses/400' /media/grabbers/devices/discover: post: summary: Tell grabbers to discover devices operationId: discoverDevices description: Tell grabbers to discover devices tags: - Devices security: - token: - admin responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithDevice' /media/providers: get: summary: Get the list of available media providers operationId: listProviders 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. tags: - Provider responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/ServerConfiguration' - properties: Feature: items: properties: Directory: items: $ref: '#/components/schemas/Directory' type: array key: type: string type: type: string type: object type: array identifier: description: A unique identifier for the provider, e.g. `com.plexapp.plugins.library`. type: string protocols: description: |- A comma-separated list of default protocols for the provider, which can be: - `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. type: string title: description: The title of the provider. type: string types: description: This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`). type: string type: object type: object post: summary: Add a media provider operationId: addProvider 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. tags: - 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: url description: The URL of the media provider to add. in: query required: true schema: type: string responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' /media/providers/refresh: post: summary: Refresh media providers operationId: refreshProviders description: Refresh all known media providers. This is useful in case a provider has updated features. tags: - Provider responses: '200': $ref: '#/components/responses/200' /media/subscriptions: get: summary: Get all subscriptions operationId: getAllSubscriptions description: Get all subscriptions and potentially the grabs too tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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" 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' '403': description: User cannot access DVR on this server content: text/html: {} post: summary: Create a subscription operationId: createSubscription description: Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: MediaSubscription: items: $ref: '#/components/schemas/MediaSubscription' type: array type: object type: object '400': $ref: '#/components/responses/400' '403': description: User cannot access DVR on this server content: text/html: {} '409': description: An subscription with the same parameters already exists content: text/html: {} /media/subscriptions/process: post: summary: Process all subscriptions operationId: processSubscriptions description: Process all subscriptions asynchronously tags: - Subscriptions responses: '200': description: OK headers: X-Plex-Activity: description: The activity of the process schema: type: string content: text/html: {} '403': description: User cannot access DVR on this server content: text/html: {} /media/subscriptions/scheduled: get: summary: Get all scheduled recordings operationId: getScheduledRecordings description: Get all scheduled recordings across all subscriptions tags: - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: MediaGrabOperation: items: $ref: '#/components/schemas/MediaGrabOperation' type: array type: object type: object '403': description: User cannot access DVR on this server content: text/html: {} /media/subscriptions/template: get: summary: Get the subscription template operationId: getTemplate description: Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: SubscriptionTemplate: items: properties: MediaSubscription: items: allOf: - $ref: '#/components/schemas/MediaSubscription' - properties: 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 title: description: The title of this subscription type example: This Episode type: string type: description: Metadata type number type: integer type: object type: array type: object type: array type: object type: object '403': description: User cannot access DVR on this server content: text/html: {} /photo/:/transcode: get: summary: Transcode an image operationId: transcodeImage description: Transcode an image, possibly changing format or size tags: - Transcoder parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: maximum: 127 minimum: -1 type: integer - 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: maximum: 100 minimum: 0 type: integer - name: opacity description: Render the image at the specified opacity percentage. Defaults to 100 in: query required: false schema: maximum: 100 minimum: 0 type: integer - 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: format: binary type: string image/png: schema: format: binary type: string image/x-portable-pixmap: schema: format: binary type: string '400': $ref: '#/components/responses/400' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' /playlists: get: summary: List playlists operationId: listPlaylists 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. tags: - 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: playlistType description: Limit to a type of playlist in: query schema: type: string enum: - audio - video - photo - $ref: '#/components/parameters/smart' 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' post: summary: Create a Playlist operationId: createPlaylist description: Create a new playlist. By default the playlist is blank. tags: - Library 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: 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' '400': $ref: '#/components/responses/400' /playlists/upload: post: summary: Upload operationId: uploadPlaylist 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. tags: - Library Playlists 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' '403': $ref: '#/components/responses/200' '500': description: The playlist could not be imported content: text/html: {} /playQueues: post: summary: Create a play queue operationId: createPlayQueue 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 tags: - 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: 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 - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - 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 type: object type: object '400': $ref: '#/components/responses/400' /security/resources: get: summary: Get Source Connection Information operationId: getSourceConnectionInformation 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. tags: - General parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Device: properties: accessToken: type: string clientIdentifier: type: string Connection: items: 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 type: object type: array name: type: string type: object type: object type: object '400': description: A query param is missing or the wrong value content: text/html: {} '403': description: Invalid or no token provided or a transient token could not be created content: text/html: {} /security/token: post: summary: Get Transient Tokens operationId: getTransientToken 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 tags: - General parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: token: description: The transient token type: string type: object type: object '400': description: A query param is missing or the wrong value content: text/html: {} '403': description: Invalid or no token provided or a transient token could not be created content: text/html: {} /services/ultrablur/colors: get: summary: Get UltraBlur Colors operationId: getColors description: Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. tags: - UltraBlur parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: UltraBlurColors: items: 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 type: object type: array type: object type: object '404': description: The image url could not be found. content: text/html: {} '500': description: The server was unable to successfully extract the UltraBlur colors. content: text/html: {} /services/ultrablur/image: get: summary: Get UltraBlur Image operationId: getImage description: Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. tags: - UltraBlur parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: maximum: 3840 minimum: 320 type: integer example: 1920 - name: height description: Height in pixels for the image. in: query schema: maximum: 2160 minimum: 240 type: integer 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: format: binary type: string '400': description: Requested width and height parameters are out of bounds (maximum 3840 x 2160) content: text/html: {} /status/sessions: get: summary: List Sessions operationId: listSessions description: List all current playbacks on this server tags: - Status 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Metadata: items: allOf: - properties: Player: $ref: '#/components/schemas/Player' Session: $ref: '#/components/schemas/Session' User: $ref: '#/components/schemas/User' type: object - $ref: '#/components/schemas/Metadata' type: array type: object type: object /status/sessions/background: get: summary: Get background tasks operationId: getBackgroundTasks description: Get the list of all background tasks tags: - Status security: - token: - admin responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: TranscodeJob: items: properties: generatorID: type: integer key: type: string progress: maximum: 100 minimum: 0 type: number 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 title: type: string type: enum: - transcode type: string type: object type: array type: object type: object /status/sessions/history/all: get: summary: List Playback History operationId: listPlaybackHistory 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. tags: - 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" - 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 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Metadata: items: properties: accountID: description: The account id of this playback type: integer deviceID: description: The device id which played the item type: integer historyKey: description: The key for this individual history item type: string 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 ratingKey: description: The rating key for the item played type: string thumb: description: The thumb of the item played type: string title: description: The title of the item played type: string type: description: The metadata type of the item played type: string viewedAt: description: The time when the item was played type: integer type: object type: array type: object type: object /status/sessions/terminate: post: summary: Terminate a session operationId: terminateSession description: Terminate a playback session kicking off the user tags: - Status 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' '401': description: Server does not have the feature enabled content: text/html: {} '403': description: sessionId is empty content: text/html: {} '404': description: Session not found content: text/html: {} /updater/apply: put: summary: Applying updates operationId: applyUpdates 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. tags: - Updater 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: {} '400': description: This system cannot install updates content: text/html: {} '500': description: The update process failed to start content: text/html: {} /updater/check: put: summary: Checking for updates operationId: checkUpdates description: Perform an update check and potentially download tags: - Updater 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' /updater/status: get: summary: Querying status of updates operationId: getUpdatesStatus description: Get the status of updating the server tags: - Updater security: - token: - admin responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - 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: items: 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 enum: - available - downloading - downloaded - installing - tonight - skipped - error - notify - done type: string version: description: The version available type: string type: object type: array status: description: The current error code (`0` means no error) type: integer type: object type: object /{transcodeType}/:/transcode/universal/decision: get: summary: Make a decision on media playback operationId: makeDecision description: Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. tags: - Transcoder parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: 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: minimum: 1 type: integer example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: maximum: 8 minimum: 1 type: integer 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: minimum: 0 type: integer 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: minimum: 0 type: integer 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: minimum: 1 type: integer 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: videoBitrate description: Target video bitrate (in kbps). in: query schema: minimum: 0 type: integer example: 12000 - name: videoQuality description: Target photo quality. in: query schema: maximum: 99 minimum: 0 type: integer example: 50 - name: videoResolution description: Target maximum video resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - 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' /{transcodeType}/:/transcode/universal/fallback: post: summary: Manually trigger a transcoder fallback operationId: triggerFallback description: 'Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw' tags: - Transcoder parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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' '404': description: Session ID does not exist content: text/html: {} '412': description: Transcode could not fallback content: text/html: {} '500': description: Transcode failed to fallback content: text/html: {} /{transcodeType}/:/transcode/universal/subtitles: get: summary: Transcode subtitles operationId: transcodeSubtitles description: Only transcode subtitle streams. tags: - Transcoder parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: 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: minimum: 1 type: integer example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: maximum: 8 minimum: 1 type: integer 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: minimum: 0 type: integer 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: minimum: 0 type: integer 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: minimum: 1 type: integer 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: videoBitrate description: Target video bitrate (in kbps). in: query schema: minimum: 0 type: integer example: 12000 - name: videoQuality description: Target photo quality. in: query schema: maximum: 99 minimum: 0 type: integer example: 50 - name: videoResolution description: Target maximum video resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - 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: example: "1\n00:00:02,499 --> 00:00:06,416\n[SERENE MUSIC]\n\n2\n00:00:11,791 --> 00:00:13,958\n[BROOK BABBLES] \n[FLY BUZZES]\n\n3\n00:00:16,166 --> 00:00:17,666\n[BIRD TWEETS]\n\n4\n00:00:17,666 --> 00:00:18,708\n[WINGS FLAP]\n\n5\n00:00:19,833 --> 00:00:20,374\n[BIRD TWEETS] \n[WINGS FLAP]\n\n6\n00:00:20,374 --> 00:00:21,041\n[THUD]\n\n7\n00:00:21,374 --> 00:00:22,249\n[THUD]\n\n8\n00:00:22,249 --> 00:00:23,083\n[SQUIRREL LAUGHS]\n\n9\n00:00:26,249 --> 00:00:27,541\n[SNORES]\n\n10\n00:00:29,416 --> 00:00:30,708\n[SNORES]\n\n11\n00:00:32,749 --> 00:00:34,041\n[BUNNY SNORES]\n\n12\n00:00:35,916 --> 00:00:37,249\n[BUNNY SNORES]\n" '400': $ref: '#/components/responses/400' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' /user: get: servers: - url: 'https://plex.tv/api/v2' tags: - Authentication summary: Get Token Details description: Get the User data from the provided X-Plex-Token operationId: getTokenDetails parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" security: - token: - admin responses: '200': description: Logged in user details content: application/json: schema: $ref: '#/components/schemas/UserPlexAccount' '400': description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' content: application/json: schema: x-speakeasy-name-override: BadRequest type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1000 message: type: string x-speakeasy-error-message: true example: X-Plex-Client-Identifier is missing status: type: integer format: int32 example: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: x-speakeasy-name-override: Unauthorized type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string x-speakeasy-error-message: true example: User could not be authenticated status: type: integer format: int32 example: 401 /users/signin: post: servers: - url: 'https://plex.tv/api/v2' security: [] tags: - Authentication summary: Get User Sign In Data description: Sign in user with username and password and return user data with Plex authentication token operationId: post-users-sign-in-data parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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/x-www-form-urlencoded: schema: type: object required: - login - password 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 description: Login credentials responses: '201': description: Returns the user account data with a valid auth token content: application/json: schema: allOf: - $ref: '#/components/schemas/UserPlexAccount' - type: object required: - pastSubscriptions - trials properties: pastSubscriptions: type: array items: title: PastSubscription type: object required: - id - mode - renewsAt - endsAt - canceled - gracePeriod - onHold - canReactivate - canUpgrade - canDowngrade - canConvert - type - transfer - state - billing properties: id: type: - string - 'null' mode: type: - string - 'null' renewsAt: oneOf: - $ref: '#/components/schemas/PlexDateTime' - type: 'null' endsAt: oneOf: - $ref: '#/components/schemas/PlexDateTime' - type: 'null' canceled: type: boolean example: false default: false gracePeriod: type: boolean example: false default: false onHold: type: boolean example: false default: false canReactivate: type: boolean example: false default: false canUpgrade: type: boolean example: false default: false canDowngrade: type: boolean example: false default: false canConvert: type: boolean example: false default: false type: type: string example: plexpass transfer: type: - string - 'null' state: example: ended x-speakeasy-unknown-values: allow enum: - ended billing: type: object required: - internalPaymentMethod - paymentMethodId properties: internalPaymentMethod: type: object paymentMethodId: type: - integer - 'null' trials: type: array items: type: object '400': description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' content: application/json: schema: x-speakeasy-name-override: BadRequest type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1000 message: type: string x-speakeasy-error-message: true example: X-Plex-Client-Identifier is missing status: type: integer format: int32 example: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: x-speakeasy-name-override: Unauthorized type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string x-speakeasy-error-message: true example: User could not be authenticated status: type: integer format: int32 example: 401 /users: get: servers: - url: 'https://plex.tv/api' tags: - Users security: - token: - admin summary: Get list of all connected users description: Get list of all users that are friends and have library access with the provided Plex authentication token operationId: get-users parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: type: object description: Container holding user and server details. required: - friendlyName - identifier - machineIdentifier - totalSize - size - User properties: friendlyName: type: string description: The friendly name of the Plex instance. example: myPlex identifier: type: string example: com.plexapp.plugins.myplex machineIdentifier: type: string description: Unique Machine identifier of the Plex server. example: 3dff4c4da3b1229a649aa574a9e2b419a684a20e totalSize: type: integer description: Total number of users. example: 30 size: type: integer description: Number of users in the current response. example: 30 User: type: array description: List of users with access to the Plex server. items: type: object required: - id - title - username - email - thumb - protected - home - allowTuners - allowSync - allowCameraUpload - allowChannels - allowSubtitleAdmin - restricted - Server properties: id: type: integer description: User's unique ID. example: 22526914 title: type: string description: User's display name. example: Plex User username: type: string description: User's username. example: zgfuc7krcqfimrmb9lsl5j email: type: string description: User's email address. example: zgfuc7krcqfimrmb9lsl5j@protonmail.com recommendationsPlaylistId: description: ID of the user's recommendation playlist. type: - 'null' - string example: '' thumb: type: string description: URL to the user's avatar image. example: 'https://plex.tv/users/3346028014e93acd/avatar?c=1731605021' protected: allOf: - description: Indicates whether the account is protected. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE home: allOf: - description: Indicates if the user is part of a home group. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE allowTuners: allOf: - description: Indicates if the user is allowed to use tuners. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE allowSync: allOf: - description: Indicates if the user is allowed to sync media. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE allowCameraUpload: allOf: - description: Indicates if the user is allowed to upload from a camera. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE allowChannels: allOf: - description: Indicates if the user has access to channels. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE allowSubtitleAdmin: allOf: - description: Indicates if the user can manage subtitles. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE filterAll: type: - 'null' - string description: Filters applied for all content. example: '' filterMovies: type: - 'null' - string description: Filters applied for movies. example: '' filterMusic: type: - 'null' - string description: Filters applied for music. example: '' filterPhotos: type: - 'null' - string description: Filters applied for photos. example: '' filterTelevision: type: string description: Filters applied for television. example: '' restricted: allOf: - description: Indicates if the user has restricted access. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE Server: type: array description: List of servers owned by the user. items: type: object required: - id - serverId - machineIdentifier - name - lastSeenAt - numLibraries - allLibraries - owned - pending properties: id: type: integer description: Unique ID of the server of the connected user example: 907759180 serverId: type: integer description: ID of the actual Plex server. example: 9999999 machineIdentifier: type: string description: Machine identifier of the Plex server. example: fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 name: type: string description: Name of the Plex server of the connected user. example: ConnectedUserFlix lastSeenAt: $ref: '#/components/schemas/PlexDateTime' numLibraries: type: integer description: Number of libraries in the server this user has access to. example: 16 allLibraries: allOf: - description: Indicates if the user has access to all libraries. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE owned: allOf: - description: Indicates if the user owns the server. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE pending: allOf: - description: Indicates if the server is pending approval. - type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - DISABLE - ENABLE '400': description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' content: application/json: schema: x-speakeasy-name-override: BadRequest type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1000 message: type: string x-speakeasy-error-message: true example: X-Plex-Client-Identifier is missing status: type: integer format: int32 example: 400 '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: x-speakeasy-name-override: Unauthorized type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string x-speakeasy-error-message: true example: User could not be authenticated status: type: integer format: int32 example: 401 /resources: get: servers: - url: 'https://plex.tv/api/v2' tags: - Plex security: - token: - admin summary: Get Server Resources description: Get Plex server access tokens and server connections operationId: get-server-resources parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - name: includeHttps in: query description: Include Https entries in the results schema: allOf: - $ref: "#/components/schemas/BoolInt" - default: 0 example: 1 - name: includeRelay in: query description: | Include Relay addresses in the results E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 schema: allOf: - $ref: "#/components/schemas/BoolInt" - default: 0 example: 1 - name: includeIPv6 in: query description: Include IPv6 entries in the results schema: allOf: - $ref: "#/components/schemas/BoolInt" - 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' '400': $ref: '#/components/responses/400' '401': description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. content: application/json: schema: x-speakeasy-name-override: Unauthorized type: object properties: errors: type: array items: type: object properties: code: type: integer format: int32 example: 1001 message: type: string x-speakeasy-error-message: true example: User could not be authenticated status: type: integer format: int32 example: 401 /activities/{activityId}: delete: summary: Cancel a running activity operationId: cancelActivity description: Cancel a running activity. Admins can cancel all activities but other users can only cancel their own tags: - Activities 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' '400': description: Activity is not cancellable content: text/html: {} '404': description: No activity with the provided id is found content: text/html: {} /butler/{butlerTask}: delete: summary: Stop a single Butler task operationId: stopTask description: | This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists tags: - Butler 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' '404': description: No task with this name was found or no task with this name was running content: text/html: {} post: summary: Start a single Butler task operationId: startTask description: | This endpoint will attempt to start a specific Butler task by name. tags: - Butler 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: {} '202': description: Task is already running content: text/html: {} '404': description: No task with this name was found content: text/html: {} /downloadQueue/{queueId}: get: summary: Get a download queue operationId: getDownloadQueue description: | Available: 0.2.0 Get a download queue by its id tags: - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: DownloadQueue: items: 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 enum: - deciding - waiting - processing - done - error type: string type: object type: array type: object /downloadQueue/{queueId}/add: post: summary: Add to download queue operationId: addDownloadQueueItems description: | Available: 0.2.0 Add items to the download queue tags: - 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: keys description: Keys to add in: query required: true explode: false schema: type: array items: type: string example: - /library/metadata/3 - /library/metadata/6 - $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' responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: AddedQueueItems: items: 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 type: object type: array type: object /downloadQueue/{queueId}/items: get: summary: Get download queue items operationId: listDownloadQueueItems description: | Available: 0.2.0 Get items from a download queue tags: - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: DownloadQueueItem: items: properties: DecisionResult: 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 type: object 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 enum: - deciding - waiting - processing - available - error - expired type: string 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' type: object type: array type: object /hubs/metadata/{metadataId}: get: summary: Get hubs for section by metadata item operationId: getMetadataHubs description: Get the hubs for a section by metadata item. Currently only for music sections tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - $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" responses: '200': $ref: '#/components/responses/responses-200' '400': description: No metadata with that id or permission is denied content: text/html: {} /hubs/metadata/{metadataId}/postplay: get: summary: Get postplay hubs operationId: getPostplayHubs description: Get the hubs for a metadata to be displayed in post play tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - $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" responses: '200': $ref: '#/components/responses/responses-200' '400': description: No metadata with that id or permission is denied content: text/html: {} /hubs/metadata/{metadataId}/related: get: summary: Get related hubs operationId: getRelatedHubs description: Get the hubs for a metadata related to the provided metadata item tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/X-Plex-Model" - $ref: "#/components/parameters/X-Plex-Device-Vendor" - $ref: "#/components/parameters/X-Plex-Device-Name" - $ref: "#/components/parameters/X-Plex-Marketplace" - name: metadataId description: The metadata ID for the hubs to fetch in: path required: true schema: type: integer - $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" responses: '200': $ref: '#/components/responses/responses-200' '400': description: No metadata with that id or permission is denied content: text/html: {} /hubs/sections/{sectionId}: get: summary: Get section hubs operationId: getSectionHubs description: Get the hubs for a single section tags: - Hubs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 fetch in: path required: true schema: type: integer - $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" 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: $ref: '#/components/schemas/Hub' type: array type: object type: object '400': description: No section with that id or permission is denied content: text/html: {} /hubs/sections/{sectionId}/manage: delete: summary: Reset hubs to defaults operationId: resetSectionDefaults description: Reset hubs for this section to defaults and delete custom hubs tags: - 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' '403': $ref: '#/components/responses/403' '404': description: Section id was not found content: text/html: {} get: summary: Get hubs operationId: listHubs description: Get the list of hubs including both built-in and custom tags: - 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: 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: properties: 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 enum: - all - none - admin - shared type: string 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 enum: - all - none - admin - shared type: string title: description: The title of this hub type: string type: object type: array type: object type: object '403': $ref: '#/components/responses/403' '404': description: Section id was not found content: text/html: {} post: summary: Create a custom hub operationId: createCustomHub description: Create a custom hub based on a metadata item tags: - 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: 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' '400': description: A hub could not be created with this metadata item content: text/html: {} '403': $ref: '#/components/responses/403' '404': description: Section id or metadata item was not found content: text/html: {} /hubs/sections/{sectionId}/manage/move: put: summary: Move Hub operationId: moveHub description: Changed the ordering of a hub among others hubs tags: - 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' '403': $ref: '#/components/responses/403' '404': description: Section id was not found content: text/html: {} /library/collections/{collectionId}/items: get: summary: Get items in a collection operationId: getCollectionItems description: Get items in a collection. Note if this collection contains more than 100 items, paging must be used. tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' '404': description: Collection not found content: text/html: {} put: summary: Add items to a collection operationId: addCollectionItems description: Add items to a collection by uri tags: - Library Collections 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' '404': description: Collection not found content: text/html: {} /library/metadata/{ids}: delete: summary: Delete a metadata item operationId: deleteMetadataItem description: Delete a single metadata item from the library, deleting media as well tags: - 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 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' '400': description: Media items could not be deleted content: text/html: {} get: summary: Get a metadata item operationId: getMetadataItem description: Get one or more metadata items. tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 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" 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' put: summary: Edit a metadata item operationId: editMetadataItem description: Edit metadata items setting fields tags: - 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 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' '400': description: Media items could not be deleted content: text/html: {} /library/metadata/{ids}/addetect: put: summary: Ad-detect an item operationId: detectAds description: Start the detection of ads in a metadata item tags: - 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 in: path required: true schema: type: string responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/allLeaves: get: summary: Get the leaves of an item operationId: getAllItemLeaves description: Get the leaves for a metadata item such as the episodes in a show tags: - 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" - name: 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' /library/metadata/{ids}/analyze: put: summary: Analyze an item operationId: analyzeMetadata description: Start the analysis of a metadata item tags: - 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 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' /library/metadata/{ids}/chapterThumbs: put: summary: Generate thumbs of chapters for an item operationId: generateThumbs description: Start the chapter thumb generation for an item tags: - 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 in: path required: true schema: type: string - name: force in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/credits: put: summary: Credit detect a metadata item operationId: detectCredits description: Start credit detection on a metadata item tags: - 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 in: path required: true schema: type: string - name: force in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: manual in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/extras: get: summary: Get an item's extras operationId: getExtras description: Get the extras for a metadata item tags: - 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" - name: 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' post: summary: Add to an item's extras operationId: addExtras description: Add an extra to a metadata item tags: - 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" - name: 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 - $ref: '#/components/parameters/title' responses: '200': $ref: '#/components/responses/200' '404': description: Either the metadata item is not present or the extra could not be added content: text/html: {} /library/metadata/{ids}/file: get: summary: Get a file from a metadata or media bundle operationId: getFile description: Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) tags: - 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" - name: 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: format: binary type: string image/jpeg: schema: format: binary type: string /library/metadata/{ids}/index: put: summary: Start BIF generation of an item operationId: startBifGeneration description: Start the indexing (BIF generation) of an item tags: - 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 in: path required: true schema: type: string - name: force in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/intro: put: summary: Intro detect an item operationId: detectIntros description: Start the detection of intros in a metadata item tags: - 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 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' /library/metadata/{ids}/marker: post: summary: Create a marker operationId: createMarker description: Create a marker for this user on the metadata item tags: - 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" - name: 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 - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - additionalProperties: true properties: color: type: string endTimeOffset: type: integer id: type: integer startTimeOffset: type: integer title: type: string type: enum: - intro - commercial - bookmark - resume - credit type: string type: object type: object '400': description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset` content: text/html: {} /library/metadata/{ids}/match: put: summary: Match a metadata item operationId: matchItem description: Match a metadata item to a guid tags: - 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 in: path required: true schema: type: string - name: guid in: query schema: type: string - name: name in: query required: false schema: type: string - name: year in: query required: false schema: type: integer responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/matches: put: summary: Get metadata matches for an item operationId: listMatches description: Get the list of metadata matches for a metadata item tags: - 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 in: path required: true schema: type: string - name: title in: query schema: type: string - name: parentTitle in: query required: false schema: type: string - name: agent in: query required: false schema: type: string - name: language in: query required: false schema: type: string - name: year in: query required: false schema: type: integer - name: manual in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithMetadata' /library/metadata/{ids}/merge: put: summary: Merge a metadata item operationId: mergeItems description: Merge a metadata item with other items tags: - 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 in: path required: true schema: type: string - name: ids in: query explode: false schema: type: array items: type: string responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/nearest: get: summary: Get nearest tracks to metadata item operationId: listSonicallySimilar description: Get the nearest tracks, sonically, to the provided track tags: - 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" - name: ids in: path required: true schema: type: string - name: excludeParentID in: query required: false schema: type: integer - name: excludeGrandparentID in: query required: false schema: type: integer - name: limit in: query required: false schema: type: integer - name: maxDistance in: query required: false schema: type: number responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithMetadata' /library/metadata/{ids}/prefs: put: summary: Set metadata preferences operationId: setItemPreferences description: Set the preferences on a metadata item tags: - 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 in: path required: true schema: type: string - name: args in: query schema: type: object responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/refresh: put: summary: Refresh a metadata item operationId: refreshItemsMetadata description: Refresh a metadata item from the agent tags: - 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 in: path required: true schema: type: string - name: agent in: query required: false schema: type: string - name: markUpdated in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/related: get: summary: Get related items operationId: getRelatedItems description: Get a hub of related items to a metadata item tags: - 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" - name: ids in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Hub: items: $ref: '#/components/schemas/Hub' type: array type: object type: object /library/metadata/{ids}/similar: get: summary: Get similar items operationId: listSimilar description: Get a list of similar items to a metadata item tags: - 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" - name: ids in: path required: true schema: type: string - $ref: '#/components/parameters/count' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithMetadata' /library/metadata/{ids}/split: put: summary: Split a metadata item operationId: splitItem description: Split a metadata item into multiple items tags: - 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 in: path required: true schema: type: string responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/subtitles: get: summary: Add subtitles operationId: addSubtitles description: Add a subtitle to a metadata item tags: - 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 in: path required: true schema: type: string - name: title in: query required: false schema: type: string - name: language in: query required: false schema: type: string - name: mediaItemID 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 in: query required: false schema: type: string - name: forced in: query required: false schema: $ref: "#/components/schemas/BoolInt" - name: hearingImpaired in: query required: false schema: $ref: "#/components/schemas/BoolInt" responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/tree: get: summary: Get metadata items as a tree operationId: getItemTree description: Get a tree of metadata items, such as the seasons/episodes of a show tags: - 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" - name: ids in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithNestedMetadata' /library/metadata/{ids}/unmatch: put: summary: Unmatch a metadata item operationId: unmatch description: Unmatch a metadata item to info fetched from the agent tags: - 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 in: path required: true schema: type: string responses: '200': $ref: '#/components/responses/200' /library/metadata/{ids}/users/top: get: summary: Get metadata top users operationId: listTopUsers description: Get the list of users which have played this item starting with the most tags: - 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 in: path required: true schema: type: string responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Account: items: properties: globalViewCount: type: integer id: type: integer type: object type: array type: object type: object /library/metadata/{ids}/voiceActivity: put: summary: Detect voice activity operationId: detectVoiceActivity description: Start the detection of voice in a metadata item tags: - 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 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' /library/metadata/augmentations/{augmentationId}: get: summary: Get augmentation status operationId: getAugmentationStatus description: Get augmentation status and potentially wait for completion tags: - 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" - 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' '401': description: This augmentation is not owned by the requesting user content: text/html: {} '404': description: No augmentation found content: text/html: {} /library/parts/{partId}: put: summary: Set stream selection operationId: setStreamSelection description: Set which streams (audio/subtitle) are selected by this user tags: - 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" - 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' '400': description: One of the audio or subtitle streams does not belong to this part content: text/html: {} /library/people/{personId}: get: summary: Get person details operationId: getPerson description: Get details for a single actor. tags: - 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" - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: $ref: '#/components/schemas/Tag' type: array type: object type: object '404': $ref: '#/components/responses/404' /library/people/{personId}/media: get: summary: Get media for a person operationId: listPersonMedia description: Get all the media for a single actor. tags: - 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" - 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' '404': $ref: '#/components/responses/404' /library/sections/{sectionId}: delete: summary: Delete a library section operationId: deleteLibrarySection description: Delete a library section by id tags: - 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: 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' get: summary: Get a library section by id operationId: getLibraryDetails 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.' tags: - 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" - 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: 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: type: boolean 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 put: summary: Edit a library section operationId: editSection description: Edit a library section by id setting parameters tags: - 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: 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' '400': description: Section cannot be created due to bad parameters in request content: text/html: {} /library/sections/{sectionId}/albums: get: summary: Set section albums operationId: getAlbums description: Get all albums in a music section tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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-15' 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 /library/sections/{sectionId}/all: get: summary: Get items in the section operationId: listContent description: Get the items in a section, potentially filtering them tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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: includeMeta in: query description: | Adds the Meta object to the response schema: $ref: "#/components/schemas/BoolInt" - name: includeGuids in: query description: | Adds the Guid object to the response schema: $ref: "#/components/schemas/BoolInt" - name: sectionId description: The id of the section in: path required: true 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' put: summary: Set the fields of the filtered items operationId: updateItems 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 tags: - 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" - name: sectionId description: The id of the section in: path required: true schema: type: string - name: type in: query schema: type: string - 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' '400': description: The set of parameters are inconsistent or invalid values content: text/html: {} '404': description: A required item could not be found content: text/html: {} '409': description: Rename of a collection to a name that's already taken content: text/html: {} /library/sections/{sectionId}/allLeaves: get: summary: Set section leaves operationId: getAllLeaves description: Get all leaves in a section (such as episodes in a show section) tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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-17' 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 /library/sections/{sectionId}/analyze: put: summary: Analyze a section operationId: startAnalysis description: Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' /library/sections/{sectionId}/arts: get: summary: Set section artwork operationId: getArts description: Get artwork for a library section tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /library/sections/{sectionId}/autocomplete: get: summary: Get autocompletions for search operationId: autocomplete 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 tags: - 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" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: Item type in: query schema: type: integer - name: field.query description: The "field" stands in for any field, the value is a partial string for matching in: query schema: type: string - $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' '400': description: A paramater is either invalid or missing content: text/html: {} /library/sections/{sectionId}/categories: get: summary: Set section categories operationId: getCategories description: Get categories in a library section tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /library/sections/{sectionId}/cluster: get: summary: Set section clusters operationId: getCluster description: Get clusters in a library section (typically for photos) tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /library/sections/{sectionId}/collections: get: summary: Get collections in a section operationId: getCollections description: Get all collections in a section tags: - 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" - name: sectionId description: Section identifier in: path required: true schema: type: integer - $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' /library/sections/{sectionId}/common: get: summary: Get common fields for items operationId: getCommon 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 tags: - 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" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: type description: Item type in: query schema: type: integer - $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' '400': $ref: '#/components/responses/400' '404': $ref: '#/components/responses/404' /library/sections/{sectionId}/computePath: get: summary: Similar tracks to transition from one to another operationId: getSonicPath description: Get a list of audio tracks starting at one and ending at another which are similar across the path tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: 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 - $ref: '#/components/parameters/count' - 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' /library/sections/{sectionId}/emptyTrash: put: summary: Empty section trash operationId: emptyTrash description: Empty trash in the section, permanently deleting media/metadata for missing media tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' /library/sections/{sectionId}/filters: get: summary: Get section filters operationId: getSectionFilters description: Get common filters on a section tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: The filters on the section content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: $ref: '#/components/schemas/Directory' type: array type: object type: object /library/sections/{sectionId}/firstCharacters: get: summary: Get list of first characters operationId: getFirstCharacters description: Get list of first characters in this section tags: - 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" - 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 - name: sort description: The metadata type to filter on in: query schema: type: integer - $ref: '#/components/parameters/mediaQuery' responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: properties: key: type: string size: description: The number of items starting with this character type: integer title: type: string type: object type: array type: object type: object /library/sections/{sectionId}/indexes: delete: summary: Delete section indexes operationId: deleteIndexes description: Delete all the indexes in a section tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' /library/sections/{sectionId}/intros: delete: summary: Delete section intro markers operationId: deleteIntros description: Delete all the intro markers in a section tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' /library/sections/{sectionId}/location: get: summary: Get all folder locations operationId: getFolders description: Get all folder locations of the media in a section tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: properties: fastKey: type: string key: type: string title: type: string type: object type: array type: object type: object /library/sections/{sectionId}/moment: get: summary: Set section moments operationId: listMoments description: Get moments in a library section (typically for photos) tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /library/sections/{sectionId}/nearest: get: summary: The nearest audio tracks operationId: getSonicallySimilar description: Get the nearest audio tracks to a particular analysis tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 - 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: maximum: 50 minimum: 50 type: integer - 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' /library/sections/{sectionId}/prefs: get: summary: Get section prefs operationId: getSectionPreferences description: Get the prefs for a section by id and potentially overriding the agent tags: - 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" - name: sectionId description: Section identifier in: path required: true schema: type: integer - name: agent in: query schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithSettings' put: summary: Set section prefs operationId: setSectionPreferences description: Set the prefs for a section by id tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer - name: prefs in: query required: true schema: type: object example: enableCinemaTrailers: 1 hidden: 0 responses: '200': $ref: '#/components/responses/200' /library/sections/{sectionId}/refresh: delete: summary: Cancel section refresh operationId: cancelRefresh description: Cancel the refresh of a section tags: - 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: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' post: summary: Refresh section operationId: refreshSection description: Start a refresh of this section tags: - 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: 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' /library/sections/{sectionId}/sorts: get: summary: Get a section sorts operationId: getAvailableSorts description: Get the sort mechanisms available in a section tags: - 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" - name: sectionId description: Section identifier in: path required: true schema: type: integer responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Directory: items: $ref: '#/components/schemas/Sort' type: array type: object type: object /library/streams/{streamId}/levels: get: summary: Get loudness about a stream in json operationId: getStreamLevels description: The the loudness of a stream in db, one entry per 100ms tags: - 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" - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Level: items: properties: v: description: The level in db. type: number type: object type: array totalSamples: description: The total number of samples (as a string) type: string type: object type: object '403': $ref: '#/components/responses/responses-403' '404': $ref: '#/components/responses/responses-404' /library/streams/{streamId}/loudness: get: summary: Get loudness about a stream operationId: getStreamLoudness description: The the loudness of a stream in db, one number per line, one entry per 100ms tags: - 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" - 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: {} '404': description: The stream doesn't exist, or the loudness feature is not available on this PMS content: text/html: {} /livetv/dvrs/{dvrId}: delete: summary: Delete a single DVR operationId: deleteDVR description: Delete a single DVR by its id (key) tags: - DVRs 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' get: summary: Get a single DVR operationId: getDVR description: Get a single DVR by its id (key) tags: - DVRs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object /livetv/dvrs/{dvrId}/lineups: delete: summary: Delete a DVR Lineup operationId: deleteLineup description: Deletes a DVR device's lineup. tags: - DVRs 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object put: summary: Add a DVR Lineup operationId: addLineup description: Add a lineup to a DVR device's set of lineups. tags: - DVRs 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object /livetv/dvrs/{dvrId}/prefs: put: summary: Set DVR preferences operationId: setDVRPreferences description: Set DVR preferences by name avd value tags: - DVRs 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 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object /livetv/dvrs/{dvrId}/reloadGuide: delete: summary: Tell a DVR to stop reloading program guide operationId: stopDVRReload description: Tell a DVR to stop reloading program guide tags: - DVRs 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' post: summary: Tell a DVR to reload program guide operationId: reloadGuide description: Tell a DVR to reload program guide tags: - DVRs 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: {} /livetv/sessions/{sessionId}: get: summary: Get a single session operationId: getLiveTVSession description: Get a single livetv session and metadata tags: - Live 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: 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' /media/grabbers/devices/{deviceId}: delete: summary: Remove a device operationId: removeDevice description: Remove a devices by its id along with its channel mappings tags: - 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" - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: message: type: string status: type: integer type: object type: object '404': description: Device not found content: text/html: {} get: summary: Get device details operationId: getDeviceDetails description: Get a device's details by its id tags: - 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" - 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' '404': description: Device not found content: text/html: {} put: summary: Enable or disable a device operationId: modifyDevice description: Enable or disable a device by its id tags: - 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" - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: message: type: string status: type: integer type: object type: object '404': description: Device not found content: text/html: {} /media/grabbers/devices/{deviceId}/channelmap: put: summary: Set a device's channel mapping operationId: setChannelmap description: Set a device's channel mapping tags: - Devices parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /media/grabbers/devices/{deviceId}/channels: get: summary: Get a device's channels operationId: getDevicesChannels description: Get a device's channels by its id tags: - 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" - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: DeviceChannel: items: 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 type: object type: array type: object type: object '404': description: Device not found content: text/html: {} /media/grabbers/devices/{deviceId}/prefs: put: summary: Set device preferences operationId: setDevicePreferences description: Set device preferences by its id tags: - 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" - 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 responses: '200': $ref: '#/components/responses/200' /media/grabbers/devices/{deviceId}/scan: delete: summary: Tell a device to stop scanning for channels operationId: stopScan description: Tell a device to stop scanning for channels tags: - Devices parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' post: summary: Tell a device to scan for channels operationId: scan description: Tell a device to scan for channels tags: - Devices parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' /media/grabbers/operations/{operationId}: delete: summary: Cancel an existing grab operationId: cancelGrab 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. tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' '403': description: User is not owner of the grab and not the admin content: text/html: {} '404': $ref: '#/components/responses/404' /media/providers/{provider}: delete: summary: Delete a media provider operationId: deleteMediaProvider description: Deletes a media provider with the given id tags: - 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: provider description: The ID of the media provider to delete in: path required: true schema: type: string responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' '403': description: Cannot delete a provider which is a child of another provider content: text/html: {} /media/subscriptions/{subscriptionId}: delete: summary: Delete a subscription operationId: deleteSubscription description: Delete a subscription, cancelling all of its grabs as well tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 in: path required: true schema: type: integer responses: '200': $ref: '#/components/responses/200' '400': $ref: '#/components/responses/400' '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: {} '404': $ref: '#/components/responses/404' get: summary: Get a single subscription operationId: getSubscription description: Get a single subscription and potentially the grabs too tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 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' '400': $ref: '#/components/responses/400' '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: {} '404': $ref: '#/components/responses/404' put: summary: Edit a subscription operationId: editSubscriptionPreferences description: Edit a subscription's preferences tags: - Subscriptions parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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 in: path required: true schema: type: integer - name: prefs in: query style: deepObject schema: type: object example: minVideoQuality: 720 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithSubscription' '400': $ref: '#/components/responses/400' '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: {} '404': $ref: '#/components/responses/404' /media/subscriptions/{subscriptionId}/move: put: summary: Re-order a subscription operationId: reorderSubscription description: Re-order a subscription to change its priority tags: - Subscriptions 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 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' '400': $ref: '#/components/responses/400' '403': description: User cannot access DVR on this server or cannot access this subscription content: text/html: {} '404': $ref: '#/components/responses/404' /playlists/{playlistId}: delete: summary: Delete a Playlist operationId: deletePlaylist description: Deletes a playlist by provided id tags: - Library 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 responses: '204': $ref: '#/components/responses/204' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} get: summary: Retrieve Playlist operationId: getPlaylist 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. tags: - 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: $ref: '#/components/schemas/MediaContainerWithPlaylistMetadata' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} put: summary: Editing a Playlist operationId: updatePlaylist description: Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) tags: - Library 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 responses: '204': $ref: '#/components/responses/204' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} /playlists/{playlistId}/generators: get: summary: Get a playlist's generators operationId: getPlaylistGenerators description: Get all the generators in a playlist tags: - Library 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 responses: '200': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: PlayQueueGenerator: items: properties: changedAt: type: integer createdAt: type: integer id: type: integer playlistID: type: integer type: description: | The type of playlist generator. - -1: A smart playlist generator - 42: A optimized version generator enum: - -1 - 42 type: integer updatedAt: type: integer uri: description: The URI indicating the search for this generator type: string type: object type: array type: object type: object '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: {} /playlists/{playlistId}/items: delete: summary: Clearing a playlist operationId: clearPlaylistItems description: Clears a playlist, only works with dumb playlists. Returns the playlist. tags: - Library 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 responses: '200': $ref: '#/components/responses/slash-post-responses-200' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} get: summary: Retrieve Playlist Contents operationId: getPlaylistItems 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. tags: - 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: 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 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' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} put: summary: Adding to a Playlist operationId: addPlaylistItems 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. tags: - Library 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: 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' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} /playQueues/{playQueueId}: get: summary: Retrieve a play queue operationId: getPlayQueue 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. tags: - 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: 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': $ref: '#/components/responses/slash-post-responses-200' '400': $ref: '#/components/responses/400' '404': description: Play queue not found content: text/html: {} put: summary: Add a generator or playlist to a play queue operationId: addToPlayQueue 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. tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue not found content: text/html: {} /playQueues/{playQueueId}/items: delete: summary: Clear a play queue operationId: clearPlayQueue description: Deletes all items in the play queue, and increases the version of the play queue. tags: - 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' /playQueues/{playQueueId}/reset: put: summary: Reset a play queue operationId: resetPlayQueue description: Reset a play queue to the first item being the current item tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue not found content: text/html: {} /playQueues/{playQueueId}/shuffle: put: summary: Shuffle a play queue operationId: shuffle 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. tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue not found or current item not found content: text/html: {} /playQueues/{playQueueId}/unshuffle: put: summary: Unshuffle a play queue operationId: unshuffle 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. tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue not found or current item not found content: text/html: {} /status/sessions/history/{historyId}: delete: summary: Delete Single History Item operationId: deleteHistory description: Delete a single history item by id tags: - Status 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' '404': description: History item not found content: text/html: {} get: summary: Get Single History Item operationId: getHistoryItem description: Get a single history item by id tags: - Status 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' '404': description: History item not found content: text/html: {} /{transcodeType}/:/transcode/universal/start.{extension}: get: summary: Start A Transcoding Session operationId: startTranscodeSession x-speakeasy-usage-example: true description: Starts the transcoder and returns the corresponding streaming resource document. tags: - Transcoder parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/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' - name: extension description: "Extension \n" in: path required: true schema: type: string enum: - m3u8 - mpd - $ref: '#/components/parameters/advancedSubtitles' - 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: minimum: 1 type: integer example: 50 - name: audioChannelCount description: Target video number of audio channels. in: query schema: maximum: 8 minimum: 1 type: integer 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: minimum: 0 type: integer 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: minimum: 0 type: integer 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: minimum: 1 type: integer 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: videoBitrate description: Target video bitrate (in kbps). in: query schema: minimum: 0 type: integer example: 12000 - name: videoQuality description: Target photo quality. in: query schema: maximum: 99 minimum: 0 type: integer example: 50 - name: videoResolution description: Target maximum video resolution. in: query schema: type: string pattern: ^\d[x:]\d$ example: 1080x1080 - 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: 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: example: | video/x-matroska: schema: format: binary type: string '400': $ref: '#/components/responses/400' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' /downloadQueue/{queueId}/item/{itemId}/decision: get: summary: Grab download queue item decision operationId: getItemDecision description: | Available: 0.2.0 Grab the decision for a download queue item tags: - 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 schema: type: integer example: 32 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithDecision' '400': description: The item is not in a state where a decision is available content: text/html: {} /downloadQueue/{queueId}/item/{itemId}/media: get: summary: Grab download queue media operationId: getDownloadQueueMedia description: | Available: 0.2.0 Grab the media for a download queue item tags: - 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 schema: type: integer example: 32 responses: '200': description: The raw media file '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 /downloadQueue/{queueId}/items/{itemId}: delete: summary: Delete download queue items operationId: removeDownloadQueueItems description: delete items from a download queue tags: - 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' get: summary: Get download queue items operationId: getDownloadQueueItems description: | Available: 0.2.0 Get items from a download queue tags: - 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: DownloadQueueItem: items: properties: DecisionResult: 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 type: object 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 enum: - deciding - waiting - processing - available - error - expired type: string 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' type: object type: array type: object /downloadQueue/{queueId}/items/{itemId}/restart: post: summary: Restart processing of items from the decision operationId: restartProcessingDownloadQueueItems description: | Available: 0.2.0 Reprocess download queue items with previous decision parameters tags: - 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': $ref: '#/components/responses/200' /hubs/sections/{sectionId}/manage/{identifier}: delete: summary: Delete a custom hub operationId: deleteCustomHub description: Delete a custom hub from the server tags: - 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 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' '400': description: The hub is not a custom hub content: text/html: {} '403': $ref: '#/components/responses/403' '404': description: The section or hub was not found content: text/html: {} put: summary: Change hub visibility operationId: updateHubVisibility description: Changed the visibility of a hub for both the admin and shared users tags: - 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 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' '403': $ref: '#/components/responses/403' '404': description: Section id was not found content: text/html: {} /library/collections/{collectionId}/composite/{updatedAt}: get: summary: Get a collection's image operationId: getCollectionImage description: Get an image for the collection based on the items within tags: - Content parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: updatedAt description: The update time of the image. Used for busting cache. in: path required: true schema: type: integer - $ref: '#/components/parameters/composite' responses: '200': description: OK content: image/jpeg: schema: format: binary type: string '404': description: Collection not found content: text/html: {} /library/collections/{collectionId}/items/{itemId}: put: summary: Delete an item from a collection operationId: deleteCollectionItem description: Delete an item from a collection tags: - Library Collections 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' '400': description: Item not found content: text/html: {} '404': description: Collection not found content: text/html: {} /library/collections/{collectionId}/items/{itemId}/move: put: summary: Reorder an item in the collection operationId: moveCollectionItem description: Reorder items in a collection with one item after another tags: - Library Collections 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' '400': description: Item not found content: text/html: {} '404': description: Collection not found content: text/html: {} /library/media/{mediaId}/chapterImages/{chapter}: get: summary: Get a chapter image operationId: getChapterImage description: Get a single chapter image for a piece of media tags: - 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" - 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: format: binary type: string '404': description: Either the media item or the chapter image was not found content: text/html: {} /library/metadata/{ids}/{element}: post: summary: Set an item's artwork, theme, etc operationId: setItemArtwork 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 tags: - 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" - name: ids in: path required: true schema: type: string - name: element 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' put: summary: Set an item's artwork, theme, etc operationId: updateItemArtwork 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 tags: - 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" - name: ids in: path required: true schema: type: string - name: element 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' /library/metadata/{ids}/marker/{marker}: delete: summary: Delete a marker operationId: deleteMarker description: Delete a marker for this user on the metadata item tags: - 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" - name: ids in: path required: true schema: type: string - name: marker in: path required: true schema: type: string responses: '200': $ref: '#/components/responses/200' '400': description: Marker is not a bookmark content: text/html: {} '404': description: Marker could not be found content: text/html: {} put: summary: Edit a marker operationId: editMarker description: Edit a marker for this user on the metadata item tags: - 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" - name: 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 - 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' '400': $ref: '#/components/responses/responses-400' '404': description: The marker could not be found content: text/html: {} /library/metadata/{ids}/media/{mediaItem}: delete: summary: Delete a media item operationId: deleteMediaItem description: Delete a single media from a metadata item in the library tags: - 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 in: path required: true schema: type: string - name: 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' '400': description: Media item could not be deleted content: text/html: {} '404': description: Media item could not be found content: text/html: {} /library/parts/{partId}/indexes/{index}: get: summary: Get BIF index for a part operationId: getPartIndex description: Get BIF index for a part by index type tags: - 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" - 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: format: binary type: string '404': description: The part or the index doesn't exist or the interval is too small content: text/html: {} /library/sections/{sectionId}/collection/{collectionId}: delete: summary: Delete a collection operationId: deleteCollection description: Delete a library collection from the PMS tags: - 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: 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' '404': description: Collection not found content: text/html: {} /library/sections/{sectionId}/composite/{updatedAt}: get: summary: Get a section composite image operationId: getSectionImage description: Get a composite image of images in this section tags: - 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: 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 - $ref: '#/components/parameters/mediaQuery' - $ref: '#/components/parameters/composite' responses: '200': $ref: '#/components/responses/200' /library/streams/{streamId}.{ext}: delete: summary: Delete a stream operationId: deleteStream description: Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. tags: - 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" - 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' '403': description: This user cannot delete this stream content: text/html: {} '500': description: The stream cannot be deleted content: text/html: {} get: summary: Get a stream operationId: getStream description: Get a stream (such as a sidecar subtitle stream) tags: - 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" - 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. '403': description: The media is not accessible to the user content: text/html: {} '404': description: The stream doesn't exist or has no data content: text/html: {} '501': description: The stream is not a sidecar subtitle content: text/html: {} put: summary: Set a stream offset operationId: setStreamOffset description: Set a stream offset in ms. This may not be respected by all clients tags: - 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" - 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. '400': description: The stream doesn't exist content: text/html: {} /livetv/dvrs/{dvrId}/channels/{channel}/tune: post: summary: Tune a channel on a DVR operationId: tuneChannel description: Tune a channel on a DVR to the provided channel tags: - DVRs parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' '500': description: Tuning failed content: text/html: {} /livetv/dvrs/{dvrId}/devices/{deviceId}: delete: summary: Remove a device from an existing DVR operationId: removeDeviceFromDVR description: Remove a device from an existing DVR tags: - DVRs 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object put: summary: Add a device to an existing DVR operationId: addDeviceToDVR description: Add a device to an existing DVR tags: - DVRs 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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainerWithStatus' - properties: DVR: items: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object type: array type: object type: object /livetv/epg/countries/{country}/{epgId}/lineups: get: summary: Get lineups for a country via postal code operationId: getCountriesLineups description: Returns a list of lineups for a given country, EPG provider and postal code tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' '404': description: No provider with the identifier was found content: text/html: {} /livetv/epg/countries/{country}/{epgId}/regions: get: summary: Get regions for a country operationId: getCountryRegions description: Get regions for a country within an EPG provider tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Country: items: properties: key: type: string national: type: boolean title: type: string type: type: string type: object type: array type: object type: object '404': description: No provider with the identifier was found content: text/html: {} /livetv/sessions/{sessionId}/{consumerId}/index.m3u8: get: summary: Get a session playlist index operationId: getSessionPlaylistIndex description: Get a playlist index for playing this session tags: - Live 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: 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: {} '404': description: Session or consumer not found /media/grabbers/devices/{deviceId}/thumb/{version}: get: summary: Get device thumb operationId: getThumb description: Get a device's thumb for display to the user tags: - 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" - 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 '301': description: The thumb URL on the device '404': description: No thumb found for this device content: text/html: {} /playlists/{playlistId}/items/{generatorId}: delete: summary: Delete a Generator operationId: deletePlaylistItem description: Deletes an item from a playlist. Only works with dumb playlists. tags: - Library 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' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: {} get: summary: Get a playlist generator operationId: getPlaylistGenerator description: Get a playlist's generator. Only used for optimized versions tags: - Library 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': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Item: items: properties: composite: description: The composite thumbnail image path type: string Device: properties: profile: type: string type: object id: type: integer Location: properties: librarySectionID: type: integer uri: type: string type: object MediaSettings: properties: advancedSubtitles: enum: - auto - burn - none - sidecar - embedded - segmented type: string 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: maximum: 100 minimum: 0 type: integer photoResolution: type: string secondsPerSegment: type: integer subtitles: enum: - auto - burn - none - sidecar - embedded - segmented type: string subtitleSize: type: integer videoBitrate: type: integer videoQuality: maximum: 100 minimum: 0 type: integer videoResolution: type: string type: object Policy: properties: scope: enum: - all - count type: string 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 type: object Status: properties: itemsCompleteCount: type: integer itemsCount: type: integer itemsSuccessfulCount: type: integer state: enum: - pending - complete - failed type: string totalSize: type: integer type: object target: type: string targetTagID: description: The tag of this generator's settings type: integer title: type: string type: description: The type of this generator enum: - -1 - 42 type: integer type: object type: array type: object type: object '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: {} put: summary: Modify a Generator operationId: modifyPlaylistGenerator description: Modify a playlist generator. Only used for optimizer tags: - Library 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 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: Location: type: object properties: uri: type: string locationID: type: integer Policy: type: object properties: value: type: integer scope: type: string enum: - all - count unwatched: $ref: "#/components/schemas/BoolInt" target: type: string targetTagID: type: integer title: type: string type: 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' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: {} /playlists/{playlistId}/items/{generatorId}/items: get: summary: Get a playlist generator's items operationId: getPlaylistGeneratorItems description: Get a playlist generator's items tags: - Library 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': description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - properties: Metadata: allOf: - $ref: '#/components/schemas/Metadata' - properties: processingState: description: The state of processing if this generator is part of an optimizer playlist enum: - processed - completed - tombstoned - disabled - error - pending type: string processingStateContext: description: The error which could have occurred (or `good`) enum: - good - sourceFileUnavailable - sourceFileMetadataError - clientProfileError - ioError - transcoderError - unknownError - mediaAnalysisError - downloadFailed - accessDenied - cannotTranscode - codecInstallError type: string type: object type: object type: object '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) or generator not found content: text/html: {} /playlists/{playlistId}/items/{playlistItemId}/move: put: summary: Moving items in a playlist operationId: movePlaylistItem description: Moves an item in a playlist. Only works with dumb playlists. tags: - Library 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' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) content: text/html: {} /playQueues/{playQueueId}/items/{playQueueItemId}: delete: summary: Delete an item from a play queue operationId: deletePlayQueueItem description: Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue not found content: text/html: {} /playQueues/{playQueueId}/items/{playQueueItemId}/move: put: summary: Move an item in a play queue operationId: movePlayQueueItem description: Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. tags: - 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' '400': $ref: '#/components/responses/400' '404': description: Play queue or queue item not found content: text/html: {} /library/metadata/{ids}/{element}/{timestamp}: get: summary: Get an item's artwork, theme, etc operationId: getItemArtwork description: Get the artwork, thumb, element for a metadata item tags: - 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" - name: ids in: path required: true schema: type: string - name: element 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: format: binary type: string image/jpeg: schema: format: binary type: string /library/parts/{partId}/{changestamp}/{filename}: get: summary: Get a media part operationId: getMediaPart 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. tags: - 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" - 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 '403': description: Client requested download and server owner has forbidden download of media content: text/html: {} '404': description: The part doesn't exist content: text/html: {} '503': description: Client requested the part without a decision and no decision could be made or decision is for a transcode content: text/html: {} '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: {} /library/parts/{partId}/indexes/{index}/{offset}: get: summary: Get an image from part BIF operationId: getImageFromBif description: Extract an image from the BIF for a part at a particular offset tags: - 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" - 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: format: binary type: string '404': description: The part or the index doesn't exist content: text/html: {} /livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups: get: summary: Get lineups for a region operationId: listLineups description: Get lineups for a region within an EPG provider tags: - EPG parameters: - $ref: "#/components/parameters/accepts" - $ref: "#/components/parameters/X-Plex-Client-Identifier" - $ref: "#/components/parameters/X-Plex-Product" - $ref: "#/components/parameters/X-Plex-Version" - $ref: "#/components/parameters/X-Plex-Platform" - $ref: "#/components/parameters/X-Plex-Platform-Version" - $ref: "#/components/parameters/X-Plex-Device" - $ref: "#/components/parameters/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' '404': description: No provider with the identifier was found content: text/html: {} /livetv/sessions/{sessionId}/{consumerId}/{segmentId}: get: summary: Get a single session segment operationId: getSessionSegment description: Get a single LiveTV session segment tags: - Live 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: 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 '404': description: Session, consumer, or segment not found /playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}: put: summary: Reprocess a generator operationId: refreshPlaylist description: Make a generator reprocess (refresh) tags: - Library 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 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' '400': $ref: '#/components/responses/400' '404': description: Playlist not found (or user may not have permission to access playlist) or generator or metadata item not found content: text/html: {} components: securitySchemes: 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 schema: $ref: '#/components/schemas/MediaQuery' style: form explode: true 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 x-speakeasy-name-override: Client-Identifier in: header description: An opaque identifier unique to the client required: true schema: type: string example: abc123 example: abc123 X-Plex-Client-Profile-Extra: name: X-Plex-Client-Profile-Extra x-speakeasy-name-override: 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) 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) X-Plex-Client-Profile-Name: name: X-Plex-Client-Profile-Name x-speakeasy-name-override: 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 example: generic X-Plex-Session-Identifier: name: X-Plex-Session-Identifier x-speakeasy-name-override: 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 example: abc123 example: abc123 X-Plex-Product: name: X-Plex-Product x-speakeasy-name-override: Product in: header description: The name of the client product schema: type: string example: Plex for Roku example: Plex for Roku X-Plex-Version: name: X-Plex-Version x-speakeasy-name-override: Version in: header description: The version of the client application schema: type: string example: 2.4.1 example: 2.4.1 X-Plex-Platform: name: X-Plex-Platform x-speakeasy-name-override: Platform in: header description: The platform of the client schema: type: string example: Roku example: Roku X-Plex-Platform-Version: name: X-Plex-Platform-Version x-speakeasy-name-override: Platform-Version in: header description: The version of the platform schema: type: string example: 4.3 build 1057 example: 4.3 build 1057 X-Plex-Device: name: X-Plex-Device x-speakeasy-name-override: Device in: header description: A relatively friendly name for the client device schema: type: string example: Roku 3 example: Roku 3 X-Plex-Model: name: X-Plex-Model x-speakeasy-name-override: Model in: header description: A potentially less friendly identifier for the device model schema: type: string example: 4200X example: 4200X X-Plex-Device-Vendor: name: X-Plex-Device-Vendor x-speakeasy-name-override: Device-Vendor in: header description: The device vendor schema: type: string example: Roku example: Roku X-Plex-Device-Name: name: X-Plex-Device-Name x-speakeasy-name-override: Device-Name in: header description: A friendly name for the client schema: type: string example: Living Room TV example: Living Room TV X-Plex-Marketplace: name: X-Plex-Marketplace x-speakeasy-name-override: Marketplace in: header description: The marketplace on which the client application is distributed schema: type: string example: googlePlay example: googlePlay X-Plex-Container-Start: name: X-Plex-Container-Start in: query 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 schema: type: integer format: int32 default: 0 example: 0 required: false X-Plex-Container-Size: name: X-Plex-Container-Size in: query 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 schema: type: integer format: int32 default: 50 example: 50 required: false 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 minimum: 0 example: 100 responses: '200': description: OK content: text/html: {} '204': description: No Content content: text/html: {} '400': description: Bad Request content: text/html: {} '403': description: Forbidden content: text/html: {} '404': description: Not Found content: text/html: {} '500': description: Internal Server Error 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: properties: Device: items: $ref: '#/components/schemas/Device' type: array key: type: string language: type: string lineup: type: string uuid: type: string type: object 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: properties: 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 enum: - all - none - admin - shared type: string 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 enum: - all - none - admin - shared type: string title: description: The title of this hub type: string type: object 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: properties: accountID: description: The account id of this playback type: integer deviceID: description: The device id which played the item type: integer historyKey: description: The key for this individual history item type: string 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 ratingKey: description: The rating key for the item played type: string thumb: description: The thumb of the item played type: string title: description: The title of the item played type: string type: description: The metadata type of the item played type: string viewedAt: description: The time when the item was played type: integer type: object type: array type: object type: object post-responses-200: description: OK content: application/json: schema: properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - additionalProperties: true properties: color: type: string endTimeOffset: type: integer id: type: integer startTimeOffset: type: integer title: type: string type: enum: - intro - commercial - bookmark - resume - credit type: string 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 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: type: boolean 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 slash-post-responses-200: description: OK content: application/json: schema: $ref: '#/components/schemas/MediaContainerWithPlaylistMetadata' schemas: AllowSync: type: boolean BoolInt: type: integer format: int32 enum: - 0 - 1 example: 1 default: 0 x-speakeasy-enums: - FALSE - 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 Channel: type: object properties: title: type: string callSign: type: string channelVcn: type: string hd: type: boolean identifier: type: string key: type: string language: type: string thumb: type: string ChannelMapping: type: object properties: channelKey: type: string deviceIdentifier: type: string enabled: type: string lineupIdentifier: type: string Device: type: object properties: ChannelMapping: type: array items: $ref: '#/components/schemas/ChannelMapping' key: type: string lastSeenAt: type: integer make: type: string model: type: string modelNumber: type: string protocol: type: string sources: type: string state: type: string status: type: string tuners: type: string uri: type: string uuid: type: string Directory: type: object 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 Filter: 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 Hub: type: object 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 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 Image: description: | Images such as movie posters and background artwork are represented by Image elements. type: object properties: type: description: Describes both the purpose and intended presentation of the image. type: string enum: - background - 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 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 Key: type: string LibrarySection: type: object required: - uuid - language - type properties: title: type: string description: "The title of the library" example: "Movies" type: $ref: '#/components/schemas/MediaTypeString' agent: type: string allowSync: type: boolean art: type: string composite: type: string content: type: boolean contentChangedAt: allOf: - $ref: '#/components/schemas/PlexDateTime' createdAt: allOf: - $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 uuid: type: string description: "The universally unique identifier for the library." example: "e69655a2-ef48-4aba-bb19-d3cc3401e7d6" 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: allOf: - $ref: '#/components/schemas/PlexDateTime' scanner: type: string thumb: $ref: '#/components/schemas/Thumb' updatedAt: allOf: - $ref: '#/components/schemas/PlexDateTime' Lineup: type: object properties: title: type: string type: description: The type of this object (`lineup` in this case) type: string 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 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 additionalProperties: true required: - id 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: type: boolean example: true height: type: integer format: int32 example: 544 id: type: integer format: int64 example: 1 optimizedForStreaming: type: boolean example: false Part: type: array items: $ref: '#/components/schemas/Part' 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 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 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 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 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 properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: Device: type: array items: type: object properties: ChannelMapping: type: array items: $ref: '#/components/schemas/ChannelMapping' key: type: string lastSeenAt: type: integer make: type: string model: type: string modelNumber: type: string protocol: type: string sources: type: string state: type: string status: type: string tuners: type: string uri: type: string uuid: type: string MediaContainerWithDirectory: type: object properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: Directory: type: array items: $ref: '#/components/schemas/Directory' MediaContainerWithHubs: type: object properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: Hub: type: array items: $ref: '#/components/schemas/Hub' MediaContainerWithLineup: type: object 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 MediaContainerWithMetadata: type: object properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: Metadata: type: array items: $ref: '#/components/schemas/Metadata' MediaContainerWithNestedMetadata: type: object 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 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 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 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' MediaContainerWithSettings: type: object properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: Setting: type: array items: $ref: '#/components/schemas/Setting' MediaContainerWithStatus: type: object 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 properties: MediaContainer: allOf: - $ref: '#/components/schemas/MediaContainer' - type: object properties: MediaSubscription: type: array items: $ref: '#/components/schemas/MediaSubscription' MediaGrabOperation: description: | A media grab opration represents a scheduled or active recording of media type: object 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 MediaSubscription: description: | A media subscription contains a representation of metadata desired to be recorded type: object 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 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 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 additionalProperties: true 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 additionalProperties: true required: - addedAt - key - title - type 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" 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: type: integer format: int32 description: "The number of child items associated with this media item." 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' duration: description: When present, the duration for the item, in units of milliseconds. type: integer format: int32 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: type: string description: "The GUID of the grandparent media item." 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: type: string description: "The globally unique identifier for the media item." example: "plex://movie/5d7768ba96b655001fdc0408" Guid: x-speakeasy-name-override: guids type: array items: type: object required: - id properties: id: type: string description: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// pattern: "^(imdb|tmdb|tvdb)://.+$" example: imdbExample: summary: IMDB example value: imdb://tt13015952 tmdbExample: summary: TMDB example value: tmdb://2434012 tvdbExample: summary: TVDB example value: tvdb://7945991 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 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' 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-14" originalTitle: description: When present, used to indicate an item's original title, e.g. a movie's foreign title. type: string parentGuid: type: string description: "The GUID of the parent media item." 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 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. type: boolean skipParent: description: When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). type: boolean Sort: description: Typically only seen in metadata at a library's top level type: array items: $ref: '#/components/schemas/Sort' 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" 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 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 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 additionalProperties: true required: - id - key properties: accessible: type: boolean description: "Indicates if the part is accessible." example: true audioProfile: type: string example: lc container: description: The container of the media file, such as `mp4` or `mkv` type: string example: mov duration: description: The duration of the media item, in milliseconds type: integer format: int32 example: 150192 exists: type: boolean description: "Indicates if the part exists." 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 size: description: The size of the media, in bytes type: integer format: int64 example: 105355654 Stream: type: array items: $ref: '#/components/schemas/Stream' videoProfile: type: string example: main Player: description: Information about the player being used for playback type: object 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 PlexDateTimeISO: type: string format: date-time example: '2019-06-24T11:38:02Z' PlexDevice: title: PlexDevice type: object required: - name - product - productVersion - platform - platformVersion - device - clientIdentifier - createdAt - lastSeenAt - provides - ownerId - sourceTitle - publicAddress - accessToken - owned - home - synced - relay - presence - httpsRequired - publicAddressMatches - dnsRebindingProtection - natLoopbackSupported - connections properties: name: type: string product: type: string productVersion: type: string platform: type: - "null" - string platformVersion: type: - "null" - string device: type: - "null" - string clientIdentifier: type: string createdAt: allOf: - $ref: '#/components/schemas/PlexDateTimeISO' - description: The time the device was created/registered lastSeenAt: allOf: - $ref: '#/components/schemas/PlexDateTimeISO' - description: The last time the device was seen provides: type: string ownerId: description: ownerId is null when the device is owned by the token used to send the request type: - "null" - integer sourceTitle: type: - "null" - string publicAddress: type: string accessToken: type: string owned: type: boolean home: type: boolean synced: type: boolean relay: type: boolean presence: type: boolean httpsRequired: type: boolean publicAddressMatches: type: boolean dnsRebindingProtection: type: boolean natLoopbackSupported: type: boolean connections: type: array items: type: object required: - protocol - address - port - uri - local - relay - IPv6 properties: protocol: description: The protocol used for the connection (http, https, etc) example: "http" type: string enum: - http - https address: description: The (ip) address or domain name used for the connection type: string port: description: The port used for the connection type: integer format: int32 uri: description: The full URI of the connection type: string local: description: If the connection is local address type: boolean relay: description: If the connection is relayed through plex.direct type: boolean IPv6: description: If the connection is using IPv6 type: boolean ServerConfiguration: 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: 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: example: 1 ownerFeatures: description: A comma-separated list of features which are enabled for the server owner 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: The suggested video quality bitrates to present to the user transcoderVideoQualities: type: string transcoderVideoResolutions: description: The suggested video resolutions to the above quality bitrates updatedAt: type: integer updater: type: boolean version: type: string voiceSearch: type: boolean Session: description: Information about the playback session type: object properties: 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 Setting: description: A configuration setting or preference type: object 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: 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 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 additionalProperties: true required: - id - key - codec - displayTitle - streamType properties: default: type: boolean description: Indicates if this stream is default. example: true audioChannelLayout: type: string description: Audio channel layout. example: 5.1(side) channels: type: integer format: int32 description: Number of audio channels (for audio streams). example: 6 bitDepth: type: integer format: int32 description: Bit depth of the video stream. example: 10 DOVIBLCompatID: type: integer format: int32 description: Dolby Vision BL compatibility ID. example: 1 DOVIBLPresent: type: boolean description: Indicates if Dolby Vision BL is present. example: true DOVIELPresent: type: boolean description: Indicates if Dolby Vision EL is present. example: false DOVILevel: type: integer format: int32 description: Dolby Vision level. example: 6 DOVIPresent: type: boolean description: Indicates if Dolby Vision is present. example: true DOVIProfile: type: integer format: int32 description: Dolby Vision profile. example: 8 DOVIRPUPresent: type: boolean description: Indicates if Dolby Vision RPU is present. example: true DOVIVersion: type: string description: Dolby Vision version. example: '1.0' bitrate: type: integer format: int32 description: Bitrate of the stream. example: 24743 canAutoSync: type: boolean description: Indicates if the stream can auto-sync. example: false chromaLocation: type: string description: Chroma sample location. example: topleft chromaSubsampling: type: string description: Chroma subsampling format. example: '4:2:0' codedHeight: type: integer format: int32 description: Coded video height. example: 1608 codedWidth: type: integer format: int32 description: Coded video width. example: 3840 closedCaptions: type: boolean example: true codec: description: Codec used by the stream. type: string example: hevc colorPrimaries: type: string description: Color primaries used. example: bt2020 colorRange: type: string description: Color range (e.g., tv). example: tv colorSpace: type: string description: Color space. example: bt2020nc colorTrc: type: string description: Color transfer characteristics. example: smpte2084 displayTitle: description: Display title for the stream. type: string example: 4K DoVi/HDR10 (HEVC Main 10) extendedDisplayTitle: type: string description: Extended display title for the stream. example: 4K DoVi/HDR10 (HEVC Main 10) frameRate: type: number format: float description: Frame rate of the stream. example: 23.976 hasScalingMatrix: type: boolean example: false height: type: integer format: int32 description: Height of the video stream. example: 1602 id: type: integer format: int32 description: Unique stream identifier. 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: type: string description: Language of the stream. example: English languageCode: description: ISO language code. type: string example: eng languageTag: type: string description: Language tag (e.g., en). example: en format: type: string description: Format of the stream (e.g., srt). example: srt headerCompression: type: boolean description: Indicates whether header compression is enabled. example: true level: type: integer format: int32 description: Video level. example: 150 original: type: boolean description: Indicates if this is the original stream. example: true profile: type: string description: Video profile. example: main 10 refFrames: type: integer format: int32 description: Number of reference frames. example: 1 samplingRate: type: integer format: int32 description: Sampling rate for the audio stream. example: 48000 scanType: type: string example: progressive embeddedInVideo: type: string example: progressive selected: type: boolean description: Indicates if this stream is selected (applicable for audio streams). example: true forced: type: boolean example: true hearingImpaired: type: boolean description: Indicates if the stream is for the hearing impaired. example: true dub: type: boolean description: Indicates if the stream is a dub. example: true title: type: string description: Optional title for the stream (e.g., language variant). example: SDH streamIdentifier: type: integer format: int32 example: 1 streamType: type: integer format: int32 oneOf: - title: VIDEO const: 1 description: Video stream - title: AUDIO const: 2 description: Audio stream - title: SUBTITLE const: 3 description: Subtitle stream example: 1 description: | Stream type: - VIDEO = 1 - AUDIO = 2 - SUBTITLE = 3 width: type: integer format: int32 description: Width of the video stream. example: 3840 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 required: - tag 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 Thumb: type: string Title: type: string TranscodeSession: description: The transcode session if item is currently being transcoded type: object 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 Type: type: string UserPlexAccount: title: UserPlexAccount type: object required: - authToken - email - friendlyName - hasPassword - id - joinedAt - title - twoFactorEnabled - username - uuid properties: adsConsent: type: - boolean - 'null' description: Unknown adsConsentReminderAt: oneOf: - $ref: '#/components/schemas/PlexDateTime' - type: 'null' adsConsentSetAt: oneOf: - $ref: '#/components/schemas/PlexDateTime' - type: 'null' anonymous: type: - boolean - 'null' description: Unknown default: false authToken: type: string description: The account token example: CxoUzBTSV5hsxjTpFKaf backupCodesCreated: type: boolean description: If the two-factor authentication backup codes have been created default: false confirmed: type: boolean description: If the account has been confirmed default: false country: type: string description: The account country example: US maxLength: 2 minLength: 2 email: type: string description: The account email address format: email example: username@email.com emailOnlyAuth: type: boolean description: If login with email only is enabled default: false experimentalFeatures: type: boolean description: If experimental features are enabled default: false friendlyName: type: string description: Your account full name example: friendlyUsername entitlements: type: array description: List of devices your allowed to use with this account items: type: string example: '[]' guest: type: boolean description: If the account is a Plex Home guest user default: false hasPassword: type: boolean description: If the account has a password default: true home: type: boolean description: If the account is a Plex Home user default: false homeAdmin: type: boolean description: If the account is the Plex Home admin default: false homeSize: type: integer description: The number of accounts in the Plex Home example: 1 format: int32 id: type: integer description: The Plex account ID example: 13692262 format: int32 joinedAt: $ref: '#/components/schemas/PlexDateTime' locale: type: - string - 'null' description: The account locale mailingListActive: type: boolean description: If you are subscribed to the Plex newsletter default: false mailingListStatus: description: Your current mailing list status enum: - active - unsubscribed - removed x-speakeasy-enums: - ACTIVE - UNSUBSCRIBED - REMOVED example: active maxHomeSize: type: integer description: The maximum number of accounts allowed in the Plex Home example: 15 format: int32 pin: type: string description: '[Might be removed] The hashed Plex Home PIN ' deprecated: true profile: $ref: '#/components/schemas/UserProfile' protected: type: boolean description: If the account has a Plex Home PIN enabled default: false rememberExpiresAt: $ref: '#/components/schemas/PlexDateTime' restricted: type: boolean description: If the account is a Plex Home managed user default: false roles: type: array description: '[Might be removed] List of account roles. Plexpass membership listed here' items: type: string scrobbleTypes: type: string description: Unknown services: type: array items: type: object required: - identifier - endpoint - token - secret - status properties: identifier: type: string example: metadata-dev endpoint: type: string example: 'https://epg.provider.plex.tv' format: uri token: type: - string - 'null' example: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv secret: type: - string - 'null' status: example: online x-speakeasy-unknown-values: allow enum: - online - offline x-speakeasy-enums: - ONLINE - OFFLINE subscription: description: If the account's Plex Pass subscription is active title: Subscription type: object properties: features: description: List of features allowed on your Plex Pass subscription type: array items: type: string 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 active: description: If the account's Plex Pass subscription is active type: boolean example: true subscribedAt: description: Date the account subscribed to Plex Pass type: - string - 'null' example: '2021-04-12T18:21:12Z' status: description: String representation of subscriptionActive example: Inactive x-speakeasy-unknown-values: allow enum: - Inactive - Active x-speakeasy-enums: - INACTIVE - ACTIVE paymentService: description: Payment service used for your Plex Pass subscription type: - string - 'null' plan: description: Name of Plex Pass subscription plan type: - string - 'null' subscriptionDescription: type: - string - 'null' description: Description of the Plex Pass subscription subscriptions: type: array items: title: Subscription type: object properties: features: description: List of features allowed on your Plex Pass subscription type: array items: type: string 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 active: description: If the account's Plex Pass subscription is active type: boolean example: true subscribedAt: description: Date the account subscribed to Plex Pass type: - string - 'null' example: '2021-04-12T18:21:12Z' status: description: String representation of subscriptionActive example: Inactive x-speakeasy-unknown-values: allow enum: - Inactive - Active paymentService: description: Payment service used for your Plex Pass subscription type: - string - 'null' plan: description: Name of Plex Pass subscription plan type: - string - 'null' thumb: type: string description: URL of the account thumbnail format: uri example: 'https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101' title: type: string description: The title of the account (username or friendly name) example: UsernameTitle twoFactorEnabled: type: boolean description: If two-factor authentication is enabled default: false username: type: string description: The account username example: Username uuid: type: string description: The account UUID example: dae343c1f45beb4f attributionPartner: type: - string - 'null' example: null PlexDateTime: type: - integer example: 1556281940 description: Unix epoch datetime in seconds format: int64 UserProfile: title: UserProfile type: object required: - autoSelectAudio - defaultAudioLanguage - defaultSubtitleLanguage - autoSelectSubtitle - defaultSubtitleAccessibility - defaultSubtitleForced - watchedIndicator - mediaReviewsVisibility properties: autoSelectAudio: description: If the account has automatically select audio and subtitle tracks enabled type: boolean example: true default: true defaultAudioLanguage: description: The preferred audio language for the account type: - string - 'null' example: ja defaultAudioAccessibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 example: 0 default: 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)' defaultAudioLanguages: description: The preferred audio languages for the account type: - array - 'null' items: type: string example: null 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' items: type: string example: null autoSelectSubtitle: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 example: 1 default: 0 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)' defaultSubtitleAccessibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 example: 1 default: 0 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 example: 1 default: 0 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)' watchedIndicator: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 example: 1 default: 0 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) mediaReviewsVisibility: allOf: - type: integer format: int32 enum: - 0 - 1 - 2 - 3 example: 1 default: 0 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 mediaReviewsLanguages: description: The languages for media reviews visibility type: - array - 'null' items: type: string example: null 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 additionalProperties: false properties: type: description: | The type of media to retrieve or filter by. $ref: '#/components/schemas/MediaType' sourceType: description: Change the default level to which fields refer (used with type for hierarchical queries) 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 group: description: Field to group results by (similar to SQL GROUP BY) type: string limit: description: Maximum number of results to return type: integer example: type: 4 sourceType: 2 sort: "duration:desc,index" User: description: The user playing the content type: object 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