openapi: 3.1.1
info:
title: Plex Media Server
version: 1.1.1
description: |-
OpenAPI specification for the Plex Media Server (PMS) API and the plex.tv cloud API.
## Base URLs
- **PMS (local server)**: `http(s)://{host}:{port}` — Most endpoints in this spec target the local PMS.
- **plex.tv v2**: `https://plex.tv/api/v2` — Authentication, account, and social endpoints.
- **plex.tv v1 (legacy)**: `https://plex.tv/api` — Legacy XML endpoints (friends, home users, claims).
- **Cloud providers**: `https://discover.provider.plex.tv`, `https://metadata.provider.plex.tv`, etc.
Endpoints that target plex.tv or cloud providers declare an override `servers` array.
## Authentication
- **X-Plex-Token**: Pass via the `X-Plex-Token` header on every request. It may also be passed as a query parameter (`?X-Plex-Token=...`) on all endpoints.
- **X-Plex-Client-Identifier**: Mandatory for OAuth PIN flow (`/pins`) and JWT device registration. Must be a unique, persistent identifier for the client application.
- **OAuth PIN Flow**: `POST /pins` → user visits `https://plex.tv/link` → `GET /pins/{pinId}` → obtain `authToken`.
## Response Formats
- **PMS endpoints**: Return XML by default. Send `Accept: application/json` to receive JSON.
- **plex.tv v2**: Returns JSON by default.
- **Legacy v1 endpoints** (`/pins.xml`, `/api/resources`, `/api/users/`): Return XML only.
## Rate Limiting
plex.tv auth endpoints (PIN creation, sign-in) enforce rate limits. Clients should implement exponential backoff and reuse tokens rather than re-authenticating on every request.
contact:
name: Plex API Spec Maintainers
url: https://github.com/LukasParke/plex-api-spec
email: api@plex.tv
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://{IP-description}.{identifier}.plex.direct:{port}
variables:
identifier:
description: The unique identifier of this particular PMS
default: 0123456789abcdef0123456789abcdef
IP-description:
description: A `-` separated string of the IPv4 or IPv6 address components
default: 1-2-3-4
port:
description: The Port number configured on the PMS. Typically (`32400`).
default: '32400'
- url: '{protocol}://{host}:{port}'
variables:
host:
description: |-
The Host of the PMS.
If using on a local network, this is the internal IP address of the server hosting the PMS.
If using on an external network, this is the external IP address for your network, and requires port forwarding.
If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding.
default: localhost
port:
description: |-
The Port number configured on the PMS. Typically (`32400`).
If using a reverse proxy, this would be the port number configured on the proxy.
default: '32400'
protocol:
description: The network protocol to use. Typically (`http` or `https`)
default: http
- url: '{full_server_url}'
variables:
full_server_url:
description: The full manual URL to access the PMS
default: http://localhost:32400
security:
- token:
- shared user
- admin
x-speakeasy-globals:
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
tags:
- name: Activities
description: |-
Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
- name: Authentication
description: Plex Authentication operations
- name: Butler
description: The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks.
- name: Collections
description: API Operations against the Collections
- name: Content
description: The actual content of the media provider
- name: Devices
description: |-
Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
Example SSDP output
```
1
0
urn:plex-tv:device:Media:1
Turing Hopper 3000
Plex, Inc.
https://plex.tv/
Turing Hopper 3000 Media Grabber
Plex Media Grabber
1
https://plex.tv
uuid:42fde8e4-93b6-41e5-8a63-12d848655811
http://10.0.0.5:8088
urn:plex-tv:service:MediaGrabber:1
urn:plex-tv:serviceId:MediaGrabber
```
- UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
- URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
Note: This tag covers media grabber and network tuner devices only. For client device discovery, use `/clients` or `/resources`.
- name: Download Queue
description: |-
API Operations against the Download Queue.
Note: The Download Queue is distinct from the Play Queue. The Download Queue manages offline/downloaded content, while the Play Queue manages active playback sessions.
- name: DVRs
description: The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
- name: EPG
description: The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
- name: Events
description: |-
The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
- name: General
description: General endpoints for basic PMS operation not specific to any media provider
- name: Hubs
description: The hubs within a media provider
- name: Library
description: Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc).
- name: Library Collections
description: Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well.
x-displayName: 'Library: Collections'
- name: Library Playlists
description: Endpoints for manipulating playlists.
x-displayName: 'Library: Playlists'
- name: Live TV
description: LiveTV contains the playback sessions of a channel from a DVR device
- name: Log
description: Logging mechanism to allow clients to log to the server
- name: Play Queue
description: |-
The playqueue feature within a media provider
A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.
Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed.
You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.
All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area.
The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item.
- name: Playback
description: Plex Playback operations
- name: Playlist
description: Media playlists that can be created and played back
- name: Playlists
description: Plex Playlists operations
- name: Plex
description: Plex Plex operations
- name: Preferences
description: API Operations against the Preferences
- name: Provider
description: |-
Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers.
Note: Dynamic proxy paths such as `/{provider}/search`, `/{provider}/metadata`, and other provider-relative routes are resolved through the media provider API.
- name: Rate
description: Operations for rating media items (thumbs up/down, star ratings, etc.)
- name: Search
description: The search feature within a media provider
- name: Status
description: The status endpoints give you information about current playbacks, play history, and even terminating sessions.
- name: Subscriptions
description: Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
- name: Timeline
description: The actions feature within a media provider
- name: Transcoder
description: API Operations against the Transcoder
- name: UltraBlur
description: Service provided to compute UltraBlur colors and images.
- name: Updater
description: |-
This describes the API for searching and applying updates to the Plex Media Server.
Updates to the status can be observed via the Event API.
- name: Users
description: Plex Users operations
x-tagGroups:
- name: Server
tags:
- General
- Activities
- Butler
- Updater
- Log
- Preferences
- Transcoder
- name: Library
tags:
- Library
- Hubs
- Search
- name: Media
tags:
- Timeline
- DVRs
- EPG
- Live TV
- Subscriptions
- Devices
- name: System
tags:
- Download Queue
paths:
/:
get:
operationId: getServerInfo
summary: Get PMS info
tags:
- General
description: Information about this PMS setup and configuration
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/ServerConfiguration"
- type: object
properties:
Directory:
type: array
items:
$ref: "#/components/schemas/Directory"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
allowCameraUpload: true
allowChannelAccess: true
allowMediaDeletion: true
allowSharing: true
allowSync: true
allowTuners: true
backgroundProcessing: true
certificate: true
companionProxy: true
countryCode: example
diagnostics:
- example
eventStream: true
friendlyName: example
hubSearch: true
itemClusters: true
livetv: 7
machineIdentifier: 0123456789abcdef0123456789abcdef012345678
mediaProviders: true
multiuser: true
musicAnalysis: 2
myPlex: true
myPlexMappingState: mapped
myPlexSigninState: ok
myPlexSubscription: true
myPlexUsername: example
offlineTranscode: 1
ownerFeatures:
- example
platform: example
platformVersion: example
pluginHost: true
pushNotifications: true
readOnlyLibraries: true
streamingBrainABRVersion: 1
streamingBrainVersion: 1
sync: true
transcoderActiveVideoSessions: 1
transcoderAudio: true
transcoderLyrics: true
transcoderPhoto: true
transcoderSubtitles: true
transcoderVideo: true
transcoderVideoBitrates:
- example
transcoderVideoQualities:
- example
transcoderVideoResolutions:
- example
updatedAt: 1
updater: true
version: example
voiceSearch: true
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/:/eventsource/notifications:
get:
operationId: getNotifications
summary: Connect to Eventsource
tags:
- Events
description: Connect to the event source to get a stream of events
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: filter
description: |-
By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
in: query
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/:/prefs:
get:
operationId: getAllPreferences
summary: Get all preferences
tags:
- Preferences
description: Get the list of all preferences
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSettings"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: setPreferences
summary: Set preferences
tags:
- Preferences
description: Set a set of preferences in query parameters
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: prefs
description: The preference key to retrieve or set
in: query
required: true
schema:
type: object
example:
FriendlyName: My Server
ScheduledLibraryUpdateInterval: 3600
sendCrashReports: 1
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set preferences
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Attempt to set a preferences that doesn't exist
content:
text/html:
schema:
type: string
'403':
description: Attempt to set a preferences that doesn't exist
content:
text/html:
schema:
type: string
/:/prefs/get:
get:
operationId: getPreference
summary: Get a preferences
tags:
- Preferences
description: Get a single preference and value
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The preference to fetch
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSettings"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
'404':
description: No preference with the provided name found.
content:
text/html:
schema:
type: string
/:/progress:
get:
operationId: getProgress
summary: Get Progress
tags:
- Playback
description: Get or update watch progress for a media item.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: key
description: The metadata key of the item
in: query
required: true
schema:
type: string
- name: time
description: The current playback position in milliseconds
in: query
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProgressResponse"
example:
MediaContainer:
size: 1
Video:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/:/rate:
put:
operationId: setRating
summary: Rate an item
tags:
- Rate
description: |-
Set the rating on an item.
This API does respond to the GET verb but applications should use PUT
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: identifier
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
in: query
required: true
schema:
type: string
- name: key
description: The key of the item to rate. This is the `ratingKey` found in metadata items
in: query
required: true
schema:
type: string
- name: rating
description: The rating to give the item.
in: query
required: true
schema:
type: number
minimum: 0
maximum: 10
- name: ratedAt
description: The time when the rating occurred. If not present, interpreted as now.
in: query
required: false
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated rate an item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Bad Request. Can occur when parameters are of the wrong type, missing, or if the `ratedAt` is in the future
content:
text/html:
schema:
type: string
'404':
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
content:
text/html:
schema:
type: string
/:/scrobble:
put:
operationId: markPlayed
summary: Mark an item as played
tags:
- Timeline
description: |-
Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter
This API does respond to the GET verb but applications should use PUT
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: identifier
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
in: query
required: true
schema:
type: string
- name: key
description: The key of the item to rate. This is the `ratingKey` found in metadata items
in: query
required: false
schema:
type: string
- name: uri
description: URI of the item to scrobble. Format is `library:///item/` or `plex://movie/` or `plex://episode/`.
in: query
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated mark an item as played
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Bad Request. Can occur when parameters are of the wrong type, or missing
content:
text/html:
schema:
type: string
'404':
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
content:
text/html:
schema:
type: string
/:/timeline:
post:
operationId: report
summary: Report media timeline
tags:
- Timeline
description: This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular).
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: key
description: The details key for the item.
in: query
schema:
type: string
example: /foo
- name: ratingKey
description: The rating key attribute for the item.
in: query
schema:
type: string
example: xyz
- name: state
description: The current state of the media.
in: query
schema:
type: string
enum:
- stopped
- buffering
- playing
- paused
example: playing
- name: playQueueItemID
description: If playing media from a play queue, the play queue's ID.
in: query
schema:
type: string
example: 123
- name: time
description: The current time offset of playback in ms.
in: query
schema:
type: integer
example: 0
- name: duration
description: The total duration of the item in ms.
in: query
schema:
type: integer
example: 10000
- name: continuing
description: When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: updated
description: Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated.
in: query
schema:
type: integer
example: 14200000
- name: offline
description: Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live".
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: timeToFirstFrame
description: Time in seconds till first frame is displayed. Sent only on the first playing timeline request.
in: query
schema:
type: integer
example: 1000
- name: timeStalled
description: Time in seconds spent buffering since last request.
in: query
schema:
type: integer
example: 1000
- name: bandwidth
description: Bandwidth in kbps as estimated by the client.
in: query
schema:
type: integer
example: 100
- name: bufferedTime
description: Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below.
in: query
schema:
type: integer
example: 100
- name: bufferedSize
description: Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above
in: query
schema:
type: integer
example: 1024
- name: containerKey
description: Groups timeline reports (e.g. /playQueues/123).
in: query
schema:
type: string
- name: guid
description: Global unique identifier for the item.
in: query
schema:
type: string
- name: playQueueID
description: Identifies the play queue itself (distinct from playQueueItemID).
in: query
schema:
type: integer
- name: url
description: Alternative to key/ratingKey (legacy).
in: query
schema:
type: string
- name: X-Plex-Client-Identifier
description: Unique per client.
in: header
required: true
schema:
type: string
- name: X-Plex-Session-Identifier
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/ServerConfiguration"
- type: object
properties:
Bandwidths:
description: A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth
type: object
properties:
Bandwidth:
type: array
items:
$ref: "#/components/schemas/Bandwidth"
playQueueID:
description: The play queue ID when playback originates from a queue.
type: integer
terminationCode:
description: A code describing why the session was terminated by the server.
type: integer
terminationText:
description: A user friendly and localized text describing why the session was terminated by the server.
type: string
example:
MediaContainer:
allowCameraUpload: true
allowChannelAccess: true
allowMediaDeletion: true
allowSharing: true
allowSync: true
allowTuners: true
backgroundProcessing: true
certificate: true
companionProxy: true
countryCode: example
diagnostics: []
eventStream: true
friendlyName: example
hubSearch: true
itemClusters: true
livetv: 7
machineIdentifier: 0123456789abcdef0123456789abcdef012345678
mediaProviders: true
multiuser: true
musicAnalysis: 2
myPlex: true
myPlexMappingState: mapped
myPlexSigninState: ok
myPlexSubscription: true
myPlexUsername: example
offlineTranscode: 1
ownerFeatures: []
platform: example
platformVersion: example
pluginHost: true
pushNotifications: true
readOnlyLibraries: true
streamingBrainABRVersion: 1
streamingBrainVersion: 1
sync: true
transcoderActiveVideoSessions: 1
transcoderAudio: true
transcoderLyrics: true
transcoderPhoto: true
transcoderSubtitles: true
transcoderVideo: true
transcoderVideoBitrates: []
transcoderVideoQualities: []
transcoderVideoResolutions: []
updatedAt: 1
updater: true
version: example
voiceSearch: true
Bandwidths:
Bandwidth:
- bandwidth: 1
resolution: string value
time: 1
playQueueID: 1
terminationCode: 1
terminationText: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/:/unscrobble:
put:
operationId: unscrobble
summary: Mark an item as unplayed
tags:
- Timeline
description: |-
Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter
This API does respond to the GET verb but applications should use PUT
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: identifier
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
in: query
required: true
schema:
type: string
- name: key
description: The key of the item to rate. This is the `ratingKey` found in metadata items
in: query
required: false
schema:
type: string
- name: uri
description: URI of the item to scrobble. Format is `library:///item/` or `plex://movie/` or `plex://episode/`.
in: query
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated mark an item as unplayed
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Bad Request. Can occur when parameters are of the wrong type, or missing
content:
text/html:
schema:
type: string
'404':
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
content:
text/html:
schema:
type: string
/:/websocket/notifications:
get:
operationId: connectWebSocket
summary: Connect to WebSocket
tags:
- Events
description: Connect to the web socket to get a stream of events
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: filter
description: |-
By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
in: query
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/:/websockets/notifications:
get:
operationId: getWebsocketNotifications
summary: Get WebSocket Notifications
tags:
- Events
description: WebSocket endpoint for real-time notifications (plural alias). Connect with X-Plex-Token header. Delivers NotificationContainer messages.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'101':
description: Switching Protocols - WebSocket connection established
'200':
description: WebSocket messages
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/NotificationContainer"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/accounts:
get:
operationId: getSystemAccounts
summary: Get System Accounts
tags:
- General
description: Get a list of local system accounts.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/actions/addToWatchlist:
post:
operationId: addToWatchlist
summary: Add to Watchlist
tags:
- Provider
description: Add an item to the user's Plex Discover watchlist.
servers:
- url: https://discover.provider.plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uri
description: The URI of the item to add or remove
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/actions/removeFromContinueWatching:
put:
operationId: removeFromContinueWatching
summary: Remove From Continue Watching
tags:
- Playback
description: Remove an item from the Continue Watching list.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: key
description: The metadata key of the item
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/actions/removeFromWatchlist:
post:
operationId: removeFromWatchlist
summary: Remove from Watchlist
tags:
- Provider
description: Remove an item from the user's Plex Discover watchlist.
servers:
- url: https://discover.provider.plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uri
description: The URI of the item to add or remove
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/activities:
get:
operationId: listActivities
summary: Get all activities
tags:
- Activities
description: List all activities on the server. Admins can see all activities but other users can only see their own
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
type: object
properties:
Activity:
type: array
items:
$ref: "#/components/schemas/Activity"
example:
MediaContainer:
Activity:
- title: string value
type: string value
cancellable: true
Context: {}
progress: 1
Response: {}
subtitle: string value
userID: 1
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/api/resources:
get:
operationId: getLegacyResources
summary: Get Legacy Resources
tags:
- Users
description: Get legacy published server connections (XML).
servers:
- url: https://plex.tv/api
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/api/users/:
get:
operationId: getLegacyUsers
summary: Get Legacy Users
tags:
- Users
description: Get legacy friends list (XML).
servers:
- url: https://plex.tv/api
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/api/v2/user/webhooks:
get:
operationId: getUserWebhooks
summary: User Webhooks
tags:
- General
description: List webhook URLs for the logged-in user.
servers:
- url: https://plex.tv/api/v2
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookPayload"
example:
Account:
title: string value
id: 1
thumb: string value
event: media.play
Metadata: {}
owner: true
Player:
title: string value
local: true
publicAddress: string value
uuid: string value
Server:
title: string value
uuid: string value
user: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addUserWebhook
summary: Add User Webhook
tags:
- General
description: Add a webhook URL for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/auth/jwk:
post:
operationId: registerDeviceJWK
summary: Register Device JWK
tags:
- Authentication
description: Register a device public key (JWK) for JWT-based authentication.
servers:
- url: https://clients.plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
requestBody:
content:
application/json:
example:
jwk:
crv: string value
kid: string value
kty: string value
x: string value
strong: false
schema:
$ref: "#/components/schemas/JWKRegistrationRequest"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AuthTokenResponse"
example:
authToken: string value
clientIdentifier: string value
jwt: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/auth/keys:
get:
operationId: getAuthKeys
summary: Get Auth Keys
tags:
- Authentication
description: Get Plex public JWKs for signature verification.
servers:
- url: https://clients.plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AuthKeysResponse"
example:
keys:
- alg: string value
e: string value
kid: string value
kty: string value
n: string value
use: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/auth/nonce:
get:
operationId: getAuthNonce
summary: Get Auth Nonce
tags:
- Authentication
description: Get a nonce to sign in client JWT authentication flow.
servers:
- url: https://clients.plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AuthNonceResponse"
example:
nonce: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/auth/token:
post:
operationId: exchangeJWTToken
summary: Exchange JWT Token
tags:
- Authentication
description: Exchange a signed client JWT for a Plex JWT token.
servers:
- url: https://clients.plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
requestBody:
content:
application/json:
example:
clientIdentifier: string value
jwt: string value
scope: string value
schema:
$ref: "#/components/schemas/TokenExchangeRequest"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AuthTokenResponse"
example:
authToken: string value
clientIdentifier: string value
jwt: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/butler:
delete:
operationId: stopTasks
summary: Stop all Butler tasks
tags:
- Butler
description: This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
security:
- token:
- admin
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted stop all butler tasks
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: getTasks
summary: Get all Butler tasks
tags:
- Butler
description: Get the list of butler tasks and their scheduling
security:
- token:
- admin
responses:
'200':
description: Butler tasks
content:
application/json:
schema:
type: object
properties:
ButlerTasks:
type: object
properties:
ButlerTask:
type: array
items:
$ref: "#/components/schemas/ButlerTask"
example:
ButlerTasks:
ButlerTask:
- title: string value
description: string value
enabled: true
interval: 1
name: string value
scheduleRandomized: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: startTasks
summary: Start all Butler tasks
tags:
- Butler
description: |-
This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
1. Any tasks not scheduled to run on the current day will be skipped.
2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
4. If we are outside the configured window, the task will start immediately.
security:
- token:
- admin
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed start all butler tasks
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/claim/token.json:
get:
operationId: getClaimToken
summary: Get Claim Token
tags:
- Authentication
description: Get a claim token for new server setup.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ClaimTokenResponse"
example:
token: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/clients:
get:
operationId: getClients
summary: Get Clients
tags:
- General
description: Get a list of connected Plex clients.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: List of clients
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Server:
type: array
items:
$ref: "#/components/schemas/PlexDevice"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
Server:
- accessToken: string value
clientIdentifier: string value
connections:
- address: string value
IPv6: true
local: true
port: 1
protocol: http
relay: true
uri: string value
dnsRebindingProtection: true
home: true
httpsRequired: true
name: string value
natLoopbackSupported: true
owned: true
presence: true
product: string value
productVersion: string value
provides: string value
publicAddress: string value
publicAddressMatches: true
relay: true
synced: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/cloud_server:
get:
operationId: getCloudServer
summary: Get Cloud Server
tags:
- General
description: Get Plex Cloud server status for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CloudServerResponse"
example:
address: string value
name: string value
port: 1
scheme: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/devices:
get:
operationId: getSystemDevices
summary: Get System Devices
tags:
- General
description: Get a list of local system devices.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/diagnostics:
get:
operationId: getDiagnostics
summary: Get Diagnostics
tags:
- General
description: Get server diagnostics overview.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/diagnostics/databases:
get:
operationId: downloadDatabaseDiagnostics
summary: Download Database Diagnostics
tags:
- General
description: Download server database diagnostics bundle.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/diagnostics/logs:
get:
operationId: downloadLogBundle
summary: Download Log Bundle
tags:
- General
description: Download server logs bundle.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BinaryResponse"
example:
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/downloadQueue:
post:
operationId: createDownloadQueue
summary: Create download queue
tags:
- Download Queue
description: |-
Available: 0.2.0
Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user.
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
DownloadQueue:
type: array
items:
$ref: "#/components/schemas/DownloadQueue"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
DownloadQueue:
- id: 1
itemCount: 1
status: deciding
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/features:
get:
operationId: getFeatures
summary: Get Features
tags:
- Authentication
description: Get Plex Pass feature flags for the logged-in user.
servers:
- url: https://plex.tv/api/v2
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- type: object
- $ref: "#/components/schemas/Feature"
example:
type: string value
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
key: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/friends:
get:
operationId: getFriends
summary: Get Friends
tags:
- Users
description: Get the list of friends and shared users.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: List of friends
content:
application/json:
schema:
type: object
properties:
users:
type: array
items:
type: object
properties:
title:
type: string
email:
type: string
id:
type: integer
thumb:
type: string
username:
type: string
uuid:
type: string
example:
users:
- title: example
email: example
id: 1
thumb: example
username: example
uuid: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/geoip:
get:
operationId: getGeoIP
summary: Get GeoIP
tags:
- General
description: Get GeoIP lookup information for the current request.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/GeoIPResponse"
example:
city: string value
coordinates: string value
country: string value
country_code: string value
subdivisions: string value
timezone: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/home:
get:
operationId: getHome
summary: Get home hubs
tags:
- Users
description: Get Plex Home user list.
servers:
- url: https://plex.tv/api/v2
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/home/users:
get:
operationId: getHomeUsers
summary: Get home hubs Users
tags:
- Users
description: Get the list of Plex Home users.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: createHomeUser
summary: Create Home User
tags:
- Users
description: Create a new Plex Home user.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs:
get:
operationId: getAllHubs
summary: Get global hubs
tags:
- Hubs
description: Get the global hubs in this PMS
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: onlyTransient
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: identifier
description: If provided, limit to only specified hubs
in: query
schema:
type: array
items:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/continueWatching:
get:
operationId: getContinueWatching
summary: Get the continue watching hub
tags:
- Hubs
description: Get the global continue watching hub
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/continueWatching/items:
get:
operationId: getContinueWatchingItems
summary: Get Continue Watching Items
tags:
- Hubs
description: Get direct access to Continue Watching items.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/home/recentlyAdded:
get:
operationId: getHomeRecentlyAdded
summary: Get home hubs Recently Added
tags:
- Hubs
description: Get the recently added hub for the home screen.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: Recently added hub items
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/items:
get:
operationId: getHubItems
summary: Get a hub's items
tags:
- Hubs
description: Get the items within a single hub specified by identifier
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: identifier
description: If provided, limit to only specified hubs
in: query
required: true
schema:
type: array
items:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
type: object
properties:
MediaContainer:
$ref: "#/components/schemas/MediaContainer"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
'404':
description: The specified hub could not be found
content:
text/html:
schema:
type: string
/hubs/promoted:
get:
operationId: getPromotedHubs
summary: Get the hubs which are promoted
tags:
- Hubs
description: Get the global hubs which are promoted (should be displayed on the home screen)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/search:
get:
operationId: searchHubs
summary: Search Hub
tags:
- Search
description: |-
Perform a search and get the result as hubs
This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor).
In the response's items, the following extra attributes are returned to further describe or disambiguate the result:
- `reason`: The reason for the result, if not because of a direct search term match; can be either:
- `section`: There are multiple identical results from different sections.
- `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language).
- ``: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor`
- `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold").
- `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID.
This request is intended to be very fast, and called as the user types.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: query
description: The query term
in: query
required: true
schema:
type: string
- name: sectionId
description: This gives context to the search, and can result in re-ordering of search result hubs.
in: query
schema:
type: integer
example: 1
- name: limit
description: The number of items to return per hub. 3 if not specified
in: query
schema:
type: integer
- name: includeCollections
description: Include collection results in search hubs
in: query
schema:
type: boolean
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: A required parameter was not given, the wrong type, or wrong value
content:
text/html:
schema:
type: string
'404':
description: Search restrictions result in no possible items found (such as searching no sections)
content:
text/html:
schema:
type: string
/hubs/search/voice:
get:
operationId: voiceSearchHubs
summary: Voice Search Hub
tags:
- Search
description: |-
Perform a search tailored to voice input and get the result as hubs
This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type.
Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/type"
- name: query
description: The query term
in: query
required: true
schema:
type: string
- name: limit
description: The number of items to return per hub. 3 if not specified
in: query
schema:
type: integer
- name: includeCollections
description: Include collection results in search hubs
in: query
schema:
type: boolean
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: A required parameter was not given, the wrong type, or wrong value
content:
text/html:
schema:
type: string
/identity:
get:
operationId: getIdentity
summary: Get PMS identity
tags:
- General
description: Get details about this PMS's identity
security:
- {}
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
type: object
properties:
claimed:
description: Indicates whether this server has been claimed by a user
type: boolean
machineIdentifier:
description: A unique identifier of the computer
type: string
size:
type: integer
version:
description: The full version string of the PMS
type: string
example:
MediaContainer:
claimed: true
machineIdentifier: example
size: 1
version: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/ip:
get:
operationId: getIP
summary: Get IP
tags:
- General
description: Get the public IP address detected by Plex.
servers:
- url: https://plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IPResponse"
example:
ip: 192.168.1.1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library:
get:
operationId: getRootLibrary
summary: Get Root Library
tags:
- Library
description: Get the root library object.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/all:
get:
operationId: getLibraryItems
summary: Get all items in library
tags:
- Library
description: Request all metadata items according to a query.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/caches:
delete:
operationId: deleteCaches
summary: Delete library caches
tags:
- Library
description: Delete the hub caches so they are recomputed on next request
security:
- token:
- admin
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete library caches
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/clean/bundles:
put:
operationId: cleanBundles
summary: Clean bundles
tags:
- Library
description: Clean out any now unused bundles. Bundles can become unused when media is deleted
security:
- token:
- admin
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated clean bundles
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/collections:
post:
operationId: createCollection
summary: Create collection
tags:
- Collections
description: Create a collection in the library
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/title"
- $ref: "#/components/parameters/smart"
- $ref: "#/components/parameters/type"
- name: sectionId
description: The section where this collection will be created
in: query
required: true
schema:
type: string
- name: uri
description: The URI for processing the smart collection. Required for a smart collection
in: query
schema:
type: string
responses:
'200':
description: The created collection
content:
application/json:
schema:
$ref: "#/components/schemas/Collection"
example:
artBlurHash: string value
collectionFilterBasedOnUser: true
collectionMode: default
collectionPublished: true
collectionSort: string value
lastRatedAt: 1
thumbBlurHash: string value
userRating: 1
'400':
description: The uri is missing for a smart collection or the section could not be found
content:
text/html:
schema:
type: string
/library/file:
post:
operationId: ingestTransientItem
summary: Ingest a transient item
tags:
- Library
description: |-
This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path.
Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: url
description: The file of the file to ingest.
in: query
schema:
type: string
format: url
example: file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv
- name: virtualFilePath
description: A virtual path to use when the url is opaque.
in: query
schema:
type: string
example: /Avatar.mkv
- name: computeHashes
description: Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: ingestNonMatches
description: Whether or not non matching media should be stored. Defaults to 0.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/matches:
get:
operationId: getLibraryMatches
summary: Get library matches
tags:
- Library
description: |-
The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints.
This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata.
The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching).
The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version).
Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/type"
- $ref: "#/components/parameters/title"
- name: includeFullMetadata
description: Include full metadata in the response
in: query
schema:
$ref: "#/components/schemas/BoolInt"
description: Whether or not to include full metadata on a positive match. When set, and the best match exceeds a score threshold of 85, metadata as rich as possible is sent back.
- name: includeAncestorMetadata
description: Include ancestor metadata in the response
in: query
schema:
$ref: "#/components/schemas/BoolInt"
description: Whether or not to include metadata for the item's ancestor (e.g. show and season data for an episode).
- name: includeAlternateMetadataSources
description: Include alternate metadata sources in the response
in: query
schema:
$ref: "#/components/schemas/BoolInt"
description: Whether or not to return all sources for each metadata field, which results in a different structure being passed back.
- name: guid
description: Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined.
in: query
schema:
type: string
- name: year
description: Used for movies shows, and albums. Optional.
in: query
schema:
type: integer
- name: path
description: Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item.
in: query
schema:
type: string
- name: grandparentTitle
description: Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed.
in: query
schema:
type: string
- name: grandparentYear
description: Used for episodes. The year of the show.
in: query
schema:
type: integer
- name: parentIndex
description: Used for episodes and tracks. The season/album number.
in: query
schema:
type: integer
- name: index
description: Used for episodes and tracks. The episode/tracks number in the season/album.
in: query
schema:
type: integer
- name: originallyAvailableAt
description: Used for episodes. In the format `YYYY-MM-DD`.
in: query
schema:
type: string
- name: parentTitle
description: Used for albums and tracks. The artist name for albums or the album name for tracks.
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/optimize:
get:
operationId: optimizeLibrary
summary: Get Optimize Library
tags:
- Library
description: Optimize the database globally across all library sections.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: optimizeLibraryPost
summary: Optimize Library
tags:
- Library
description: Optimize the database globally across all library sections.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: optimizeDatabase
summary: Optimize the Database
tags:
- Library
description: Initiate optimize on the database.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: async
description: If set, don't wait for completion but return an activity
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated optimize the database
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/randomArtwork:
get:
operationId: getRandomArtwork
summary: Get random artwork
tags:
- Library
description: |-
Get random artwork across sections. This is commonly used for a screensaver.
This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sections
description: The sections for which to fetch artwork.
in: query
explode: false
schema:
type: array
items:
type: integer
example:
- 5
- 6
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithArtwork"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/recentlyAdded:
get:
operationId: getRecentlyAddedGlobal
summary: Get Global Recently Added
tags:
- Library
description: Get recently added items across all library sections.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: Recently added items
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/search:
get:
operationId: searchDiscover
summary: Search Discover
tags:
- Provider
description: Search movies and shows in Plex Discover.
servers:
- url: https://discover.provider.plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: query
description: The search query string
in: query
schema:
type: string
- name: limit
description: Maximum number of items to return
in: query
schema:
type: integer
default: 10
- name: searchTypes
description: Types of content to search for
in: query
schema:
type: string
example: movies,tv
- name: searchProviders
description: Providers to include in the search
in: query
schema:
type: string
example: discover,PLEXAVOD,PLEXTVOD
- name: includeMetadata
description: Include metadata in the search results
in: query
schema:
type: integer
default: 1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/:
get:
operationId: getLibrarySectionsFallback
summary: Get Library Sections (Fallback)
tags:
- Library
description: Fallback for non-owners to list library sections.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/all:
get:
operationId: getSections
summary: Get library sections (main Media Provider Only)
tags:
- Library
description: |-
A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat.
Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
allowSync:
$ref: "#/components/schemas/AllowSync"
Directory:
type: array
items:
$ref: "#/components/schemas/LibrarySection"
title1:
description: Typically just "Plex Library"
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
allowSync: true
Directory:
- title: string value
type: movie
agent: string value
allowSync: true
art: string value
composite: string value
content: true
contentChangedAt: 1
createdAt: 1
directory: true
filters: true
hidden: true
key: string value
language: string value
Location:
- id: 1
refreshing: true
scannedAt: 1
scanner: string value
thumb: string value
updatedAt: 1
uuid: string value
title1: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addSection
summary: Add a library section
tags:
- Library
description: Add a new library section to the server
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: name
description: The name of the new section
in: query
required: true
schema:
type: string
- name: type
description: The type of library section
in: query
required: true
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: scanner
description: The scanner this section should use
in: query
schema:
type: string
- name: agent
description: The agent this section should use for metadata
in: query
required: true
schema:
type: string
- name: metadataAgentProviderGroupId
description: The agent group id for this section
in: query
schema:
type: string
- name: language
description: The language of this section
in: query
required: true
schema:
type: string
- name: locations
description: The locations on disk to add to this section
in: query
schema:
type: array
items:
type: string
example:
- O:\fatboy\Media\Ripped\Music
- O:\fatboy\Media\My Music
- name: prefs
description: The preferences for this section
in: query
style: deepObject
schema:
type: object
example:
collectionMode: 2
hidden: 0
- name: relative
description: If set, paths are relative to `Media Upload` path
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: importFromiTunes
description: If set, import media from iTunes.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/slash-get-responses-200"
description: Successfully created/executed add a library section
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Section cannot be created due to bad parameters in request
content:
text/html:
schema:
type: string
/library/sections/all/refresh:
delete:
operationId: stopAllRefreshes
summary: Stop refresh
tags:
- Library
description: Stop all refreshes across all sections
security:
- token:
- admin
responses:
'200':
$ref: "#/components/responses/LibrarySections"
description: Successfully deleted stop refresh
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/prefs:
get:
operationId: getSectionsPrefs
summary: Get section prefs
tags:
- Library
description: Get a section's preferences for a metadata type
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: type
description: The metadata type
in: query
required: true
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: agent
description: The metadata agent in use
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/LibrarySections"
description: Successfully retrieved get section prefs
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSettings"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
'400':
description: type not provided or not an integer
content:
text/html:
schema:
type: string
/library/sections/refresh:
post:
operationId: refreshSectionsMetadata
summary: Refresh all sections
tags:
- Library
description: Tell PMS to refresh all section metadata
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: force
description: Force refresh of metadata
in: query
schema:
type: boolean
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed refresh all sections
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'503':
description: Server cannot refresh a music library when not signed in
content:
text/html:
schema:
type: string
/library/sections/watchlist/all:
get:
operationId: getWatchlist
summary: Get Watchlist
tags:
- Provider
description: Get the user's Plex Discover watchlist.
servers:
- url: https://discover.provider.plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: Watchlist items
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/tags:
get:
operationId: getTags
summary: Get all library tags of a type
tags:
- Library
description: Get all library tags of a type
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/type"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
type: object
properties:
filter:
description: The filter string to view metadata wit this tag
type: string
id:
type: integer
tag:
description: The name of the tag
type: string
tagKey:
description: The key of this tag. This is a universal key across all PMS instances and plex.tv services
type: string
tagType:
description: The type of the tag
type: integer
thumb:
description: The URL to a thumbnail for this tag
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- filter: example
id: 1
tag: example
tagKey: example
tagType: 1
thumb: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs:
get:
operationId: listDVRs
summary: Get DVRs
tags:
- DVRs
description: Get the list of all available DVRs
parameters:
- name: uuid
description: Filter by DVR UUID.
in: query
schema:
type: string
- name: lineup
description: Filter by lineup.
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/DVRResponse"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: createDVR
summary: Create a DVR
tags:
- DVRs
description: Creation of a DVR, after creation of a device and a lineup is selected
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: lineup
description: The EPG lineup.
in: query
schema:
type: string
example: lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT
- name: device
description: The device.
in: query
schema:
type: array
items:
type: string
example: device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA
- name: language
description: The language.
in: query
schema:
type: string
example: eng
responses:
'200':
$ref: "#/components/responses/dvrRequestHandler_slash-get-responses-200"
description: Successfully created/executed create a dvr
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/epg/channelmap:
get:
operationId: computeChannelMap
summary: Compute the best channel map
tags:
- EPG
description: Compute the best channel map, given device and lineup
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: device
description: The URI describing the device
in: query
required: true
schema:
type: string
- name: lineup
description: The URI describing the lineup
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
ChannelMapping:
type: array
items:
type: object
properties:
channelKey:
type: string
deviceIdentifier:
description: The channel description on the device
type: string
favorite:
type: boolean
lineupIdentifier:
description: The channel identifier in the lineup
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
ChannelMapping:
- channelKey: example
deviceIdentifier: example
favorite: true
lineupIdentifier: example
'404':
description: No device or provider with the identifier was found
content:
text/html:
schema:
type: string
'500':
description: Failed to compute channel map
content:
text/html:
schema:
type: string
/livetv/epg/channels:
get:
operationId: getChannels
summary: Get channels for a lineup
tags:
- EPG
description: Get channels for a lineup within an EPG provider
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: lineup
description: The URI describing the lineup
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/ChannelResponse"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Channel:
- title: string value
callSign: string value
channelVcn: string value
drm: true
favorite: true
hd: true
identifier: string value
key: string value
language: string value
signalQuality: 1
signalStrength: 1
thumb: string value
'404':
description: No provider with the identifier was found
content:
text/html:
schema:
type: string
/livetv/epg/countries:
get:
operationId: getCountries
summary: Get all countries
tags:
- EPG
description: This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Country:
type: array
items:
$ref: "#/components/schemas/EPGCountry"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Country:
- title: string value
type: string value
example: string value
code: string value
flavor: 1
key: string value
language: string value
languageTitle: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/epg/guide:
get:
operationId: getEPGGuide
summary: Get EPG Guide
tags:
- EPG
description: Fetch the global electronic program guide.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/epg/languages:
get:
operationId: getAllLanguages
summary: Get all languages
tags:
- EPG
description: Returns a list of all possible languages for EPG data.
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Language:
type: array
items:
$ref: "#/components/schemas/EPGLanguage"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Language:
- title: string value
code: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/epg/lineup:
get:
operationId: getLineup
summary: Compute the best lineup
tags:
- EPG
description: Compute the best lineup, given lineup group and device
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: device
description: The URI describing the device
in: query
required: true
schema:
type: string
- name: lineupGroup
description: The URI describing the lineupGroup
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Activity:
description: The activity of the reload process
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithLineup"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Lineup:
- title: string value
type: string value
identifier: string value
key: string value
lineupType: 1
location: string value
uuid: string value
uuid: example
'404':
description: No device or provider with the identifier was found
content:
text/html:
schema:
type: string
'500':
description: Could not get device's channels
content:
text/html:
schema:
type: string
/livetv/epg/lineupchannels:
get:
operationId: getLineupChannels
summary: Get the channels for multiple lineups
tags:
- EPG
description: Get the channels across multiple lineups
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: lineup
description: The URIs describing the lineups
in: query
required: true
schema:
type: array
items:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Lineup:
type: array
items:
allOf:
- $ref: "#/components/schemas/Lineup"
- type: object
properties:
Channel:
type: array
items:
$ref: "#/components/schemas/Channel"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Lineup:
- title: string value
type: string value
identifier: string value
key: string value
lineupType: 1
location: string value
uuid: string value
'404':
description: No provider with the identifier was found
content:
text/html:
schema:
type: string
/livetv/epg/search:
get:
operationId: searchEPG
summary: Search EPG
tags:
- EPG
description: Search the electronic program guide for upcoming airings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/recordings:
get:
operationId: getDVRRecordings
summary: Get DVR Recordings
tags:
- Live TV
description: List completed DVR recordings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/sessions:
get:
operationId: getSessions
summary: Get all sessions
tags:
- Live TV
description: Get all livetv sessions and metadata
parameters:
- name: dvrId
description: Filter by DVR ID.
in: query
schema:
type: integer
- name: channel
description: Filter by channel ID.
in: query
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/log:
post:
operationId: writeLog
summary: Logging a multi-line message to the Plex Media Server log
tags:
- Log
description: This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above.
security:
- token:
- admin
requestBody:
description: Line separated list of log items
required: true
content:
text/plain:
example:
level: DEBUG
message: string value
source: string value
schema:
$ref: "#/components/schemas/LogMessageRequest"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed logging a multi-line message to the plex media server log
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
put:
operationId: writeMessage
summary: Logging a single-line message to the Plex Media Server log
tags:
- Log
description: |-
This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log.
Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: level
description: |-
An integer log level to write to the PMS log with.
- 0: Error
- 1: Warning
- 2: Info
- 3: Debug
- 4: Verbose
in: query
schema:
type: integer
enum:
- 0
- 1
- 2
- 3
- 4
- name: message
description: The text of the message to write to the log.
in: query
schema:
type: string
- name: source
description: A string indicating the source of the message.
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated logging a single-line message to the plex media server log
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/log/networked:
post:
operationId: enablePapertrail
summary: Enabling Papertrail
tags:
- Log
description: |-
This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time
Note: This endpoint responds to all HTTP verbs but POST is preferred
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: minutes
description: The number of minutes logging should be sent to Papertrail
in: query
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed enabling papertrail
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
description: User doesn't have permission
content:
text/html:
schema:
type: string
/media/grabbers:
get:
operationId: getAvailableGrabbers
summary: Get available grabbers
tags:
- Devices
description: Get available grabbers visible to the server
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: protocol
description: Only return grabbers providing this protocol.
in: query
schema:
type: string
example: livetv
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
MediaGrabber:
type: array
items:
$ref: "#/components/schemas/MediaGrabber"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaGrabber:
- title: string value
identifier: string value
protocol: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/grabbers/devices:
get:
operationId: listDevices
summary: Get all devices
tags:
- Devices
description: Get the list of all devices present
security:
- token:
- admin
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addDevice
summary: Add a device
tags:
- Devices
description: This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uri
description: The URI of the device.
in: query
schema:
type: string
example: http://10.0.0.5
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/media/grabbers/devices/discover:
get:
operationId: discoverDevices
summary: Tell grabbers to discover devices
tags:
- Devices
description: Tell grabbers to discover devices
security:
- token:
- admin
parameters:
- name: protocol
description: Protocol to filter discovery.
in: query
schema:
type: string
enum:
- stream
- download
- livetv
- name: grabberIdentifier
description: Targeted grabber identifier.
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/providers:
get:
operationId: listProviders
summary: Get the list of available media providers
tags:
- Provider
description: Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up.
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
MediaContainer:
type: object
properties:
Provider:
type: array
items:
$ref: "#/components/schemas/Provider"
- $ref: "#/components/schemas/ProviderFeature"
example:
MediaContainer:
Provider:
- title: string value
identifier: string value
Protocol: string value
types: string value
title: string value
type: string value
key: search
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addProvider
summary: Add a media provider
tags:
- Provider
description: This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: url
description: The URL of the media provider to add.
in: query
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed add a media provider
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/media/providers/refresh:
post:
operationId: refreshProviders
summary: Refresh media providers
tags:
- Provider
description: Refresh all known media providers. This is useful in case a provider has updated features.
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed refresh media providers
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/subscriptions:
get:
operationId: getAllSubscriptions
summary: Get all subscriptions
tags:
- Subscriptions
description: Get all subscriptions and potentially the grabs too
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: includeGrabs
description: Indicates whether the active grabs should be included as well
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeStorage
description: Compute the storage of recorded items desired by this subscription
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: X-Plex-Container-Start
description: Pagination start offset.
in: query
schema:
type: integer
- name: X-Plex-Container-Size
description: Pagination page size.
in: query
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSubscription"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaSubscription:
- title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
'403':
description: User cannot access DVR on this server
content:
text/html:
schema:
type: string
post:
operationId: createSubscription
summary: Create a subscription
tags:
- Subscriptions
description: Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: targetLibrarySectionID
description: The library section into which we'll grab the media. Not actually required when the subscription is to a playlist.
in: query
schema:
type: integer
example: 1
- name: targetSectionLocationID
description: The section location into which to grab.
in: query
schema:
type: integer
example: 3
- name: type
description: The type of the thing we're subscribing too (e.g. show, season).
in: query
schema:
type: integer
example: 2
x-speakeasy-name-override: mediaType
- name: hints
description: "Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote."
in: query
style: deepObject
schema:
type: object
example:
title: Family Guy
- name: prefs
description: Subscription preferences.
in: query
style: deepObject
schema:
type: object
example:
minVideoQuality: 720
- name: params
description: |-
Subscription parameters.
- `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
- `source`: Required for downloads to indicate the source of the downloaded content.
in: query
style: deepObject
schema:
type: object
example:
mediaProviderID: 1
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
MediaSubscription:
type: array
items:
$ref: "#/components/schemas/MediaSubscription"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaSubscription:
- title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: User cannot access DVR on this server
content:
text/html:
schema:
type: string
'409':
description: An subscription with the same parameters already exists
content:
text/html:
schema:
type: string
/media/subscriptions/process:
post:
operationId: processSubscriptions
summary: Process all subscriptions
tags:
- Subscriptions
description: Process all subscriptions asynchronously
responses:
'200':
description: OK
headers:
X-Plex-Activity:
description: The activity of the process
schema:
type: string
content:
text/html:
schema:
$ref: "#/components/schemas/SuccessResponse"
'403':
description: User cannot access DVR on this server
content:
text/html:
schema:
type: string
/media/subscriptions/scheduled:
get:
operationId: getScheduledRecordings
summary: Get all scheduled recordings
tags:
- Subscriptions
description: Get all scheduled recordings across all subscriptions
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMediaGrabOperation"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
'403':
description: User cannot access DVR on this server
content:
text/html:
schema:
type: string
/media/subscriptions/template:
get:
operationId: getTemplate
summary: Get the subscription template
tags:
- Subscriptions
description: Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: guid
description: The guid of the item for which to get the template
in: query
schema:
type: string
example: plex://episode/5fc70265c40548002d539d23
- name: type
description: Subscription type.
in: query
schema:
type: string
x-speakeasy-name-override: mediaType
- name: targetLibrarySectionID
description: Target library section ID.
in: query
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
SubscriptionTemplate:
type: array
items:
type: object
properties:
MediaSubscription:
type: array
items:
allOf:
- $ref: "#/components/schemas/MediaSubscription"
- type: object
properties:
title:
description: The title of this subscription type
type: string
example: This Episode
type:
description: Metadata type number
type: integer
airingsType:
type: string
librarySectionTitle:
type: string
locationPath:
type: string
parameters:
description: Parameter string for creating this subscription
type: string
selected:
type: boolean
targetLibrarySectionID:
description: Where this subscription will record to
type: integer
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
SubscriptionTemplate:
- MediaSubscription: []
'403':
description: User cannot access DVR on this server
content:
text/html:
schema:
type: string
/music/:/transcode:
get:
operationId: transcodeMusic
summary: Transcode Music
tags:
- Transcoder
description: Audio transcode endpoint for music playback.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/myplex/account:
get:
operationId: getMyPlexAccount
summary: Get MyPlex Account
tags:
- Users
description: Get linked MyPlex account info on PMS.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/UserPlexAccount"
example:
title: string value
adsConsentReminderAt: 1
adsConsentSetAt: 1
authToken: string value
backupCodesCreated: false
confirmed: false
country: string value
email: user@example.com
emailOnlyAuth: false
entitlements:
- string value
experimentalFeatures: false
friendlyName: string value
guest: false
hasPassword: true
home: false
homeAdmin: false
homeSize: 1
id: 1
joinedAt: 1
mailingListActive: false
mailingListStatus: active
maxHomeSize: 1
pin: string value
profile:
autoSelectAudio: true
protected: false
rememberExpiresAt: 1
restricted: false
roles:
- string value
scrobbleTypes: string value
services:
- endpoint: https://plex.tv
identifier: string value
status: online
subscription:
active: true
features:
- string value
status: Inactive
subscriptions:
- active: true
features:
- string value
status: Inactive
thumb: https://plex.tv
twoFactorEnabled: false
username: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/myplex/claim:
post:
operationId: claimServer
summary: Claim Server
tags:
- General
description: Claim the local PMS server using a claim token obtained from plex.tv.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ClaimTokenResponse"
example:
token: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/myplex/refreshReachability:
put:
operationId: refreshReachability
summary: Refresh Reachability
tags:
- General
description: Refresh remote access port mapping.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/photo/:/transcode:
get:
operationId: transcodeImage
summary: Transcode an image
tags:
- Transcoder
description: Transcode an image, possibly changing format or size
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: url
description: The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url.
in: query
schema:
type: string
example: /library/metadata/265/thumb/1715112705
- name: format
description: The output format for the image; defaults to jpg
in: query
required: false
schema:
type: string
enum:
- jpg
- jpeg
- png
- ppm
- name: width
description: The desired width of the output image
in: query
schema:
type: integer
- name: height
description: The desired height of the output image
in: query
schema:
type: integer
- name: quality
description: The desired quality of the output. -1 means the highest quality. Defaults to -1
in: query
required: false
schema:
type: integer
minimum: -1
maximum: 127
- name: background
description: The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none
in: query
required: false
schema:
type: string
example: '#ff5522'
- name: upscale
description: Indicates if image should be upscaled to the desired width/height. Defaults to false
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: minSize
description: Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension.
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: rotate
description: Obey the rotation values specified in EXIF data. Defaults to true.
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: blur
description: Apply a blur to the image, Defaults to 0 (none)
in: query
required: false
schema:
type: integer
- name: saturation
description: Scale the image saturation by the specified percentage. Defaults to 100
in: query
required: false
schema:
type: integer
minimum: 0
maximum: 100
- name: opacity
description: Render the image at the specified opacity percentage. Defaults to 100
in: query
required: false
schema:
type: integer
minimum: 0
maximum: 100
- name: chromaSubsampling
description: |-
Use the specified chroma subsambling.
- 0: 411
- 1: 420
- 2: 422
- 3: 444
Defaults to 3 (444)
in: query
required: false
schema:
type: integer
enum:
- 0
- 1
- 2
- 3
- name: blendColor
description: The color to blend with the image. Defaults to none
in: query
required: false
schema:
type: string
example: '#ff5522'
responses:
'200':
description: The resulting image
content:
image/jpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
image/x-portable-pixmap:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/ping:
get:
operationId: ping
summary: Ping the server
tags:
- Authentication
description: Health / latency check. No authentication required.
security: []
servers:
- url: https://plex.tv/api/v2
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/pins:
post:
operationId: createOAuthPin
summary: Create OAuth PIN
tags:
- Authentication
description: Create a 4-character PIN for device linking via OAuth. The user must visit https://plex.tv/link and enter the PIN to authorize the device.
security:
- clientIdentifier: []
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: PIN created successfully
content:
application/json:
schema:
type: object
properties:
authToken:
type:
- string
- 'null'
clientIdentifier:
type: string
code:
type: string
createdAt:
type: string
expiresAt:
type: string
expiresIn:
type: integer
id:
type: integer
newRegistration:
type: boolean
product:
type: string
qr:
type: string
trusted:
type: boolean
example:
clientIdentifier: example
code: example
createdAt: example
expiresAt: example
expiresIn: 1
id: 1
newRegistration: true
product: example
qr: example
trusted: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/pins.xml:
post:
operationId: createLegacyPin
summary: Create Legacy PIN
tags:
- Authentication
description: Legacy PIN creation (XML).
servers:
- url: https://plex.tv
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: "#/components/schemas/LegacyPinResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/pins/link:
put:
operationId: linkOAuthPin
summary: Link OAuth PIN
tags:
- Authentication
description: Link a PIN to an account (OAuth completion).
servers:
- url: https://plex.tv/api/v2
requestBody:
content:
application/json:
example:
authToken: example
pin: example
schema:
type: object
properties:
authToken:
type: string
pin:
type: string
application/x-www-form-urlencoded:
example:
authToken: example
pin: example
schema:
type: object
properties:
authToken:
type: string
pin:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff
/player/playback/audioStream:
post:
operationId: playerAudioStream
summary: Player Audio Stream
tags:
- Playback
description: Change the active audio stream.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: streamID
description: The unique identifier of the stream
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/mute:
post:
operationId: playerMute
summary: Player Mute
tags:
- Playback
description: Mute the client audio
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/pause:
post:
operationId: playerPause
summary: Player Pause
tags:
- Playback
description: Pause playback on the client
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/play:
post:
operationId: playerPlay
summary: Player Play
tags:
- Playback
description: Start playback on the client
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/playMedia:
post:
operationId: playerPlayMedia
summary: Player Play Media
tags:
- Playback
description: Play a specific media item on the client.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: key
description: The key of the media item to play
in: query
schema:
type: string
- name: offset
description: The byte offset for stream seeking
in: query
schema:
type: integer
- name: machineIdentifier
description: The machine identifier of the target device
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/refreshPlayQueue:
post:
operationId: playerRefreshplayqueue
summary: Player Refresh Play Queue
tags:
- Playback
description: Refresh the play queue on the client
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/seek:
post:
operationId: playerSeek
summary: Player Seek
tags:
- Playback
description: Seek to a specific time in the current playback.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: offset
description: Target offset in milliseconds
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setParameters:
post:
operationId: playerSetParameters
summary: Player Set Parameters
tags:
- Playback
description: Set shuffle, repeat, and volume parameters.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: shuffle
description: Whether to enable shuffle mode
in: query
schema:
type: integer
enum:
- 0
- 1
- name: repeat
description: The repeat mode to set
in: query
schema:
type: integer
enum:
- 0
- 1
- 2
- name: volume
description: The volume level to set
in: query
schema:
type: integer
minimum: 0
maximum: 100
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setRating:
post:
operationId: playerSetRating
summary: Player Set Rating
tags:
- Playback
description: Rate the currently playing item.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: rating
description: The rating value to set
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setState:
post:
operationId: playerSetState
summary: Player Set State
tags:
- Playback
description: Set the playback state directly.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: state
description: The desired playback state
in: query
schema:
type: string
enum:
- playing
- paused
- stopped
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setStreams:
post:
operationId: playerSetStreams
summary: Player Set Streams
tags:
- Playback
description: Set active audio, subtitle, and video streams.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: audioStreamID
description: The unique identifier of the audiostream
in: query
schema:
type: integer
- name: subtitleStreamID
description: The unique identifier of the subtitlestream
in: query
schema:
type: integer
- name: videoStreamID
description: The unique identifier of the videostream
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setTextStream:
post:
operationId: playerSetTextStream
summary: Player Set Text Stream
tags:
- Playback
description: Set the active text stream.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: streamID
description: The unique identifier of the stream
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/setViewOffset:
post:
operationId: playerSetViewOffset
summary: Player Set View Offset
tags:
- Playback
description: Set the resume offset for the current item.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: offset
description: The byte offset for stream seeking
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/skipBy:
post:
operationId: playerSkipBy
summary: Player Skip By
tags:
- Playback
description: Skip forward or backward by a number of items.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: offset
description: Number of items to skip (positive for forward, negative for backward)
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/skipTo:
post:
operationId: playerSkipTo
summary: Player Skip To
tags:
- Playback
description: Skip to a specific item in the play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: key
description: The key of the item to skip to
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/stepBack:
post:
operationId: playerStepback
summary: Player Step Back
tags:
- Playback
description: Step back one frame
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/stepForward:
post:
operationId: playerStepforward
summary: Player Step Forward
tags:
- Playback
description: Step forward one frame
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/stop:
post:
operationId: playerStop
summary: Player Stop
tags:
- Playback
description: Stop playback on the client
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/subtitleStream:
post:
operationId: playerSubtitleStream
summary: Player Subtitle Stream
tags:
- Playback
description: Change the active subtitle stream.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: streamID
description: The unique identifier of the stream
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/unmute:
post:
operationId: playerUnmute
summary: Player Unmute
tags:
- Playback
description: Unmute the client audio
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/videoStream:
post:
operationId: playerVideoStream
summary: Player Video Stream
tags:
- Playback
description: Change the active video stream.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: streamID
description: The unique identifier of the stream
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/playback/volume:
post:
operationId: playerVolume
summary: Player Volume
tags:
- Playback
description: Set the client volume.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
- name: level
description: The level
in: query
schema:
type: integer
minimum: 0
maximum: 100
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/resources:
get:
operationId: getClientResources
summary: Get Client Resources
tags:
- Playback
description: Get client capabilities and device info.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/player/timeline/poll:
get:
operationId: playerPollTimeline
summary: Player Poll Timeline
tags:
- Playback
description: Poll the client for current playback timeline.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Target-Client-Identifier
description: The client identifier of the target device to control. If omitted, the command is sent to the default/active client.
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/playlists:
delete:
operationId: deletePlaylistByRatingKey
summary: Delete Playlist
tags:
- Playlists
description: Delete a playlist.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ratingKey
description: The rating key of the playlist to delete.
in: query
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: listPlaylists
summary: List playlists
tags:
- Playlist
description: Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/smart"
- name: playlistType
description: Limit to a type of playlist
in: query
schema:
type: string
enum:
- audio
- video
- photo
- name: type
description: Filter by playlist type. Use 42 for optimized/conversion items.
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: createPlaylist
summary: Create a Playlist
tags:
- Library Playlists
description: Create a new playlist. By default the playlist is blank.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uri
description: The content URI for what we're playing (e.g. `library://...`).
in: query
schema:
type: string
- name: playQueueID
description: To create a playlist from an existing play queue.
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/playlists/upload:
post:
operationId: uploadPlaylist
summary: Upload media art
tags:
- Library Playlists
description: Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: path
description: Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename.
in: query
schema:
type: string
example: /home/barkley/playlist.m3u
- name: force
description: Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed upload media art
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
$ref: "#/components/responses/200"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'500':
description: The playlist could not be imported
content:
text/html:
schema:
type: string
/playQueues:
post:
operationId: createPlayQueue
summary: Create a play queue
tags:
- Play Queue
description: |-
Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`.
Note: Either `uri` or `playlistID` must be specified
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uri
description: The content URI for what we're playing.
in: query
schema:
type: string
- name: playlistID
description: the ID of the playlist we're playing.
in: query
schema:
type: integer
- name: type
description: The type of play queue to create
in: query
required: true
schema:
type: string
enum:
- audio
- video
- photo
x-speakeasy-name-override: mediaType
- name: key
description: The key of the first item to play, defaults to the first in the play queue.
in: query
schema:
type: string
- name: shuffle
description: Whether to shuffle the playlist, defaults to 0.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: repeat
description: If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: continuous
description: Whether to create a continuous play queue (e.g. from an episode), defaults to 0.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: extrasPrefixCount
description: Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0.
in: query
schema:
type: integer
- name: recursive
description: Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: onDeck
description: Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlayQueue"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
playQueueID: 42
playQueueLastAddedItemID: 123
playQueueSelectedItemID: 1
playQueueSelectedItemOffset: 0
playQueueSelectedMetadataItemID: 456
playQueueShuffled: false
playQueueSourceURI: library://abc123/item/%2Flibrary%2Fmetadata%2F1
playQueueTotalCount: 50
playQueueVersion: 3
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/playQueues/1:
get:
operationId: getConversionQueue
summary: Get Conversion Queue
tags:
- Timeline
description: Get the conversion/optimization queue.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlayQueue"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
playQueueID: 42
playQueueLastAddedItemID: 123
playQueueSelectedItemID: 1
playQueueSelectedItemOffset: 0
playQueueSelectedMetadataItemID: 456
playQueueShuffled: false
playQueueSourceURI: library://abc123/item/%2Flibrary%2Fmetadata%2F1
playQueueTotalCount: 50
playQueueVersion: 3
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/resources:
get:
operationId: getServerResources
summary: Get Server Resources
tags:
- Plex
description: Get Plex server access tokens and server connections
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- name: includeHttps
description: Include Https entries in the results
in: query
schema:
allOf:
- $ref: "#/components/schemas/BoolInt"
- type: integer
default: 0
example: 1
- name: includeRelay
description: |-
Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
in: query
schema:
allOf:
- $ref: "#/components/schemas/BoolInt"
- type: integer
default: 0
example: 1
- name: includeIPv6
description: Include IPv6 entries in the results
in: query
schema:
allOf:
- $ref: "#/components/schemas/BoolInt"
- type: integer
default: 0
example: 1
responses:
'200':
description: List of Plex Devices. This includes Plex hosted servers and clients
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PlexDevice"
example:
- accessToken: string value
clientIdentifier: string value
connections:
- address: string value
IPv6: true
local: true
port: 1
protocol: http
relay: true
uri: string value
dnsRebindingProtection: true
home: true
httpsRequired: true
name: string value
natLoopbackSupported: true
owned: true
presence: true
product: string value
productVersion: string value
provides: string value
publicAddress: string value
publicAddressMatches: true
relay: true
synced: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
content:
application/json:
schema:
$ref: "#/components/schemas/UnauthorizedErrorResponse"
example:
errors:
- code: 1001
message: User could not be authenticated
status: 401
/security/resources:
get:
operationId: getSourceConnectionInformation
summary: Get Source Connection Information
tags:
- General
description: If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: source
description: The source identifier with an included prefix.
in: query
required: true
schema:
type: string
- name: refresh
description: Force refresh
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- $ref: "#/components/schemas/ConnectionInfoWrapper"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
accessToken: string value
clientIdentifier: string value
Connection:
- address: string value
local: true
port: 1
protocol: string value
relay: true
uri: string value
name: string value
'400':
description: A query param is missing or the wrong value
content:
text/html:
schema:
type: string
'403':
description: Invalid or no token provided or a transient token could not be created
content:
text/html:
schema:
type: string
/security/token:
post:
operationId: createTransientToken
summary: Get Transient Tokens
tags:
- General
description: |-
This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
Note: This endpoint responds to all HTTP verbs but POST in preferred
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: type
description: The value `delegation` is the only supported `type` parameter.
in: query
required: true
schema:
type: string
enum:
- delegation
x-speakeasy-name-override: mediaType
- name: scope
description: The value `all` is the only supported `scope` parameter.
in: query
required: true
schema:
type: string
enum:
- all
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
token:
description: The transient token
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
token: example
'400':
description: A query param is missing or the wrong value
content:
text/html:
schema:
type: string
'403':
description: Invalid or no token provided or a transient token could not be created
content:
text/html:
schema:
type: string
/server:
get:
operationId: getUserServer
summary: Get User Server Association
tags:
- Users
description: Get server association information for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ConnectionInfo"
example:
accessToken: string value
clientIdentifier: string value
Connection:
- address: string value
local: true
port: 1
protocol: string value
relay: true
uri: string value
name: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/server/access_tokens:
get:
operationId: getServerAccessTokens
summary: Get Server Access Tokens
tags:
- Authentication
description: List access tokens for the server.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ServerAccessTokensResponse"
example:
accessTokens:
- expiresAt: string value
scope: string value
token: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/server/users/features:
get:
operationId: getServerUserFeatures
summary: Get Server User Features
tags:
- Users
description: Get features enabled per shared user for the server.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ServerUserFeaturesResponse"
example:
features:
- type: string value
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
key: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/servers:
get:
operationId: getLocalServers
summary: Get Local Servers
tags:
- General
description: Get a list of local servers.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/services/browse:
get:
operationId: browseFilesystem
summary: Browse Filesystem
tags:
- General
description: Browse filesystem paths accessible to the server.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: includeFiles
description: Include files in browse results
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/services/ultrablur/colors:
get:
operationId: getColors
summary: Get UltraBlur Colors
tags:
- UltraBlur
description: Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: url
description: Url for image which requires color extraction. Can be relative PMS library path or absolute url.
in: query
schema:
type: string
example: /library/metadata/217745/art/1718931408
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
UltraBlurColors:
type: array
items:
$ref: "#/components/schemas/UltraBlurColors"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
UltraBlurColors:
- bottomLeft: string value
bottomRight: string value
topLeft: string value
topRight: string value
'404':
description: The image url could not be found.
content:
text/html:
schema:
type: string
'500':
description: The server was unable to successfully extract the UltraBlur colors.
content:
text/html:
schema:
type: string
/services/ultrablur/image:
get:
operationId: getImage
summary: Get UltraBlur Image
tags:
- UltraBlur
description: Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: topLeft
description: The base color (hex) for the top left quadrant.
in: query
schema:
type: string
example: 3f280a
- name: topRight
description: The base color (hex) for the top right quadrant.
in: query
schema:
type: string
example: 6b4713
- name: bottomRight
description: The base color (hex) for the bottom right quadrant.
in: query
schema:
type: string
example: 0f2a43
- name: bottomLeft
description: The base color (hex) for the bottom left quadrant.
in: query
schema:
type: string
example: 1c425d
- name: width
description: Width in pixels for the image.
in: query
schema:
type: integer
minimum: 320
maximum: 3840
example: 1920
- name: height
description: Height in pixels for the image.
in: query
schema:
type: integer
minimum: 240
maximum: 2160
example: 1080
- name: noise
description: Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
responses:
'200':
description: OK
content:
image/png:
schema:
type: string
format: binary
'400':
description: Requested width and height parameters are out of bounds (maximum 3840 x 2160)
content:
text/html:
schema:
type: string
/shared_servers:
post:
operationId: shareServer
summary: Share Server
tags:
- Users
description: Share a server with a friend or managed user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/statistics/bandwidth:
get:
operationId: getBandwidthStatistics
summary: Get Bandwidth Statistics
tags:
- General
description: Get dashboard bandwidth data.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: timespan
description: Dashboard timespan (1-6)
in: query
schema:
type: integer
minimum: 1
maximum: 6
- name: accountID
description: Filter by account ID
in: query
schema:
type: integer
- name: deviceID
description: Filter by device ID
in: query
schema:
type: integer
- name: lan
description: Filter to LAN-only traffic
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/statistics/resources:
get:
operationId: getResourceStatistics
summary: Get Resource Statistics
tags:
- General
description: Get dashboard resource data.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/status/sessions:
get:
operationId: listSessions
summary: List Sessions
tags:
- Status
description: List all current playbacks on this server
security:
- token:
- admin
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
type: array
items:
allOf:
- type: object
properties:
Player:
$ref: "#/components/schemas/Player"
Session:
$ref: "#/components/schemas/Session"
User:
$ref: "#/components/schemas/User"
- $ref: "#/components/schemas/Metadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/status/sessions/background:
get:
operationId: getBackgroundTasks
summary: Get background tasks
tags:
- Status
description: Get the list of all background tasks
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
TranscodeJob:
type: array
items:
$ref: "#/components/schemas/TranscodeJob"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
TranscodeJob:
- title: string value
type: transcode
generatorID: 1
key: string value
progress: 1
ratingKey: string value
remaining: 1
size: 1
speed: 1
targetTagID: 1
thumb: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/status/sessions/history/all:
get:
operationId: listPlaybackHistory
summary: List Playback History
tags:
- Status
description: |-
List all playback history (Admin can see all users, others can only see their own).
Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: X-Plex-Container-Start
description: Pagination start offset
in: query
schema:
type: integer
- name: X-Plex-Container-Size
description: Pagination page size
in: query
schema:
type: integer
- name: accountID
description: The account id to restrict view history
in: query
schema:
type: integer
- name: viewedAt
description: The time period to restrict history (typically of the form `viewedAt>=12456789`)
in: query
schema:
type: integer
- name: librarySectionID
description: The library section id to restrict view history
in: query
schema:
type: integer
- name: metadataItemID
description: The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type.
in: query
schema:
type: integer
- name: sort
description: The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here.
in: query
schema:
type: array
items:
type: string
example: viewedAt:desc,accountID
- name: excludeElements
description: Comma-separated list of elements to exclude from the response
in: query
schema:
type: string
- name: excludeFields
description: Comma-separated list of fields to exclude from the response
in: query
schema:
type: string
- name: includeFields
description: Whitelist of fields to return
in: query
schema:
type: string
- name: includeElements
description: Whitelist of elements to include
in: query
schema:
type: string
- name: viewedAt>
description: Greater-than filter for viewedAt timestamp
in: query
schema:
type: integer
- name: viewedAt<
description: Less-than filter for viewedAt timestamp
in: query
schema:
type: integer
- name: deviceID
description: Filter by device ID
in: query
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
type: array
items:
$ref: "#/components/schemas/PlaybackHistoryMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
accountID: 1
deviceID: 1
grandparentRatingKey: string value
grandparentTitle: string value
historyKey: string value
index: 1
key: string value
librarySectionID: string value
originallyAvailableAt: string value
parentIndex: 1
parentTitle: string value
ratingKey: string value
thumb: string value
viewedAt: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/status/sessions/terminate:
post:
operationId: terminateSession
summary: Terminate a session
tags:
- Status
description: Terminate a playback session kicking off the user
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sessionId
description: The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash))
in: query
required: true
schema:
type: string
example: cdefghijklmnopqrstuvwxyz
- name: reason
description: The reason to give to the user (typically displayed in the client)
in: query
schema:
type: string
example: Stop Playing
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed terminate a session
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'401':
description: Server does not have the feature enabled
content:
text/html:
schema:
type: string
'403':
description: sessionId is empty
content:
text/html:
schema:
type: string
'404':
description: Session not found
content:
text/html:
schema:
type: string
/sync:
get:
operationId: getSyncStatus
summary: Get Sync Status
tags:
- General
description: Get sync status overview.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithStatus"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
status: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sync/items:
get:
operationId: getSyncItems
summary: Get Sync Items
tags:
- General
description: Get sync items list.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sync/queue:
get:
operationId: getSyncQueue
summary: Get Sync Queue
tags:
- General
description: Get sync queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sync/refreshContent:
put:
operationId: refreshSyncContent
summary: Refresh Sync Content
tags:
- General
description: Force PMS to refresh content for known SyncLists.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sync/refreshSynclists:
put:
operationId: refreshSyncLists
summary: Refresh Sync Lists
tags:
- General
description: Force PMS to download new SyncList from plex.tv.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sync/transcodeQueue:
get:
operationId: getSyncTranscodeQueue
summary: Get Sync Transcode Queue
tags:
- General
description: Get sync transcode queue status.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/system/agents:
get:
operationId: getMetadataAgents
summary: Get Metadata Agents
tags:
- General
description: Get a list of available metadata agents.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/system/settings:
get:
operationId: getSystemSettings
summary: Get System Settings
tags:
- General
description: Get system-level settings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/system/updates:
get:
operationId: checkForSystemUpdates
summary: Check for System Updates
tags:
- General
description: Check for available PMS updates.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/transcode/sessions:
get:
operationId: getTranscodeSessions
summary: Get Transcode Sessions
tags:
- Transcoder
description: Get active transcode sessions.
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/updater/apply:
put:
operationId: applyUpdates
summary: Applying updates
tags:
- Updater
description: Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: tonight
description: Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: skip
description: Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: The update process started correctly
content:
text/html:
schema:
$ref: "#/components/schemas/SuccessResponse"
'400':
description: This system cannot install updates
content:
text/html:
schema:
type: string
'500':
description: The update process failed to start
content:
text/html:
schema:
type: string
/updater/check:
put:
operationId: checkUpdates
summary: Checking for updates
tags:
- Updater
description: Perform an update check and potentially download
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: download
description: Indicate that you want to start download any updates found.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated checking for updates
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/updater/status:
get:
operationId: getUpdatesStatus
summary: Querying status of updates
tags:
- Updater
description: Get the status of updating the server
security:
- token:
- admin
responses:
'200':
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
MediaContainer:
type: object
properties:
autoUpdateVersion:
description: The version of the updater (currently `1`)
type: integer
canInstall:
description: Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows)
type: boolean
checkedAt:
description: The last time a check for updates was performed
type: integer
downloadURL:
description: The URL where the update is available
type: string
Release:
type: array
items:
$ref: "#/components/schemas/Release"
status:
description: The current error code (`0` means no error)
type: integer
- $ref: "#/components/schemas/UpdaterStatus"
example:
MediaContainer:
autoUpdateVersion: 1
canInstall: true
checkedAt: 1
downloadURL: example
Release:
- added: string value
downloadURL: string value
fixed: string value
key: string value
state: available
version: string value
status: 1
checkedAt: 1
downloadURL: string value
Release:
- added: string value
downloadURL: string value
fixed: string value
key: string value
state: available
version: string value
status: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/user:
get:
operationId: getTokenDetails
summary: Get Token Details
tags:
- Authentication
description: Get the User data from the provided X-Plex-Token
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: Logged in user details
content:
application/json:
schema:
$ref: "#/components/schemas/UserPlexAccount"
example:
title: string value
adsConsentReminderAt: 1
adsConsentSetAt: 1
authToken: string value
backupCodesCreated: false
confirmed: false
country: string value
email: user@example.com
emailOnlyAuth: false
entitlements:
- string value
experimentalFeatures: false
friendlyName: string value
guest: false
hasPassword: true
home: false
homeAdmin: false
homeSize: 1
id: 1
joinedAt: 1
mailingListActive: false
mailingListStatus: active
maxHomeSize: 1
pin: string value
profile:
autoSelectAudio: true
protected: false
rememberExpiresAt: 1
restricted: false
roles:
- string value
scrobbleTypes: string value
services:
- endpoint: https://plex.tv
identifier: string value
status: online
subscription:
active: true
features:
- string value
status: Inactive
subscriptions:
- active: true
features:
- string value
status: Inactive
thumb: https://plex.tv
twoFactorEnabled: false
username: string value
uuid: string value
'400':
description: Bad Request - A parameter was not specified, or was specified incorrectly.
content:
application/json:
schema:
$ref: "#/components/schemas/BadRequestErrorResponse"
example:
errors:
- code: 1000
message: X-Plex-Client-Identifier is missing
status: 400
'401':
description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
content:
application/json:
schema:
$ref: "#/components/schemas/UnauthorizedErrorResponse"
example:
errors:
- code: 1001
message: User could not be authenticated
status: 401
/user/view_state_sync:
put:
operationId: updateViewStateSync
summary: Update View State Sync
tags:
- Users
description: Enable or disable watch-state sync consent for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/users:
get:
operationId: getUsers
summary: Get list of all connected users
tags:
- Users
description: Get list of all users that are friends and have library access with the provided Plex authentication token
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: Successful response with media container data in JSON
content:
application/json:
schema:
type: object
properties:
MediaContainer:
description: Container holding user and server details.
type: object
properties:
friendlyName:
description: The friendly name of the Plex instance.
type: string
example: myPlex
identifier:
type: string
example: com.plexapp.plugins.myplex
machineIdentifier:
description: Unique Machine identifier of the Plex server.
type: string
example: 3dff4c4da3b1229a649aa574a9e2b419a684a20e
size:
description: Number of users in the current response.
type: integer
example: 30
totalSize:
description: Total number of users.
type: integer
example: 30
User:
description: List of users with access to the Plex server.
type: array
items:
type: object
properties:
title:
description: User's display name.
type: string
example: Plex User
allowCameraUpload:
allOf:
- description: Indicates if the user is allowed to upload from a camera.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
allowChannels:
allOf:
- description: Indicates if the user has access to channels.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
allowSubtitleAdmin:
allOf:
- description: Indicates if the user can manage subtitles.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
allowSync:
allOf:
- description: Indicates if the user is allowed to sync media.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
allowTuners:
allOf:
- description: Indicates if the user is allowed to use tuners.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
email:
description: User's email address.
type: string
example: zgfuc7krcqfimrmb9lsl5j@protonmail.com
filterAll:
description: Filters applied for all content.
type:
- 'null'
- string
example: ''
filterMovies:
description: Filters applied for movies.
type:
- 'null'
- string
example: ''
filterMusic:
description: Filters applied for music.
type:
- 'null'
- string
example: ''
filterPhotos:
description: Filters applied for photos.
type:
- 'null'
- string
example: ''
filterTelevision:
description: Filters applied for television.
type: string
example: ''
home:
allOf:
- description: Indicates if the user is part of a home group.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
id:
description: User's unique ID.
type: integer
example: 22526914
protected:
allOf:
- description: Indicates whether the account is protected.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
recommendationsPlaylistId:
description: ID of the user's recommendation playlist.
type:
- 'null'
- string
example: ''
restricted:
allOf:
- description: Indicates if the user has restricted access.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
Server:
description: List of servers owned by the user.
type: array
items:
type: object
properties:
allLibraries:
allOf:
- description: Indicates if the user has access to all libraries.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
id:
description: Unique ID of the server of the connected user
type: integer
example: 907759180
lastSeenAt:
$ref: "#/components/schemas/PlexDateTime"
machineIdentifier:
description: Machine identifier of the Plex server.
type: string
example: fbb8aa6be6e0c997c6268bc2b4431c8807f70a3
name:
description: Name of the Plex server of the connected user.
type: string
example: ConnectedUserFlix
numLibraries:
description: Number of libraries in the server this user has access to.
type: integer
example: 16
owned:
allOf:
- description: Indicates if the user owns the server.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
pending:
allOf:
- description: Indicates if the server is pending approval.
- type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- DISABLE
- ENABLE
serverId:
description: ID of the actual Plex server.
type: integer
example: 9999999
required:
- id
- serverId
- machineIdentifier
- name
- lastSeenAt
- numLibraries
- allLibraries
- owned
- pending
thumb:
description: URL to the user's avatar image.
type: string
example: https://plex.tv/users/3346028014e93acd/avatar?c=1731605021
username:
description: User's username.
type: string
example: zgfuc7krcqfimrmb9lsl5j
required:
- id
- title
- username
- email
- thumb
- protected
- home
- allowTuners
- allowSync
- allowCameraUpload
- allowChannels
- allowSubtitleAdmin
- restricted
- Server
required:
- friendlyName
- identifier
- machineIdentifier
- totalSize
- size
- User
example:
MediaContainer:
friendlyName: myPlex
identifier: com.plexapp.plugins.myplex
machineIdentifier: 3dff4c4da3b1229a649aa574a9e2b419a684a20e
size: 30
totalSize: 30
'400':
description: Bad Request - A parameter was not specified, or was specified incorrectly.
content:
application/json:
schema:
$ref: "#/components/schemas/BadRequestErrorResponse"
example:
errors:
- code: 1000
message: X-Plex-Client-Identifier is missing
status: 400
'401':
description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
content:
application/json:
schema:
$ref: "#/components/schemas/UnauthorizedErrorResponse"
example:
errors:
- code: 1001
message: User could not be authenticated
status: 401
/users/account:
get:
operationId: getAccountXML
summary: Get Account (XML)
tags:
- Users
description: Get the logged-in user's account details in XML format (legacy v1 endpoint).
servers:
- url: https://plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/xml:
schema:
$ref: "#/components/schemas/UserPlexAccount"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/users/account.json:
get:
operationId: getAccountJSON
summary: Get Account (JSON)
tags:
- Users
description: Get the logged-in user's account details in JSON format (legacy v1 endpoint).
servers:
- url: https://plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/UserPlexAccount"
example:
title: string value
adsConsentReminderAt: 1
adsConsentSetAt: 1
authToken: string value
backupCodesCreated: false
confirmed: false
country: string value
email: user@example.com
emailOnlyAuth: false
entitlements:
- string value
experimentalFeatures: false
friendlyName: string value
guest: false
hasPassword: true
home: false
homeAdmin: false
homeSize: 1
id: 1
joinedAt: 1
mailingListActive: false
mailingListStatus: active
maxHomeSize: 1
pin: string value
profile:
autoSelectAudio: true
protected: false
rememberExpiresAt: 1
restricted: false
roles:
- string value
scrobbleTypes: string value
services:
- endpoint: https://plex.tv
identifier: string value
status: online
subscription:
active: true
features:
- string value
status: Inactive
subscriptions:
- active: true
features:
- string value
status: Inactive
thumb: https://plex.tv
twoFactorEnabled: false
username: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/users/password:
post:
operationId: changePassword
summary: Change Password
tags:
- Authentication
description: Change or reset the logged-in user's password.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/users/signin:
post:
operationId: postUsersSignInData
summary: Get User Sign In Data
tags:
- Authentication
description: Sign in user with username and password and return user data with Plex authentication token
security: []
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
requestBody:
description: Login credentials
content:
application/x-www-form-urlencoded:
example:
login: username@email.com
password: password123
rememberMe: true
verificationCode: '123456'
schema:
type: object
properties:
login:
type: string
format: email
example: username@email.com
password:
type: string
format: password
example: password123
rememberMe:
type: boolean
default: false
verificationCode:
type: string
example: '123456'
required:
- login
- password
responses:
'201':
description: Returns the user account data with a valid auth token
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/UserPlexAccount"
- type: object
properties:
pastSubscriptions:
type: array
items:
title: PastSubscription
type: object
properties:
type:
type: string
example: plexpass
billing:
type: object
properties:
internalPaymentMethod:
type: object
paymentMethodId:
type:
- integer
- 'null'
required:
- internalPaymentMethod
- paymentMethodId
canceled:
type: boolean
default: false
example: false
canConvert:
type: boolean
default: false
example: false
canDowngrade:
type: boolean
default: false
example: false
canReactivate:
type: boolean
default: false
example: false
canUpgrade:
type: boolean
default: false
example: false
endsAt:
oneOf:
- $ref: "#/components/schemas/PlexDateTime"
- type: 'null'
gracePeriod:
type: boolean
default: false
example: false
id:
type:
- string
- 'null'
mode:
type:
- string
- 'null'
onHold:
type: boolean
default: false
example: false
renewsAt:
oneOf:
- $ref: "#/components/schemas/PlexDateTime"
- type: 'null'
state:
type: string
enum:
- ended
example: ended
x-speakeasy-unknown-values: allow
transfer:
type:
- string
- 'null'
required:
- id
- mode
- renewsAt
- endsAt
- canceled
- gracePeriod
- onHold
- canReactivate
- canUpgrade
- canDowngrade
- canConvert
- type
- transfer
- state
- billing
trials:
type: array
items:
type: object
required:
- pastSubscriptions
- trials
example:
title: string value
adsConsentReminderAt: 1
adsConsentSetAt: 1
authToken: string value
backupCodesCreated: false
confirmed: false
country: string value
email: user@example.com
emailOnlyAuth: false
entitlements:
- string value
experimentalFeatures: false
friendlyName: string value
guest: false
hasPassword: true
home: false
homeAdmin: false
homeSize: 1
id: 1
joinedAt: 1
mailingListActive: false
mailingListStatus: active
maxHomeSize: 1
pin: string value
profile:
autoSelectAudio: true
protected: false
rememberExpiresAt: 1
restricted: false
roles:
- string value
scrobbleTypes: string value
services:
- endpoint: https://plex.tv
identifier: string value
status: online
subscription:
active: true
features:
- string value
status: Inactive
subscriptions:
- active: true
features:
- string value
status: Inactive
thumb: https://plex.tv
twoFactorEnabled: false
username: string value
uuid: string value
pastSubscriptions:
- type: plexpass
billing:
internalPaymentMethod: {}
canceled: false
canConvert: false
canDowngrade: false
canReactivate: false
canUpgrade: false
endsAt: 1556281940
gracePeriod: false
onHold: false
renewsAt: 1556281940
state: ended
trials:
- {}
'400':
description: Bad Request - A parameter was not specified, or was specified incorrectly.
content:
application/json:
schema:
$ref: "#/components/schemas/BadRequestErrorResponse"
example:
errors:
- code: 1000
message: X-Plex-Client-Identifier is missing
status: 400
'401':
description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
content:
application/json:
schema:
$ref: "#/components/schemas/UnauthorizedErrorResponse"
example:
errors:
- code: 1001
message: User could not be authenticated
status: 401
/users/signout:
delete:
operationId: signOut
summary: Sign Out
tags:
- Authentication
description: Invalidate the current authentication token.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
/webhooks:
get:
operationId: getWebhooks
summary: Get Webhooks
tags:
- General
description: List configured webhook URLs for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookPayload"
example:
Account:
title: string value
id: 1
thumb: string value
event: media.play
Metadata: {}
owner: true
Player:
title: string value
local: true
publicAddress: string value
uuid: string value
Server:
title: string value
uuid: string value
user: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addWebhook
summary: Add Webhook
tags:
- General
description: Add a webhook URL for the logged-in user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/decision:
get:
operationId: makeDecision
summary: Make a decision on media playback
tags:
- Transcoder
description: Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/transcodeType"
- $ref: "#/components/parameters/transcodeSessionId"
- $ref: "#/components/parameters/advancedSubtitles"
- name: platform
description: Client platform (some clients send this in addition to headers).
in: query
schema:
type: string
- name: audioBoost
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: audioChannelCount
description: Target video number of audio channels.
in: query
schema:
type: integer
minimum: 1
maximum: 8
example: 5
- name: autoAdjustQuality
description: Indicates the client supports ABR.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: autoAdjustSubtitle
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directPlay
description: Indicates the client supports direct playing the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStream
description: Indicates the client supports direct streaming the video of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStreamAudio
description: Indicates the client supports direct streaming the audio of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: disableResolutionRotation
description: Indicates if resolution should be adjusted for orientation.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: hasMDE
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: location
description: Network type of the client, can be used to help determine target bitrate.
in: query
schema:
type: string
enum:
- lan
- wan
- cellular
example: wan
- name: mediaBufferSize
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
in: query
schema:
type: integer
example: 102400
- name: mediaIndex
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
in: query
schema:
type: integer
example: 0
- name: musicBitrate
description: Target bitrate for audio only files (in kbps, used to transcode).
in: query
schema:
type: integer
minimum: 0
example: 5000
- name: offset
description: Offset from the start of the media (in seconds).
in: query
schema:
type: number
example: 90.5
- name: partIndex
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
in: query
schema:
type: integer
example: 0
- name: path
description: Internal PMS path of the media to transcode.
in: query
schema:
type: string
example: /library/metadata/151671
- name: peakBitrate
description: Maximum bitrate (in kbps) to use in ABR.
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: photoResolution
description: Target photo resolution.
in: query
schema:
type: string
pattern: ^\d[x:]\d$
example: 1080x1080
- name: protocol
description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)"
in: query
schema:
type: string
enum:
- http
- hls
- dash
example: dash
- name: secondsPerSegment
description: Number of seconds to include in each transcoded segment
in: query
schema:
type: integer
example: 5
- name: subtitleSize
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: subtitles
description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream"
in: query
schema:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
- unknown
example: burn
- name: maxVideoBitrate
description: Client-side maximum video bitrate cap in kbps
in: query
schema:
type: integer
- name: videoResolution
description: Cap resolution string (e.g. 1920x1080)
in: query
schema:
type: string
- name: copyts
description: Copy timestamps instead of re-encoding them
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: videoBitrate
description: Target video bitrate (in kbps).
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: videoQuality
description: Target photo quality.
in: query
schema:
type: integer
minimum: 0
maximum: 99
example: 50
- name: X-Plex-Client-Identifier
description: Unique per client.
in: header
required: true
schema:
type: string
- name: X-Plex-Client-Profile-Extra
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
in: header
schema:
type: string
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
- name: X-Plex-Client-Profile-Name
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
in: header
schema:
type: string
example: generic
- name: X-Plex-Device
description: Device the client is running on
in: header
schema:
type: string
example: Windows
- name: X-Plex-Model
description: Model of the device the client is running on
in: header
schema:
type: string
example: standalone
- name: X-Plex-Platform
description: Client Platform
in: header
schema:
type: string
example: Chrome
- name: X-Plex-Platform-Version
description: Client Platform Version
in: header
schema:
type: string
example: 135
- name: X-Plex-Session-Identifier
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
in: header
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDecision"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: example
generalDecisionCode: 1
generalDecisionText: example
mdeDecisionCode: 1
mdeDecisionText: example
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
transcodeDecisionCode: 1
transcodeDecisionText: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/fallback:
post:
operationId: triggerFallback
summary: Manually trigger a transcoder fallback
tags:
- Transcoder
description: 'Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw'
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/transcodeType"
- $ref: "#/components/parameters/transcodeSessionId"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed manually trigger a transcoder fallback
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'404':
description: Session ID does not exist
content:
text/html:
schema:
type: string
'412':
description: Transcode could not fallback
content:
text/html:
schema:
type: string
'500':
description: Transcode failed to fallback
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/subtitles:
get:
operationId: transcodeSubtitles
summary: Transcode subtitles
tags:
- Transcoder
description: Only transcode subtitle streams.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/transcodeType"
- $ref: "#/components/parameters/transcodeSessionId"
- $ref: "#/components/parameters/advancedSubtitles"
- name: platform
description: Client platform (some clients send this in addition to headers).
in: query
schema:
type: string
- name: audioBoost
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: audioChannelCount
description: Target video number of audio channels.
in: query
schema:
type: integer
minimum: 1
maximum: 8
example: 5
- name: autoAdjustQuality
description: Indicates the client supports ABR.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: autoAdjustSubtitle
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directPlay
description: Indicates the client supports direct playing the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStream
description: Indicates the client supports direct streaming the video of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStreamAudio
description: Indicates the client supports direct streaming the audio of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: disableResolutionRotation
description: Indicates if resolution should be adjusted for orientation.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: hasMDE
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: location
description: Network type of the client, can be used to help determine target bitrate.
in: query
schema:
type: string
enum:
- lan
- wan
- cellular
example: wan
- name: mediaBufferSize
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
in: query
schema:
type: integer
example: 102400
- name: mediaIndex
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
in: query
schema:
type: integer
example: 0
- name: musicBitrate
description: Target bitrate for audio only files (in kbps, used to transcode).
in: query
schema:
type: integer
minimum: 0
example: 5000
- name: offset
description: Offset from the start of the media (in seconds).
in: query
schema:
type: number
example: 90.5
- name: partIndex
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
in: query
schema:
type: integer
example: 0
- name: path
description: Internal PMS path of the media to transcode.
in: query
schema:
type: string
example: /library/metadata/151671
- name: peakBitrate
description: Maximum bitrate (in kbps) to use in ABR.
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: photoResolution
description: Target photo resolution.
in: query
schema:
type: string
pattern: ^\d[x:]\d$
example: 1080x1080
- name: protocol
description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)"
in: query
schema:
type: string
enum:
- http
- hls
- dash
example: dash
- name: secondsPerSegment
description: Number of seconds to include in each transcoded segment
in: query
schema:
type: integer
example: 5
- name: subtitleSize
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: subtitles
description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream"
in: query
schema:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
- unknown
example: burn
- name: maxVideoBitrate
description: Client-side maximum video bitrate cap in kbps
in: query
schema:
type: integer
- name: videoResolution
description: Cap resolution string (e.g. 1920x1080)
in: query
schema:
type: string
- name: copyts
description: Copy timestamps instead of re-encoding them
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: videoBitrate
description: Target video bitrate (in kbps).
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: videoQuality
description: Target photo quality.
in: query
schema:
type: integer
minimum: 0
maximum: 99
example: 50
- name: X-Plex-Client-Identifier
description: Unique per client.
in: header
required: true
schema:
type: string
- name: X-Plex-Client-Profile-Extra
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
in: header
schema:
type: string
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
- name: X-Plex-Client-Profile-Name
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
in: header
schema:
type: string
example: generic
- name: X-Plex-Device
description: Device the client is running on
in: header
schema:
type: string
example: Windows
- name: X-Plex-Model
description: Model of the device the client is running on
in: header
schema:
type: string
example: standalone
- name: X-Plex-Platform
description: Client Platform
in: header
schema:
type: string
example: Chrome
- name: X-Plex-Platform-Version
description: Client Platform Version
in: header
schema:
type: string
example: 135
- name: X-Plex-Session-Identifier
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
in: header
schema:
type: string
responses:
'200':
description: Transcoded subtitle file
content:
text/srt:
schema:
$ref: "#/components/schemas/BinaryResponse"
example: |
1
00:00:02,499 --> 00:00:06,416
[SERENE MUSIC]
2
00:00:11,791 --> 00:00:13,958
[BROOK BABBLES]
[FLY BUZZES]
3
00:00:16,166 --> 00:00:17,666
[BIRD TWEETS]
4
00:00:17,666 --> 00:00:18,708
[WINGS FLAP]
5
00:00:19,833 --> 00:00:20,374
[BIRD TWEETS]
[WINGS FLAP]
6
00:00:20,374 --> 00:00:21,041
[THUD]
7
00:00:21,374 --> 00:00:22,249
[THUD]
8
00:00:22,249 --> 00:00:23,083
[SQUIRREL LAUGHS]
9
00:00:26,249 --> 00:00:27,541
[SNORES]
10
00:00:29,416 --> 00:00:30,708
[SNORES]
11
00:00:32,749 --> 00:00:34,041
[BUNNY SNORES]
12
00:00:35,916 --> 00:00:37,249
[BUNNY SNORES]
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/activities/{activityId}:
delete:
operationId: cancelActivity
summary: Cancel a running activity
tags:
- Activities
description: Cancel a running activity. Admins can cancel all activities but other users can only cancel their own
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: activityId
description: The UUID of the activity to cancel.
in: path
required: true
schema:
type: string
example: d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted cancel a running activity
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Activity is not cancellable
content:
text/html:
schema:
type: string
'404':
description: No activity with the provided id is found
content:
text/html:
schema:
type: string
/butler/{butlerTask}:
delete:
operationId: stopTask
summary: Stop a single Butler task
tags:
- Butler
description: This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: butlerTask
description: The task name
in: path
required: true
schema:
type: string
enum:
- AutomaticUpdates
- BackupDatabase
- ButlerTaskGenerateAdMarkers
- ButlerTaskGenerateCreditsMarkers
- ButlerTaskGenerateIntroMarkers
- ButlerTaskGenerateVoiceActivity
- CleanOldBundles
- CleanOldCacheFiles
- DeepMediaAnalysis
- GarbageCollectBlobs
- GarbageCollectLibraryMedia
- GenerateBlurHashes
- GenerateChapterThumbs
- GenerateMediaIndexFiles
- LoudnessAnalysis
- MusicAnalysis
- OptimizeDatabase
- RefreshEpgGuides
- RefreshLibraries
- RefreshLocalMedia
- RefreshPeriodicMetadata
- UpgradeMediaAnalysis
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted stop a single butler task
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'404':
description: No task with this name was found or no task with this name was running
content:
text/html:
schema:
type: string
post:
operationId: startTask
summary: Start a single Butler task
tags:
- Butler
description: This endpoint will attempt to start a specific Butler task by name.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: butlerTask
description: The task name
in: path
required: true
schema:
type: string
enum:
- AutomaticUpdates
- BackupDatabase
- ButlerTaskGenerateAdMarkers
- ButlerTaskGenerateCreditsMarkers
- ButlerTaskGenerateIntroMarkers
- ButlerTaskGenerateVoiceActivity
- CleanOldBundles
- CleanOldCacheFiles
- DeepMediaAnalysis
- GarbageCollectBlobs
- GarbageCollectLibraryMedia
- GenerateBlurHashes
- GenerateChapterThumbs
- GenerateMediaIndexFiles
- LoudnessAnalysis
- MusicAnalysis
- OptimizeDatabase
- RefreshEpgGuides
- RefreshLibraries
- RefreshLocalMedia
- RefreshPeriodicMetadata
- UpgradeMediaAnalysis
responses:
'200':
description: Task started
content:
text/html:
schema:
$ref: "#/components/schemas/SuccessResponse"
'202':
description: Task is already running
content:
text/html:
schema:
type: string
'404':
description: No task with this name was found
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}:
get:
operationId: getDownloadQueue
summary: Get a download queue
tags:
- Download Queue
description: |-
Available: 0.2.0
Get a download queue by its id
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
DownloadQueue:
type: array
items:
$ref: "#/components/schemas/DownloadQueue"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
DownloadQueue:
- id: 1
itemCount: 1
status: deciding
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/add:
post:
operationId: addDownloadQueueItems
summary: Add to download queue
tags:
- Download Queue
description: |-
Available: 0.2.0
Add items to the download queue
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/advancedSubtitles"
- $ref: "#/components/parameters/audioBoost"
- $ref: "#/components/parameters/audioChannelCount"
- $ref: "#/components/parameters/autoAdjustQuality"
- $ref: "#/components/parameters/autoAdjustSubtitle"
- $ref: "#/components/parameters/directPlay"
- $ref: "#/components/parameters/directStream"
- $ref: "#/components/parameters/directStreamAudio"
- $ref: "#/components/parameters/disableResolutionRotation"
- $ref: "#/components/parameters/hasMDE"
- $ref: "#/components/parameters/location"
- $ref: "#/components/parameters/mediaBufferSize"
- $ref: "#/components/parameters/mediaIndex"
- $ref: "#/components/parameters/musicBitrate"
- $ref: "#/components/parameters/offset"
- $ref: "#/components/parameters/partIndex"
- $ref: "#/components/parameters/path"
- $ref: "#/components/parameters/peakBitrate"
- $ref: "#/components/parameters/photoResolution"
- $ref: "#/components/parameters/protocol"
- $ref: "#/components/parameters/secondsPerSegment"
- $ref: "#/components/parameters/subtitleSize"
- $ref: "#/components/parameters/subtitles"
- $ref: "#/components/parameters/videoBitrate"
- $ref: "#/components/parameters/videoQuality"
- $ref: "#/components/parameters/videoResolution"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: keys
description: Keys to add
in: query
required: true
explode: false
schema:
type: array
items:
type: string
example:
- /library/metadata/3
- /library/metadata/6
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
AddedQueueItems:
type: array
items:
$ref: "#/components/schemas/AddedQueueItem"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
AddedQueueItems:
- id: 1
key: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/items:
get:
operationId: listDownloadQueueItems
summary: Get download queue items
tags:
- Download Queue
description: |-
Available: 0.2.0
Get items from a download queue
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
DownloadQueueItem:
type: array
items:
$ref: "#/components/schemas/DownloadQueueItem"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
DownloadQueueItem:
- DecisionResult:
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: string value
generalDecisionCode: 1
generalDecisionText: string value
mdeDecisionCode: 1
mdeDecisionText: string value
transcodeDecisionCode: 1
transcodeDecisionText: string value
error: string value
id: 1
key: string value
queueId: 1
status: deciding
transcode: {}
TranscodeSession:
complete: true
context: string value
duration: 1
error: true
key: string value
progress: 1
protocol: string value
size: 1
sourceAudioCodec: string value
sourceVideoCodec: string value
speed: 1
throttled: true
transcodeHwFullPipeline: true
transcodeHwRequested: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/downloads/{channel}.json:
get:
operationId: getPlexDownloads
summary: Get Plex Downloads
tags:
- General
description: Get available Plex update downloads for a specific channel (e.g. `plexpass`, `public`).
servers:
- url: https://plex.tv
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: channel
description: The channel identifier
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PlexDownloadsResponse"
example:
MediaContainer:
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
size: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/home/users/{id}/switch:
post:
operationId: switchHomeUser
summary: Switch Home User
tags:
- Authentication
description: Switch to a Plex Home user and return a new auth token.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/home/users/{userId}:
delete:
operationId: deleteHomeUser
summary: Delete Home User
tags:
- Users
description: Remove a Plex Home user.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: userId
description: The unique identifier of the user
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: updateHomeUser
summary: Update Home User
tags:
- Users
description: Update a Plex Home user.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: userId
description: The unique identifier of the user
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/home/users/restricted/{userId}:
put:
operationId: updateRestrictedUser
summary: Update Restricted User
tags:
- Users
description: Update restricted (managed) home user settings.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: userId
description: The unique identifier of the user
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/metadata/{metadataId}:
get:
operationId: getMetadataHubs
summary: Get hubs for section by metadata item
tags:
- Hubs
description: Get the hubs for a section by metadata item. Currently only for music sections
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: metadataId
description: The metadata ID for the hubs to fetch
in: path
required: true
schema:
type: integer
- name: onlyTransient
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/responses-200"
description: Successfully retrieved get hubs for section by metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: No metadata with that id or permission is denied
content:
text/html:
schema:
type: string
/hubs/metadata/{metadataId}/postplay:
get:
operationId: getPostplayHubs
summary: Get postplay hubs
tags:
- Hubs
description: Get the hubs for a metadata to be displayed in post play
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: metadataId
description: The metadata ID for the hubs to fetch
in: path
required: true
schema:
type: integer
- name: onlyTransient
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/responses-200"
description: Successfully retrieved get postplay hubs
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: No metadata with that id or permission is denied
content:
text/html:
schema:
type: string
/hubs/metadata/{metadataId}/related:
get:
operationId: getRelatedHubs
summary: Get related hubs
tags:
- Hubs
description: Get the hubs for a metadata related to the provided metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: metadataId
description: The metadata ID for the hubs to fetch
in: path
required: true
schema:
type: integer
- name: onlyTransient
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/responses-200"
description: Successfully retrieved get related hubs
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: No metadata with that id or permission is denied
content:
text/html:
schema:
type: string
/hubs/sections/{sectionId}:
get:
operationId: getSectionHubs
summary: Get section hubs
tags:
- Hubs
description: Get the hubs for a single section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: sectionId
description: The section ID for the hubs to fetch
in: path
required: true
schema:
type: integer
- name: onlyTransient
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
description: No section with that id or permission is denied
content:
text/html:
schema:
type: string
/hubs/sections/{sectionId}/manage:
delete:
operationId: resetSectionDefaults
summary: Reset hubs to defaults
tags:
- Hubs
description: Reset hubs for this section to defaults and delete custom hubs
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to reorder
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted reset hubs to defaults
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: Section id was not found
content:
text/html:
schema:
type: string
get:
operationId: listHubs
summary: Get hubs
tags:
- Hubs
description: Get the list of hubs including both built-in and custom
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to reorder
in: path
required: true
schema:
type: integer
- name: metadataItemId
description: Restrict hubs to ones relevant to the provided metadata item
in: query
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Hub:
type: array
items:
$ref: "#/components/schemas/ManagedHub"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
homeVisibility: all
identifier: string value
promotedToOwnHome: true
promotedToRecommended: true
promotedToSharedHome: true
recommendationsVisibility: all
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: Section id was not found
content:
text/html:
schema:
type: string
post:
operationId: createCustomHub
summary: Create a custom hub
tags:
- Hubs
description: Create a custom hub based on a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to reorder
in: path
required: true
schema:
type: integer
- name: metadataItemId
description: The metadata item on which to base this hub. This must currently be a collection
in: query
required: true
schema:
type: integer
- name: promotedToRecommended
description: Whether this hub should be displayed in recommended
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: promotedToOwnHome
description: Whether this hub should be displayed in admin's home
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: promotedToSharedHome
description: Whether this hub should be displayed in shared user's home
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed create a custom hub
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: A hub could not be created with this metadata item
content:
text/html:
schema:
type: string
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: Section id or metadata item was not found
content:
text/html:
schema:
type: string
/hubs/sections/{sectionId}/manage/move:
put:
operationId: moveHub
summary: Move Hub
tags:
- Hubs
description: Changed the ordering of a hub among others hubs
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to reorder
in: path
required: true
schema:
type: integer
- name: identifier
description: The identifier of the hub to move
in: query
required: true
schema:
type: string
- name: after
description: The identifier of the hub to order this hub after (or empty/missing to put this hub first)
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/get-responses-200"
description: Successfully updated move hub
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: Section id was not found
content:
text/html:
schema:
type: string
/library/collections/{collectionId}/items:
get:
operationId: getCollectionItems
summary: Get items in a collection
tags:
- Content
description: Get items in a collection. Note if this collection contains more than 100 items, paging must be used.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: collectionId
description: The collection id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'404':
description: Collection not found
content:
text/html:
schema:
type: string
put:
operationId: addCollectionItems
summary: Add items to a collection
tags:
- Library Collections
description: Add items to a collection by uri
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: collectionId
description: The collection id
in: path
required: true
schema:
type: integer
- name: uri
description: The URI describing the items to add to this collection
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'404':
description: Collection not found
content:
text/html:
schema:
type: string
/library/metadata/{id}/arts:
post:
operationId: uploadArt
summary: Upload media art Art
tags:
- Library
description: Upload custom background art for a metadata item.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
requestBody:
content:
multipart/form-data:
example:
file: example
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/children:
get:
operationId: getMetadataChildren
summary: Get Metadata Children
tags:
- Library
description: Get children of a show, season, artist, or album.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/computePath:
get:
operationId: computeSonicPath
summary: Compute Sonic Path
tags:
- Library
description: Compute a sonic adventure path from a starting track.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/grandchildren:
get:
operationId: getMetadataGrandchildren
summary: Get Metadata Grandchildren
tags:
- Library
description: Get grandchildren (e.g. episodes under a show).
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/grandparent:
get:
operationId: getMetadataGrandparent
summary: Get Metadata Grandparent
tags:
- Library
description: Get grandparent metadata shortcut.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/nearest:
get:
operationId: getNearestMetadata
summary: Get Nearest Metadata
tags:
- Library
description: Get sonically similar items for a music track.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
- name: excludeParentID
description: The unique identifier of the excludeparent
in: query
required: false
schema:
type: integer
- name: excludeGrandparentID
description: The unique identifier of the excludegrandparent
in: query
required: false
schema:
type: integer
- name: limit
description: Maximum number of items to return
in: query
required: false
schema:
type: integer
- name: maxDistance
description: The maxDistance
in: query
required: false
schema:
type: number
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/onDeck:
get:
operationId: getMetadataOnDeck
summary: Get Metadata On Deck
tags:
- Library
description: Get On Deck status for a show or season.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/parent:
get:
operationId: getMetadataParent
summary: Get Metadata Parent
tags:
- Library
description: Get parent metadata shortcut.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/posters:
post:
operationId: uploadPoster
summary: Upload media art Poster
tags:
- Library
description: Upload a custom poster image for a metadata item.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
requestBody:
content:
multipart/form-data:
example:
file: example
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{id}/reviews:
get:
operationId: getMetadataReviews
summary: Get Metadata Reviews
tags:
- Library
description: Get user reviews for a metadata item.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: id
description: The unique identifier of the item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}:
delete:
operationId: deleteMetadataItem
summary: Delete a metadata item
tags:
- Library
description: Delete a single metadata item from the library, deleting media as well
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: proxy
description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Media items could not be deleted
content:
text/html:
schema:
type: string
get:
operationId: getMetadataItem
summary: Get a metadata item
tags:
- Content
description: Get one or more metadata items.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: array
items:
type: string
- name: asyncCheckFiles
description: Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: asyncRefreshLocalMediaAgent
description: Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: asyncRefreshAnalysis
description: Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: checkFiles
description: Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: skipRefresh
description: Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: checkFileAvailability
description: Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: asyncAugmentMetadata
description: Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: augmentCount
description: Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeMarkers
description: Include intro/credits markers in the response
in: query
schema:
type: boolean
- name: includeGuids
description: Include external GUIDs (e.g. TMDB, TVDB) in the response
in: query
schema:
type: boolean
- name: includeChapters
description: Include chapter data in the response
in: query
schema:
type: boolean
- name: includeExternalMedia
description: Include external/online media in the response
in: query
schema:
type: boolean
- name: includeExtras
description: Include trailers, behind-the-scenes, and other extras
in: query
schema:
type: boolean
- name: includeRelated
description: Include related items in the response
in: query
schema:
type: boolean
- name: includeOnDeck
description: Include On Deck status in the response
in: query
schema:
type: boolean
- name: includePopularLeaves
description: Include popular episodes in the response
in: query
schema:
type: boolean
- name: includeReviews
description: Include user reviews in the response
in: query
schema:
type: boolean
- name: includeStations
description: Include radio station data in the response
in: query
schema:
type: boolean
- name: excludeElements
description: Comma-separated list of elements to exclude from the response
in: query
schema:
type: string
- name: excludeFields
description: Comma-separated list of fields to exclude from the response
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: editMetadataItem
summary: Edit a metadata item
tags:
- Library
description: Edit metadata items setting fields
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: array
items:
type: string
- name: args
description: The new values for the metadata item
in: query
schema:
type: object
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated edit a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Media items could not be deleted
content:
text/html:
schema:
type: string
/library/metadata/{ids}/addetect:
put:
operationId: detectAds
summary: Ad-detect an item
tags:
- Library
description: Start the detection of ads in a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated ad-detect an item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/allLeaves:
get:
operationId: getAllItemLeaves
summary: Get the leaves of an item
tags:
- Library
description: Get the leaves for a metadata item such as the episodes in a show
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/analyze:
put:
operationId: analyzeMetadata
summary: Analyze an item
tags:
- Library
description: Start the analysis of a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: thumbOffset
description: Set the offset to be used for thumbnails
in: query
required: false
schema:
type: number
- name: artOffset
description: Set the offset to be used for artwork
in: query
required: false
schema:
type: number
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated analyze an item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/chapterThumbs:
put:
operationId: generateThumbs
summary: Generate thumbs of chapters for an item
tags:
- Library
description: Start the chapter thumb generation for an item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: force
description: Force the operation even if conditions are not met
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated generate thumbs of chapters for an item
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/credits:
put:
operationId: detectCredits
summary: Credit detect a metadata item
tags:
- Library
description: Start credit detection on a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: force
description: Force the operation even if conditions are not met
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: manual
description: Whether to perform the operation manually
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated credit detect a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/extras:
get:
operationId: getExtras
summary: Get an item's extras
tags:
- Library
description: Get the extras for a metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: addExtras
summary: Add to an item's extras
tags:
- Library
description: Add an extra to a metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/title"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: extraType
description: The metadata type of the extra
in: query
schema:
type: integer
- name: url
description: The URL of the extra
in: query
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed add to an item's extras
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'404':
description: Either the metadata item is not present or the extra could not be added
content:
text/html:
schema:
type: string
/library/metadata/{ids}/file:
get:
operationId: getFile
summary: Get a file from a metadata or media bundle
tags:
- Library
description: Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: url
description: The bundle url, typically starting with `metadata://` or `media://`
in: query
schema:
type: string
responses:
'200':
description: OK
content:
audio/mpeg3:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/index:
put:
operationId: startBifGeneration
summary: Start BIF generation of an item
tags:
- Library
description: Start the indexing (BIF generation) of an item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: force
description: Force the operation even if conditions are not met
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated start bif generation of an item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/intro:
put:
operationId: detectIntros
summary: Intro detect an item
tags:
- Library
description: Start the detection of intros in a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: force
description: Indicate whether detection should be re-run
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: threshold
description: The threshold for determining if content is an intro or not
in: query
required: false
schema:
type: number
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated intro detect an item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/marker:
post:
operationId: createMarker
summary: Create a marker
tags:
- Library
description: Create a marker for this user on the metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: type
description: The type of marker to edit/create
in: query
required: true
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: startTimeOffset
description: The start time of the marker
in: query
required: true
schema:
type: integer
- name: endTimeOffset
description: The end time of the marker
in: query
schema:
type: integer
- name: attributes
description: The attributes to assign to this marker
in: query
style: deepObject
schema:
type: object
example:
title: My favorite spot
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- $ref: "#/components/schemas/Marker"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
title: string value
type: intro
color: string value
endTimeOffset: 1
id: 1
startTimeOffset: 1
'400':
description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset`
content:
text/html:
schema:
type: string
/library/metadata/{ids}/match:
put:
operationId: matchItem
summary: Match a metadata item
tags:
- Library
description: Match a metadata item to a guid
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: guid
description: The guid
in: query
schema:
type: string
- name: name
description: The name
in: query
required: false
schema:
type: string
- name: year
description: The year to filter by
in: query
required: false
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated match a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/matches:
put:
operationId: listMatches
summary: Get metadata matches for an item
tags:
- Library
description: Get the list of metadata matches for a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: title
description: The title to filter by
in: query
schema:
type: string
- name: parentTitle
description: The parentTitle
in: query
required: false
schema:
type: string
- name: agent
description: The identifier of the metadata agent to use
in: query
required: false
schema:
type: string
- name: language
description: The language code to use
in: query
required: false
schema:
type: string
- name: year
description: The year to filter by
in: query
required: false
schema:
type: integer
- name: manual
description: Whether to perform the operation manually
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/merge:
put:
operationId: mergeItems
summary: Merge a metadata item
tags:
- Library
description: Merge a metadata item with other items
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: ids
description: Comma-separated list of item identifiers
in: query
explode: false
schema:
type: array
items:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated merge a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/prefs:
put:
operationId: setItemPreferences
summary: Set metadata preferences
tags:
- Library
description: Set the preferences on a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: args
description: The args
in: query
schema:
type: object
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set metadata preferences
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/refresh:
put:
operationId: refreshItemsMetadata
summary: Refresh a metadata item
tags:
- Library
description: Refresh a metadata item from the agent
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: agent
description: The identifier of the metadata agent to use
in: query
required: false
schema:
type: string
- name: markUpdated
description: The markUpdated
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: skipRefresh
description: Skip synchronous refresh
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated refresh a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/related:
get:
operationId: getRelatedItems
summary: Get related items
tags:
- Library
description: Get a hub of related items to a metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/similar:
get:
operationId: listSimilar
summary: Get similar items
tags:
- Library
description: Get a list of similar items to a metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/split:
put:
operationId: splitItem
summary: Split a metadata item
tags:
- Library
description: Split a metadata item into multiple items
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated split a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/subtitles:
get:
operationId: getSubtitles
summary: Get subtitles
tags:
- Library
description: Add a subtitle to a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: title
description: The title to filter by
in: query
required: false
schema:
type: string
- name: language
description: The language code to use
in: query
required: false
schema:
type: string
- name: mediaItemID
description: The unique identifier of the mediaitem
in: query
required: false
schema:
type: integer
- name: url
description: The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body
in: query
required: false
schema:
type: string
- name: format
description: The format
in: query
required: false
schema:
type: string
- name: forced
description: The forced
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: hearingImpaired
description: The hearingImpaired
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully retrieved get subtitles
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/tree:
get:
operationId: getItemTree
summary: Get metadata items as a tree
tags:
- Library
description: Get a tree of metadata items, such as the seasons/episodes of a show
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithNestedMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MetadataItem:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/unmatch:
put:
operationId: unmatch
summary: Unmatch a metadata item
tags:
- Library
description: Unmatch a metadata item to info fetched from the agent
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated unmatch a metadata item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/users/top:
get:
operationId: listTopUsers
summary: Get metadata top users
tags:
- Library
description: Get the list of users which have played this item starting with the most
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Account:
type: array
items:
$ref: "#/components/schemas/TopUserAccount"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Account:
- globalViewCount: 1
id: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/voiceActivity:
put:
operationId: detectVoiceActivity
summary: Detect voice activity
tags:
- Library
description: Start the detection of voice in a metadata item
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: force
description: Indicate whether detection should be re-run
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
- name: manual
description: Indicate whether detection is manually run
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated detect voice activity
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/augmentations/{augmentationId}:
get:
operationId: getAugmentationStatus
summary: Get augmentation status
tags:
- Library
description: Get augmentation status and potentially wait for completion
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: augmentationId
description: The id of the augmentation
in: path
required: true
schema:
type: string
- name: wait
description: Wait for augmentation completion before returning
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'204':
$ref: "#/components/responses/204"
description: Successfully completed get augmentation status
'401':
description: This augmentation is not owned by the requesting user
content:
text/html:
schema:
type: string
'404':
description: No augmentation found
content:
text/html:
schema:
type: string
/library/parts/{partId}:
put:
operationId: setStreamSelection
summary: Set stream selection
tags:
- Library
description: Set which streams (audio/subtitle) are selected by this user
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: partId
description: The id of the part to select streams on
in: path
required: true
schema:
type: integer
- name: audioStreamID
description: The id of the audio stream to select in this part
in: query
schema:
type: integer
- name: subtitleStreamID
description: The id of the subtitle stream to select in this part. Specify 0 to select no subtitle
in: query
schema:
type: integer
- name: allParts
description: Perform the same for all parts of this media selecting similar streams in each
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set stream selection
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: One of the audio or subtitle streams does not belong to this part
content:
text/html:
schema:
type: string
/library/people/{personId}:
get:
operationId: getPerson
summary: Get person details
tags:
- Library
description: Get details for a single actor.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: personId
description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithTags"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/library/people/{personId}/media:
get:
operationId: listPersonMedia
summary: Get media for a person
tags:
- Library
description: Get all the media for a single actor.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: personId
description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/library/sections/{sectionId}:
delete:
operationId: deleteLibrarySection
summary: Delete a library section
tags:
- Library
description: Delete a library section by id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section identifier
in: path
required: true
schema:
type: string
- name: async
description: If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a library section
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: getLibraryDetails
summary: Get a library section by id
tags:
- Library
description: 'Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system.'
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section identifier
in: path
required: true
schema:
type: string
- name: includeDetails
description: Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
type: object
properties:
allowSync:
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
art:
type: string
content:
description: |-
The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly.
type: string
Directory:
type: array
items:
$ref: "#/components/schemas/Metadata"
identifier:
type: string
librarySectionID:
type: integer
mediaTagPrefix:
type: string
mediaTagVersion:
type: integer
size:
type: integer
sortAsc:
type: boolean
thumb:
type: string
title1:
type: string
viewGroup:
type: string
viewMode:
type: integer
example:
MediaContainer:
art: example
content: example
identifier: example
librarySectionID: 1
mediaTagPrefix: example
mediaTagVersion: 1
size: 1
sortAsc: true
thumb: example
title1: example
viewGroup: example
viewMode: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: editSection
summary: Edit a library section
tags:
- Library
description: Edit a library section by id setting parameters
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section identifier
in: path
required: true
schema:
type: string
- name: name
description: The name of the new section
in: query
schema:
type: string
- name: scanner
description: The scanner this section should use
in: query
schema:
type: string
- name: agent
description: The agent this section should use for metadata
in: query
required: true
schema:
type: string
- name: metadataAgentProviderGroupId
description: The agent group id for this section
in: query
schema:
type: string
- name: language
description: The language of this section
in: query
schema:
type: string
- name: locations
description: The locations on disk to add to this section
in: query
schema:
type: array
items:
type: string
example:
- O:\fatboy\Media\Ripped\Music
- O:\fatboy\Media\My Music
- name: prefs
description: The preferences for this section
in: query
style: deepObject
schema:
type: object
example:
collectionMode: 2
hidden: 0
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated edit a library section
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Section cannot be created due to bad parameters in request
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/agents:
get:
operationId: getSectionAgents
summary: Get Section Agents
tags:
- Library
description: Get available metadata agents for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/albums:
get:
operationId: getAlbums
summary: Set section albums
tags:
- Content
description: Get all albums in a music section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
content: secondary
allowSync: false
art: /:/resources/artist-fanart.jpg
identifier: com.plexapp.plugins.library
mediaTagPrefix: /system/bundle/media/flags/
mediaTagVersion: 1680272530
Metadata:
- addedAt: 1681152176
allowSync: true
art: /library/metadata/251/art/1716801576
deletedAt: 1682628386
Genre:
- tag: Comedy/Spoken
guid: plex://album/5d07c894403c640290c0e196
index: 1
key: /library/metadata/265/children
leafCount: 12
librarySectionID: 3
librarySectionTitle: Music
librarySectionUUID: d7fd8c81-a345-4e68-8113-92f23cb47e70
loudnessAnalysisVersion: '2'
originallyAvailableAt: "2014-07-15T00:00:00.000Z"
parentGuid: plex://artist/5d07bbfc403c6402904a60e7
parentKey: /library/metadata/251
parentRatingKey: '251'
parentThumb: /library/metadata/251/thumb/1716801576
parentTitle: “Weird Al” Yankovic
rating: 8
ratingKey: '265'
studio: RCA
summary: Already accepted as a bona fide talent in the world of parody -- his musicianship, comedic timing, his pop-culture reference awareness, and his great wordplay are all well-documented -- the only thing that matters when it comes to "Weird Al" Yankovic albums is how inspired the king of novelty songs sounds on any given LP. On his 14th studio album, Mandatory Fun, the inspiration meter goes well into the red, something heard instantly as Iggy Azalea's electro-rap "Fancy" does a complete 180 thematically on the opening "Handy," the song now heading toward the local home improvement store where the craftsmen vogue in their orange vests and blow sweet come-ons like "I'll bring you up to code" and "My socket wrenches are second to none." Pharrell's "Happy" becomes "Tacky" and Al's amazing ability to follow an everyday poke ("Wear my Ed Hardy shirt with fluorescent orange pants") with something brainy and reserved ("Got my new résumé, it's printed in Comic Sans") surprises once more, but for end-to-end "wows," it's his brilliant redo of Robin Thicke's "Blurred Lines," now the smug and twerking "Word Crimes," which gives copy editors, English professors, and grammar nerds a reason to hit the dancefloor ("And listen up when I tell you this/I hope you never use quotation marks for emphasis!"). Hardcore and hilarious musical moments start to happen when Imagine Dragons' "Radioactive" becomes "Inactive," a singalong anthem for the sluggish and the slovenly ("Near comatose, no exercise/Don't tag my toe, I'm still alive") with a dubstep-rock bassline that sounds like Galactus burping. Better still is the every-Al-album pop-polka medley, this time called "Now That's What I Call Polka!" which polkas-up Daft Punk ("Get Lucky"), PSY ("Gangnam Style"), and Miley Cyrus ("Wrecking Ball"), and with more Spike Jones-styled sound effects than usual. As for the originals this time out, the "you suck!"-minded "Sports Song" will be unavoidable under Friday night lights once a teen gets hold of it, while the ranting and wonderfully weird "First World Problems" sounds more like the Pixies than anything the Pixies did in 2014. Wonders never cease on Mandatory Fun, and neither do the laughs. ~ David Jeffries
thumb: /library/metadata/265/thumb/1715112705
title: Mandatory Fun
type: album
updatedAt: 1715112705
year: 2014
mixedParents: true
nocache: true
size: 12
thumb: /:/resources/artist.png
title1: Music
title2: By Album
viewGroup: album
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/all:
get:
operationId: listContent
summary: Get items in the section
tags:
- Content
description: |-
Get the items in a section, potentially filtering them.
When `includeCollections=1` is passed, the response may also contain `Collection` items.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/X-Plex-Container-Start"
- $ref: "#/components/parameters/X-Plex-Container-Size"
- $ref: "#/components/parameters/mediaQuery"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
- name: type
description: Filter by metadata type (1=movie, 2=show, 3=season, 4=episode, 8=artist, 9=album, 10=track)
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: sort
description: Sort key and direction (e.g. addedAt:desc, titleSort)
in: query
schema:
type: string
- name: includeMeta
description: Adds the Meta object to the response
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeGuids
description: Adds the Guid object to the response
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeCollections
description: Include collection items in results
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeExternalMedia
description: Include external or online media
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeAdvanced
description: Include advanced settings
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: checkFiles
description: Verify file existence
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeRelated
description: Include related items
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeExtras
description: Include trailers, behind-the-scenes, etc.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includePopularLeaves
description: Include popular episodes
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeConcerts
description: Include concert items
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeOnDeck
description: Include On Deck status
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeChapters
description: Include chapter markers
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includePreferences
description: Include user preferences
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeBandwidths
description: Include bandwidth info
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeLoudnessRamps
description: Include loudness ramp data
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeStations
description: Include radio station data
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeExternalIds
description: Include external GUIDs
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeReviews
description: Include user reviews
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeCredits
description: Include full credits
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeArt
description: Force inclusion of artwork fields
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeThumb
description: Force inclusion of thumbnail fields
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeBanner
description: Force inclusion of banner fields
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeTheme
description: Force inclusion of theme fields
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeFields
description: Whitelist of fields to return
in: query
schema:
type: string
- name: excludeFields
description: Blacklist of fields to omit
in: query
schema:
type: string
- name: asyncAugmentMetadata
description: Async metadata augmentation
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: asyncRefreshLocalMediaAgent
description: Async local media agent refresh
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: nocache
description: Bypass cache
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: skipRefresh
description: Skip synchronous refresh
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: excludeElements
description: Comma-separated list of elements to exclude from the response
in: query
schema:
type: string
- name: filters
description: General filtering expression.
in: query
schema:
type: string
- name: unwatched
description: Filter to unwatched only (1 = true).
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: genre
description: Filter by genre.
in: query
schema:
type: string
- name: studio
description: Filter by studio.
in: query
schema:
type: string
- name: contentRating
description: Filter by content rating.
in: query
schema:
type: string
- name: resolution
description: Filter by resolution.
in: query
schema:
type: string
- name: year
description: Filter by year.
in: query
schema:
type: integer
- name: firstCharacter
description: Filter by first character of title.
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: updateItems
summary: Set the fields of the filtered items
tags:
- Library
description: |-
This endpoint takes an large possible set of values. Here are some examples.
- **Parameters, extra documentation**
- artist.title.value
- When used with track, both artist.title.value and album.title.value need to be specified
- title.value usage
- Summary
- Tracks always rename and never merge
- Albums and Artists
- if single item and item without title does not exist, it is renamed.
- if single item and item with title does exist they are merged.
- if multiple they are always merged.
- Tracks
- Works as expected will update the track's title
- Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName`
- Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName`
- All tracks: `/library/sections/{id}/all?type=10&title.value=NewName`
- Albums
- Functionality changes depending on the existence of an album with the same title
- Album exists
- Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2`
- Album with id 42 is merged into album titled "Album 2"
- Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album`
- All albums are merged into the existing album titled "Moo Album"
- Album does not exist
- Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle`
- Album with id 42 has title modified to "NewAlbumTitle"
- Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle`
- All albums are merged into a new album with title="NewAlbumTitle"
- Artists
- Functionaly changes depending on the existence of an artist with the same title.
- Artist exists
- Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2`
- Artist with id 42 is merged into existing artist titled "Artist 2"
- Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3`
- All artists are merged into the existing artist titled "Artist 3"
- Artist does not exist
- Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle`
- Artist with id 42 has title modified to "NewArtistTitle"
- Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle`
- All artists are merged into a new artist with title="NewArtistTitle"
- **Notes**
- Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address
- RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax.
- Escaped square brackets are allowed, but don't render well
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: string
- name: type
description: The media type to filter by
in: query
schema:
type: string
x-speakeasy-name-override: mediaType
- name: filters
description: The filters to apply to determine which items should be modified
in: query
schema:
type: string
- name: field.value
description: Set the specified field to a new value
in: query
schema:
type: string
- name: field.locked
description: Set the specified field to locked (or unlocked if set to 0)
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: title.value
description: This field is treated specially by albums or artists and may be used for implicit reparenting.
in: query
schema:
type: string
- name: artist.title.value
description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
in: query
schema:
type: string
- name: artist.title.id
description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
in: query
schema:
type: string
- name: album.title.value
description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
in: query
schema:
type: string
- name: album.title.id
description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
in: query
schema:
type: string
- name: tagtype[idx].tag.tag
description: Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together
in: query
schema:
type: string
- name: tagtype[idx].tagging.object
description: Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set.
in: query
schema:
type: string
- name: tagtype[].tag.tag-
description: Remove comma separated tags from the set of items
in: query
schema:
type: string
- name: tagtype[].tag
description: Remove associations of this type (e.g. genre) from the set of items
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set the fields of the filtered items
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: The set of parameters are inconsistent or invalid values
content:
text/html:
schema:
type: string
'404':
description: A required item could not be found
content:
text/html:
schema:
type: string
'409':
description: Rename of a collection to a name that's already taken
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/allLeaves:
get:
operationId: getAllLeaves
summary: Set section leaves
tags:
- Content
description: Get all leaves in a section (such as episodes in a show section)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
content: secondary
allowSync: false
art: /:/resources/show-fanart.jpg
identifier: com.plexapp.plugins.library
mediaTagPrefix: /system/bundle/media/flags/
mediaTagVersion: 1680272530
Metadata:
- addedAt: 1348327790
art: /library/metadata/148/art/1715112830
audienceRating: 7.7
audienceRatingImage: themoviedb://image.rating
chapterSource: media
contentRating: TV-PG
Director:
- tag: Stephen Furst
duration: 2625089
grandparentArt: /library/metadata/148/art/1715112830
grandparentGuid: plex://show/5d9c087202391c001f58a287
grandparentKey: /library/metadata/148
grandparentRatingKey: '148'
grandparentSlug: babylon-5
grandparentTheme: /library/metadata/148/theme/1715112830
grandparentThumb: /library/metadata/148/thumb/1715112830
grandparentTitle: Babylon 5
guid: plex://episode/5d9c1359e264b7001fcb529c
index: 8
key: /library/metadata/150
lastViewedAt: 1612468663
Media:
- aspectRatio: 1.78
audioChannels: 6
audioCodec: ac3
bitrate: 5741
container: mkv
duration: 2625089
height: 480
id: 376
Part:
- container: mkv
duration: 2625089
file: /Volumes/Media/TV Shows/Babylon 5/Season 4/Babylon 5 S04E08 The Illusion of Truth.mkv
id: 872
key: /library/parts/872/1348327790/file.mkv
size: 1883816967
videoProfile: main
videoCodec: mpeg2video
videoFrameRate: NTSC
videoProfile: main
videoResolution: '480'
width: 720
originallyAvailableAt: "1997-02-17T00:00:00.000Z"
parentGuid: plex://season/602e691b66dfdb002c0a5034
parentIndex: 4
parentKey: /library/metadata/149
parentRatingKey: '149'
parentThumb: /library/metadata/149/thumb/1681152133
parentTitle: Season 4
ratingKey: '150'
Role:
- tag: Hank Delgado
- tag: Diana Morgan
- tag: Jeff Griggs
summary: A team of ISN reporters arrives at the station wanting to do a story about Babylon 5. Sheridan refuses at first, but finally agrees on the theory that at least a small part of their side of the conflict will be shown.
thumb: /library/metadata/150/thumb/1681283788
title: The Illusion of Truth
titleSort: Illusion of Truth
type: episode
updatedAt: 1681283788
viewCount: 1
Writer:
- tag: J. Michael Straczynski
year: 1997
nocache: true
size: 41
thumb: /:/resources/show.png
title1: TV Shows
viewGroup: show
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/analyze:
put:
operationId: startAnalysis
summary: Analyze a section
tags:
- Library
description: Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated analyze a section
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/artists:
get:
operationId: getSectionArtists
summary: Get Section Artists
tags:
- Library
description: Get artists for a music library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/arts:
get:
operationId: getArts
summary: Set section artwork
tags:
- Content
description: Get artwork for a library section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithArtwork"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/autocomplete:
get:
operationId: autocomplete
summary: Get autocompletions for search
tags:
- Library
description: |-
The field to autocomplete on is specified by the `{field}.query` parameter. For example `genre.query` or `title.query`.
Returns a set of items from the filtered items whose `{field}` starts with `{field}.query`. In the results, a `{field}.queryRange` will be present to express the range of the match
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: type
description: Item type
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: field.query
description: The "field" stands in for any field, the value is a partial string for matching
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
description: A paramater is either invalid or missing
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/byContentRating:
get:
operationId: getByContentRating
summary: Get By Content Rating
tags:
- Library
description: Browse items in a library section grouped by content rating.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/byDecade:
get:
operationId: getByDecade
summary: Get By Decade
tags:
- Library
description: Browse items in a library section grouped by decade.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/byFolder:
get:
operationId: getByFolder
summary: Get By Folder
tags:
- Library
description: Browse items in a library section by underlying filesystem folder.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/byResolution:
get:
operationId: getByResolution
summary: Get By Resolution
tags:
- Library
description: Browse items in a library section grouped by resolution.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/byYear:
get:
operationId: getByYear
summary: Get By Year
tags:
- Library
description: Browse items in a library section grouped by year.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/categories:
get:
operationId: getCategories
summary: Set section categories
tags:
- Content
description: Get categories in a library section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithArtwork"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/clips:
get:
operationId: getSectionClips
summary: Get Section Clips
tags:
- Library
description: Get clips for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/cluster:
get:
operationId: getCluster
summary: Set section clusters
tags:
- Content
description: Get clusters in a library section (typically for photos)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithArtwork"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/collections:
get:
operationId: getCollections
summary: Get collections in a section
tags:
- Library
description: Get all collections in a section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/common:
get:
operationId: getCommon
summary: Get common fields for items
tags:
- Library
description: |-
Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter
Fields which are not common will be expressed in the `mixedFields` field
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: type
description: Item type
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/computePath:
get:
operationId: getSonicPath
summary: Similar tracks to transition from one to another
tags:
- Content
description: Get a list of audio tracks starting at one and ending at another which are similar across the path
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/count"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: startID
description: The starting metadata item id
in: query
required: true
schema:
type: integer
- name: endID
description: The ending metadata item id
in: query
required: true
schema:
type: integer
- name: maxDistance
description: The maximum distance allowed along the path; defaults to 0.25
in: query
schema:
type: number
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/edit:
get:
operationId: getSectionEdit
summary: Edit Section
tags:
- Library
description: Get library section metadata.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: editLibrarySection
summary: Edit Section
tags:
- Library
description: Update library section metadata.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/emptyTrash:
get:
operationId: emptyTrash
summary: Get Empty Trash
tags:
- Library
description: Permanently remove items from the trash for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: emptyTrashPost
summary: Empty Trash
tags:
- Library
description: Permanently remove items from the trash for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: emptyTrashPut
summary: Empty section trash
tags:
- Library
description: Empty trash in the section, permanently deleting media/metadata for missing media
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated empty section trash
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/episodes:
get:
operationId: getSectionEpisodes
summary: Get Section Episodes
tags:
- Library
description: Get episodes for a TV library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/filters:
get:
operationId: getSectionFilters
summary: Get section filters
tags:
- Library
description: Get common filters on a section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: The filters on the section
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/firstCharacters:
get:
operationId: getFirstCharacters
summary: Get list of first characters
tags:
- Library
description: Get list of first characters in this section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: type
description: The metadata type to filter on
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: sort
description: The metadata type to filter on
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
type: object
properties:
title:
type: string
key:
type: string
size:
description: The number of items starting with this character
type: integer
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: example
key: example
size: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/hubs:
get:
operationId: getLibrarySectionHubs
summary: Get Section Hubs
tags:
- Library
description: Get hubs for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Hub:
- title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/indexes:
delete:
operationId: deleteIndexes
summary: Delete section indexes
tags:
- Library
description: Delete all the indexes in a section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete section indexes
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/intros:
delete:
operationId: deleteIntros
summary: Delete section intro markers
tags:
- Library
description: Delete all the intro markers in a section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete section intro markers
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/label:
get:
operationId: getSectionLabels
summary: Get Section Labels
tags:
- Library
description: Get labels for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithTags"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/location:
get:
operationId: getFolders
summary: Get all folder locations
tags:
- Content
description: Get all folder locations of the media in a section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
type: object
properties:
title:
type: string
fastKey:
type: string
key:
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: example
fastKey: example
key: example
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/match:
get:
operationId: matchSectionItems
summary: Match Section Items
tags:
- Library
description: Match items in a library section against metadata providers.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/moment:
get:
operationId: listMoments
summary: Set section moments
tags:
- Content
description: Get moments in a library section (typically for photos)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithArtwork"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/move:
put:
operationId: moveSection
summary: Move Section
tags:
- Library
description: Move library section paths.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/movies:
get:
operationId: getSectionMovies
summary: Get Section Movies
tags:
- Library
description: Get movies for a movie library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/nearest:
get:
operationId: getSonicallySimilar
summary: The nearest audio tracks
tags:
- Content
description: Get the nearest audio tracks to a particular analysis
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: type
description: The metadata type to fetch (should be 10 for audio track)
in: query
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: values
description: The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track
in: query
required: true
explode: false
schema:
type: array
items:
type: integer
minimum: 50
maximum: 50
- name: limit
description: The limit of the number of items to fetch; defaults to 50
in: query
schema:
type: integer
- name: maxDistance
description: The maximum distance to search, defaults to 0.25
in: query
schema:
type: number
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/newest:
get:
operationId: getNewestForSection
summary: Get Newest for Section
tags:
- Library
description: Get the newest additions for a specific library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/onDeck:
get:
operationId: getOnDeckForSection
summary: Get On Deck for Section
tags:
- Library
description: Get the On Deck items for a specific library section.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: On Deck items
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/optimize:
get:
operationId: optimizeSection
summary: Get Optimize Section
tags:
- Library
description: Optimize the database for a specific library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: optimizeSectionPost
summary: Optimize Section
tags:
- Library
description: Optimize the database for a specific library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/photos:
get:
operationId: getSectionPhotos
summary: Get Section Photos
tags:
- Library
description: Get photos for a photo library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/playlists:
get:
operationId: getSectionPlaylists
summary: Get Section Playlists
tags:
- Library
description: Get playlists belonging to a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/prefs:
get:
operationId: getSectionPreferences
summary: Get section prefs
tags:
- Library
description: Get the prefs for a section by id and potentially overriding the agent
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: agent
description: The identifier of the metadata agent to use
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSettings"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: setSectionPreferences
summary: Set section prefs
tags:
- Library
description: Set the prefs for a section by id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: prefs
description: The preference key to retrieve or set
in: query
required: true
schema:
type: object
example:
enableCinemaTrailers: 1
hidden: 0
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set section prefs
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/recentlyAdded:
get:
operationId: getRecentlyAddedForSection
summary: Get Recently Added for Section
tags:
- Library
description: Get recently added items for a specific library section.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: Recently added items
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/refresh:
delete:
operationId: cancelRefresh
summary: Cancel section refresh
tags:
- Library
description: Cancel the refresh of a section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted cancel section refresh
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: refreshSection
summary: Get Refresh Section
tags:
- Library
description: Trigger a metadata refresh for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: refreshSectionPost
summary: Refresh Section
tags:
- Library
description: Trigger a metadata refresh for a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: force
description: Whether the update of metadata and items should be performed even if modification dates indicate the items have not change
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: path
description: Restrict refresh to the specified path
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed refresh section
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/search:
get:
operationId: searchSection
summary: Search Section
tags:
- Library
description: Search within a specific library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/settings:
get:
operationId: getSectionSettings
summary: Get Section Settings
tags:
- Library
description: Get section-specific settings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/shows:
get:
operationId: getSectionShows
summary: Get Section Shows
tags:
- Library
description: Get shows for a TV library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The id of the section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/sorts:
get:
operationId: getAvailableSorts
summary: Get a section sorts
tags:
- Library
description: Get the sort mechanisms available in a section
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSorts"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory: []
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/tags:
get:
operationId: getSectionTags
summary: Get Section Tags
tags:
- Library
description: Get tags in a library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithTags"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/timeline:
get:
operationId: getSectionTimeline
summary: Get Section Timeline
tags:
- Library
description: Get section timeline data.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/unmatch:
get:
operationId: unmatchSectionItems
summary: Unmatch Section Items
tags:
- Library
description: Unmatch items in a library section from metadata providers.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/unwatched:
get:
operationId: getUnwatchedForSection
summary: Get Unwatched for Section
tags:
- Library
description: Get unwatched items for a specific library section.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The unique identifier of the library section
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/streams/{streamId}/levels:
get:
operationId: getStreamLevels
summary: Get loudness about a stream in json
tags:
- Library
description: The the loudness of a stream in db, one entry per 100ms
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: streamId
description: The id of the stream
in: path
required: true
schema:
type: integer
- name: subsample
description: Subsample result down to return only the provided number of samples
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Level:
type: array
items:
$ref: "#/components/schemas/Level"
totalSamples:
description: The total number of samples (as a string)
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Level:
- v: 1
totalSamples: example
'403':
$ref: "#/components/responses/responses-403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/responses-404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/library/streams/{streamId}/loudness:
get:
operationId: getStreamLoudness
summary: Get loudness about a stream
tags:
- Library
description: The the loudness of a stream in db, one number per line, one entry per 100ms
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: streamId
description: The id of the stream
in: path
required: true
schema:
type: integer
- name: subsample
description: Subsample result down to return only the provided number of samples
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
'403':
description: The media is not accessible to the user
content:
text/html:
schema:
type: string
'404':
description: The stream doesn't exist, or the loudness feature is not available on this PMS
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}:
delete:
operationId: deleteDVR
summary: Delete a single DVR
tags:
- DVRs
description: Delete a single DVR by its id (key)
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a single dvr
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: getDVR
summary: Get a single DVR
tags:
- DVRs
description: Get a single DVR by its id (key)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/DVRResponse"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
patch:
operationId: patchDVRSettings
summary: Update DVR Settings
tags:
- DVRs
description: Update DVR settings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: updateDVRSettings
summary: Update DVR Settings
tags:
- DVRs
description: Update DVR settings.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/channels:
get:
operationId: getDVRChannels
summary: Get DVR Channels
tags:
- DVRs
description: List channels directly associated with a DVR.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/guide:
get:
operationId: getDVRGuide
summary: Get DVR Guide
tags:
- DVRs
description: Fetch program guide/schedule for a DVR.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/lineups:
delete:
operationId: deleteLineup
summary: Delete a DVR Lineup
tags:
- DVRs
description: Deletes a DVR device's lineup.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: lineup
description: The lineup to delete
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/DVRResponse"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: addLineup
summary: Add a DVR Lineup
tags:
- DVRs
description: Add a lineup to a DVR device's set of lineups.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: lineup
description: The lineup to delete
in: query
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/DVRResponse"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/prefs:
put:
operationId: setDVRPreferences
summary: Set DVR preferences
tags:
- DVRs
description: Set DVR preferences by name and value
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: name
description: Set the `name` preference to the provided value
in: query
schema:
type: string
- name: value
description: Preference value to set.
in: query
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/DVRResponse"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/recordings:
get:
operationId: getDVRRecordingsByDVR
summary: Get DVR Recordings by DVR
tags:
- Live TV
description: List completed DVR recordings for a specific DVR.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/reloadGuide:
delete:
operationId: stopDVRReload
summary: Tell a DVR to stop reloading program guide
tags:
- DVRs
description: Tell a DVR to stop reloading program guide
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted tell a dvr to stop reloading program guide
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: reloadGuide
summary: Tell a DVR to reload program guide
tags:
- DVRs
description: Tell a DVR to reload program guide
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Activity:
description: The activity of the reload process
schema:
type: string
content:
text/html:
schema:
$ref: "#/components/schemas/SuccessResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/sessions/{sessionId}:
delete:
operationId: deleteLiveTVSession
summary: Delete Live TV Session
tags:
- Live TV
description: Terminate a Live TV session.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sessionId
description: The session id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: getLiveTVSession
summary: Get a single session
tags:
- Live TV
description: Get a single livetv session and metadata
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sessionId
description: The session id
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}:
delete:
operationId: removeDevice
summary: Remove a device
tags:
- Devices
description: Remove a devices by its id along with its channel mappings
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
message:
type: string
status:
type: integer
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
message: example
status: 1
'404':
description: Device not found
content:
text/html:
schema:
type: string
get:
operationId: getDeviceDetails
summary: Get device details
tags:
- Devices
description: Get a device's details by its id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'404':
description: Device not found
content:
text/html:
schema:
type: string
put:
operationId: modifyDevice
summary: Enable or disable a device
tags:
- Devices
description: Enable or disable a device by its id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
- name: enabled
description: Whether to enable the device
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
message:
type: string
status:
type: integer
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
message: example
status: 1
'404':
description: Device not found
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}/channelmap:
put:
operationId: setChannelmap
summary: Set a device's channel mapping
tags:
- Devices
description: Set a device's channel mapping
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
- name: channelMapping
description: The mapping of changes, passed as a map of device channel to lineup VCN.
in: query
style: deepObject
schema:
type: object
example:
'46.3': 2
'48.9': 4
- name: channelMappingByKey
description: The mapping of changes, passed as a map of device channel to lineup key.
in: query
style: deepObject
schema:
type: object
example:
'46.3': 5cc83d73af4a72001e9b16d7-5cab3c634df507001fefcad0
'48.9': 5cc83d73af4a72001e9b16d7-5cab3c63ec158a001d32db8d
- name: channelsEnabled
description: The channels which are enabled.
in: query
schema:
type: array
items:
type: string
example: 46.1,44.1,45.1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}/channels:
get:
operationId: getDevicesChannels
summary: Get a device's channels
tags:
- Devices
description: Get a device's channels by its id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
DeviceChannel:
type: array
items:
$ref: "#/components/schemas/DeviceChannel"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
DeviceChannel:
- drm: true
favorite: true
hd: true
identifier: string value
key: string value
name: string value
signalQuality: 1
signalStrength: 1
'404':
description: Device not found
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}/prefs:
put:
operationId: setDevicePreferences
summary: Set device preferences
tags:
- Devices
description: Set device preferences by its id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
- name: name
description: The preference names and values.
in: query
schema:
type: string
- name: value
description: Preference value to set.
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set device preferences
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}/scan:
delete:
operationId: stopScan
summary: Tell a device to stop scanning for channels
tags:
- Devices
description: Tell a device to stop scanning for channels
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
post:
operationId: scan
summary: Tell a device to scan for channels
tags:
- Devices
description: Tell a device to scan for channels
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
- name: source
description: A valid source for the scan
in: query
schema:
type: string
example: Cable
responses:
'200':
description: OK
headers:
X-Plex-Activity:
description: The activity of the reload process
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDevice"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/media/grabbers/operations/{operationId}:
delete:
operationId: cancelGrab
summary: Cancel an existing grab
tags:
- Subscriptions
description: |-
Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription.
Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: operationId
description: The ID of the operation.
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted cancel an existing grab
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
description: User is not owner of the grab and not the admin
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/media/providers/{provider}:
delete:
operationId: deleteMediaProvider
summary: Delete a media provider
tags:
- Provider
description: Deletes a media provider with the given id
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: provider
description: The ID of the media provider to delete
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a media provider
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: Cannot delete a provider which is a child of another provider
content:
text/html:
schema:
type: string
/media/subscriptions/{subscriptionId}:
delete:
operationId: deleteSubscription
summary: Delete a subscription
tags:
- Subscriptions
description: Delete a subscription, cancelling all of its grabs as well
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: subscriptionId
description: The unique identifier of the subscription
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a subscription
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: User cannot access DVR on this server or cannot access this subscription
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
get:
operationId: getSubscription
summary: Get a single subscription
tags:
- Subscriptions
description: Get a single subscription and potentially the grabs too
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: subscriptionId
description: The unique identifier of the subscription
in: path
required: true
schema:
type: integer
- name: includeGrabs
description: Indicates whether the active grabs should be included as well
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeStorage
description: Compute the storage of recorded items desired by this subscription
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSubscription"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaSubscription:
- title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: User cannot access DVR on this server or cannot access this subscription
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
put:
operationId: editSubscriptionPreferences
summary: Edit a subscription
tags:
- Subscriptions
description: Edit a subscription's preferences
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: subscriptionId
description: The unique identifier of the subscription
in: path
required: true
schema:
type: integer
- name: prefs
description: The preference key to retrieve or set
in: query
style: deepObject
schema:
type: object
example:
minVideoQuality: 720
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSubscription"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaSubscription:
- title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: User cannot access DVR on this server or cannot access this subscription
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/media/subscriptions/{subscriptionId}/move:
put:
operationId: reorderSubscription
summary: Re-order a subscription
tags:
- Subscriptions
description: Re-order a subscription to change its priority
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: subscriptionId
description: The unique identifier of the subscription
in: path
required: true
schema:
type: integer
- name: after
description: The subscription to move this sub after. If missing will insert at the beginning of the list
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithSubscription"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
MediaSubscription:
- title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
description: User cannot access DVR on this server or cannot access this subscription
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/pins/{pinId}:
get:
operationId: getOAuthPin
summary: Get OAuth PIN Status
tags:
- Authentication
description: Poll the PIN status. Returns authToken when the user has linked the device.
security:
- clientIdentifier: []
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: pinId
description: The unique identifier of the pin
in: path
required: true
schema:
type: integer
responses:
'200':
description: PIN status
content:
application/json:
schema:
type: object
properties:
authToken:
type:
- string
- 'null'
clientIdentifier:
type: string
code:
type: string
createdAt:
type: string
expiresAt:
type: string
expiresIn:
type: integer
id:
type: integer
newRegistration:
type: boolean
pmsIdentifier:
type:
- string
- 'null'
pmsVersion:
type:
- string
- 'null'
product:
type: string
qr:
type: string
trusted:
type: boolean
example:
clientIdentifier: example
code: example
createdAt: example
expiresAt: example
expiresIn: 1
id: 1
newRegistration: true
product: example
qr: example
trusted: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/playlists/{playlistId}:
delete:
operationId: deletePlaylist
summary: Delete a Playlist
tags:
- Library Playlists
description: Deletes a playlist by provided id
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
responses:
'204':
$ref: "#/components/responses/204"
description: Successfully completed delete a playlist
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
get:
operationId: getPlaylist
summary: Retrieve Playlist
tags:
- Playlist
description: |-
Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item:
Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
put:
operationId: updatePlaylist
summary: Editing a Playlist
tags:
- Library Playlists
description: Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
responses:
'204':
$ref: "#/components/responses/204"
description: Successfully completed editing a playlist
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
/playlists/{playlistId}/generators:
get:
operationId: getPlaylistGenerators
summary: Get a playlist's generators
tags:
- Library Playlists
description: Get all the generators in a playlist
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
PlayQueueGenerator:
type: array
items:
type: object
properties:
type:
description: |-
The type of playlist generator.
- -1: A smart playlist generator
- 42: A optimized version generator
type: integer
enum:
- -1
- 42
changedAt:
type: integer
createdAt:
type: integer
id:
type: integer
playlistID:
type: integer
updatedAt:
type: integer
uri:
description: The URI indicating the search for this generator
type: string
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
PlayQueueGenerator:
- type: 1
changedAt: 1
createdAt: 1
id: 1
playlistID: 1
updatedAt: 1
uri: example
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator not found
content:
text/html:
schema:
type: string
/playlists/{playlistId}/items:
delete:
operationId: clearPlaylistItems
summary: Clearing a playlist
tags:
- Library Playlists
description: Clears a playlist, only works with dumb playlists. Returns the playlist.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully deleted clearing a playlist
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
get:
operationId: getPlaylistItems
summary: Retrieve Playlist Contents
tags:
- Playlist
description: Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: type
description: The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist.
in: query
explode: false
schema:
type: array
items:
type: integer
x-speakeasy-name-override: mediaType
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
put:
operationId: addPlaylistItems
summary: Adding to a Playlist
tags:
- Library Playlists
description: Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: uri
description: The content URI for the playlist.
in: query
schema:
type: string
- name: playQueueID
description: The play queue to add to a playlist.
in: query
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated adding to a playlist
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}:
get:
operationId: getPlayQueue
summary: Retrieve a play queue
tags:
- Play Queue
description: Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
- name: own
description: If the server should transfer ownership to the requesting client (used in remote control scenarios).
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: center
description: The play queue item ID for the center of the window - this doesn't change the current selected item.
in: query
schema:
type: string
- name: window
description: How many items on each side of the center of the window
in: query
schema:
type: integer
- name: includeBefore
description: Whether to include the items before the center (if 0, center is not included either), defaults to 1.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: includeAfter
description: Whether to include the items after the center (if 0, center is not included either), defaults to 1.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: The play queue
content:
application/json:
schema:
$ref: "#/components/schemas/PlayQueueResponse"
example:
playQueueID: 1
playQueueLastAddedItemID: string value
playQueueSelectedItemID: 1
playQueueSelectedItemOffset: 1
playQueueSelectedMetadataItemID: 1
playQueueShuffled: true
playQueueSourceURI: string value
playQueueTotalCount: 1
playQueueVersion: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found
content:
text/html:
schema:
type: string
put:
operationId: addToPlayQueue
summary: Add a generator or playlist to a play queue
tags:
- Play Queue
description: Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
- name: uri
description: The content URI for what we're adding to the queue.
in: query
schema:
type: string
- name: playlistID
description: The ID of the playlist to add to the playQueue.
in: query
schema:
type: string
- name: next
description: Play this item next (defaults to 0 - queueing at the end of manually queued items).
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated add a generator or playlist to a play queue
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/items:
delete:
operationId: clearPlayQueue
summary: Clear a play queue
tags:
- Play Queue
description: Deletes all items in the play queue, and increases the version of the play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/reset:
put:
operationId: resetPlayQueue
summary: Reset a play queue
tags:
- Play Queue
description: Reset a play queue to the first item being the current item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated reset a play queue
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/shuffle:
put:
operationId: shuffle
summary: Shuffle a play queue
tags:
- Play Queue
description: Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found or current item not found
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/unshuffle:
put:
operationId: unshuffle
summary: Unshuffle a play queue
tags:
- Play Queue
description: Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated unshuffle a play queue
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found or current item not found
content:
text/html:
schema:
type: string
/servers/{machineId}:
get:
operationId: getServerDetails
summary: Get Server Details
tags:
- Users
description: Get server details for sharing.
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: machineId
description: The unique machine identifier of the server
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ServerConfiguration"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
allowCameraUpload: true
allowChannelAccess: true
allowMediaDeletion: true
allowSharing: true
allowSync: true
allowTuners: true
backgroundProcessing: true
certificate: true
companionProxy: true
countryCode: example
diagnostics:
- example
eventStream: true
friendlyName: example
hubSearch: true
itemClusters: true
livetv: 7
machineIdentifier: 0123456789abcdef0123456789abcdef012345678
mediaProviders: true
multiuser: true
musicAnalysis: 2
myPlex: true
myPlexMappingState: mapped
myPlexSigninState: ok
myPlexSubscription: true
myPlexUsername: example
offlineTranscode: 1
ownerFeatures:
- example
platform: example
platformVersion: example
pluginHost: true
pushNotifications: true
readOnlyLibraries: true
streamingBrainABRVersion: 1
streamingBrainVersion: 1
sync: true
transcoderActiveVideoSessions: 1
transcoderAudio: true
transcoderLyrics: true
transcoderPhoto: true
transcoderSubtitles: true
transcoderVideo: true
transcoderVideoBitrates:
- example
transcoderVideoQualities:
- example
transcoderVideoResolutions:
- example
updatedAt: 1
updater: true
version: example
voiceSearch: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/servers/{machineId}/shared_servers:
post:
operationId: shareServerLegacy
summary: Share Server (Legacy v1)
tags:
- Users
description: Share a library with a friend (legacy v1 XML endpoint).
servers:
- url: https://plex.tv/api
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: machineId
description: The unique machine identifier of the server
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/services/browse/{base64path}:
get:
operationId: browseFilesystemPath
summary: Browse Filesystem Path
tags:
- General
description: Browse a specific filesystem path.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: base64path
description: The base64path
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/sharings/{userId}:
delete:
operationId: removeShare
summary: Remove Share
tags:
- Users
description: Remove a share / friend.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: userId
description: The unique identifier of the user
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: updateShare
summary: Update Share
tags:
- Users
description: Update friend filters (allowSync, filterMovies, etc.).
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: userId
description: The unique identifier of the user
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/status/sessions/history/{historyId}:
delete:
operationId: deleteHistory
summary: Delete Single History Item
tags:
- Status
description: Delete a single history item by id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: historyId
description: The id of the history item (the `historyKey` from above)
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainer"
example:
identifier: example
offset: 1
size: 1
totalSize: 1
'404':
description: History item not found
content:
text/html:
schema:
type: string
get:
operationId: getHistoryItem
summary: Get Single History Item
tags:
- Status
description: Get a single history item by id
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: historyId
description: The id of the history item (the `historyKey` from above)
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/historyAll-get-responses-200"
description: Successfully retrieved get single history item
content:
application/json:
schema:
$ref: "#/components/schemas/PlaybackHistoryMetadata"
example:
title: string value
type: string value
accountID: 1
deviceID: 1
grandparentRatingKey: string value
grandparentTitle: string value
historyKey: string value
index: 1
key: string value
librarySectionID: string value
originallyAvailableAt: string value
parentIndex: 1
parentTitle: string value
ratingKey: string value
thumb: string value
viewedAt: 1
'404':
description: History item not found
content:
text/html:
schema:
type: string
/sync/items/{syncId}:
get:
operationId: getSyncItem
summary: Get Sync Item
tags:
- General
description: Get sync item details.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: syncId
description: The unique identifier of the sync item
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/system/agents/{agentId}:
get:
operationId: getMetadataAgentDetails
summary: Get Metadata Agent Details
tags:
- General
description: Get details and settings for a specific metadata agent.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: agentId
description: The unique identifier of the metadata agent
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDirectory"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/user/{uuid}/settings/opt_outs:
get:
operationId: getUserOptOuts
summary: Get User Opt-Outs
tags:
- Users
description: Get online media source opt-out settings for a user.
servers:
- url: https://plex.tv/api/v2
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: uuid
description: The universally unique identifier
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/UserOptOutsResponse"
example:
optOuts:
- type: string value
id: string value
value: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/start.{extension}:
get:
operationId: startTranscodeSession
summary: Start A Transcoding Session
tags:
- Transcoder
x-speakeasy-usage-example: true
description: Starts the transcoder and returns the corresponding streaming resource document.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/transcodeType"
- $ref: "#/components/parameters/transcodeSessionId"
- $ref: "#/components/parameters/advancedSubtitles"
- name: platform
description: Client platform (some clients send this in addition to headers).
in: query
schema:
type: string
- name: extension
description: Extension
in: path
required: true
schema:
type: string
enum:
- m3u8
- mpd
- name: audioBoost
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: audioChannelCount
description: Target video number of audio channels.
in: query
schema:
type: integer
minimum: 1
maximum: 8
example: 5
- name: autoAdjustQuality
description: Indicates the client supports ABR.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: autoAdjustSubtitle
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directPlay
description: Indicates the client supports direct playing the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStream
description: Indicates the client supports direct streaming the video of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: directStreamAudio
description: Indicates the client supports direct streaming the audio of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: disableResolutionRotation
description: Indicates if resolution should be adjusted for orientation.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: hasMDE
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
- name: location
description: Network type of the client, can be used to help determine target bitrate.
in: query
schema:
type: string
enum:
- lan
- wan
- cellular
example: wan
- name: mediaBufferSize
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
in: query
schema:
type: integer
example: 102400
- name: mediaIndex
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
in: query
schema:
type: integer
example: 0
- name: musicBitrate
description: Target bitrate for audio only files (in kbps, used to transcode).
in: query
schema:
type: integer
minimum: 0
example: 5000
- name: offset
description: Offset from the start of the media (in seconds).
in: query
schema:
type: number
example: 90.5
- name: partIndex
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
in: query
schema:
type: integer
example: 0
- name: path
description: Internal PMS path of the media to transcode.
in: query
schema:
type: string
example: /library/metadata/151671
- name: peakBitrate
description: Maximum bitrate (in kbps) to use in ABR.
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: photoResolution
description: Target photo resolution.
in: query
schema:
type: string
pattern: ^\d[x:]\d$
example: 1080x1080
- name: protocol
description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)"
in: query
schema:
type: string
enum:
- http
- hls
- dash
example: dash
- name: secondsPerSegment
description: Number of seconds to include in each transcoded segment
in: query
schema:
type: integer
example: 5
- name: subtitleSize
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
in: query
schema:
type: integer
minimum: 1
example: 50
- name: subtitles
description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream"
in: query
schema:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
- unknown
example: burn
- name: maxVideoBitrate
description: Client-side maximum video bitrate cap in kbps
in: query
schema:
type: integer
- name: videoResolution
description: Cap resolution string (e.g. 1920x1080)
in: query
schema:
type: string
- name: copyts
description: Copy timestamps instead of re-encoding them
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: videoBitrate
description: Target video bitrate (in kbps).
in: query
schema:
type: integer
minimum: 0
example: 12000
- name: videoQuality
description: Target photo quality.
in: query
schema:
type: integer
minimum: 0
maximum: 99
example: 50
- name: X-Plex-Client-Identifier
description: Unique per client.
in: header
required: true
schema:
type: string
- name: X-Plex-Client-Profile-Extra
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
in: header
schema:
type: string
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
- name: X-Plex-Client-Profile-Name
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
in: header
schema:
type: string
example: generic
- name: X-Plex-Device
description: Device the client is running on
in: header
schema:
type: string
example: Windows
- name: X-Plex-Model
description: Model of the device the client is running on
in: header
schema:
type: string
example: standalone
- name: X-Plex-Platform
description: Client Platform
in: header
schema:
type: string
example: Chrome
- name: X-Plex-Platform-Version
description: Client Platform Version
in: header
schema:
type: string
example: 135
- name: X-Plex-Session-Identifier
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
in: header
schema:
type: string
responses:
'200':
description: MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream
content:
application/vnd.apple.mpegurl:
schema:
$ref: "#/components/schemas/BinaryResponse"
example: |
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3538000,RESOLUTION=1280x720,FRAME-RATE=60.000000
session/32635662-0d05-4acd-8f72-512cc64396d4/base/index.m3u8
text/html:
schema:
$ref: "#/components/schemas/BinaryResponse"
example: |
video/x-matroska:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
$ref: "#/components/responses/404"
description: Not Found - The requested resource does not exist
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/item/{itemId}/decision:
get:
operationId: getItemDecision
summary: Grab download queue item decision
tags:
- Download Queue
description: |-
Available: 0.2.0
Grab the decision for a download queue item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item ids
in: path
required: true
schema:
type: integer
example: 32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithDecision"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: example
generalDecisionCode: 1
generalDecisionText: example
mdeDecisionCode: 1
mdeDecisionText: example
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
transcodeDecisionCode: 1
transcodeDecisionText: example
'400':
description: The item is not in a state where a decision is available
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/item/{itemId}/media:
get:
operationId: getDownloadQueueMedia
summary: Grab download queue media
tags:
- Download Queue
description: |-
Available: 0.2.0
Grab the media for a download queue item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item ids
in: path
required: true
schema:
type: integer
example: 32
responses:
'200':
description: The raw media file
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'503':
description: |-

The queue item is not yet complete and is currently transcoding or waiting to transcode
headers:
Retry-After:
description: The estimated time before completion or -1 if unknown
schema:
type: integer
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/items/{itemId}:
delete:
operationId: removeDownloadQueueItems
summary: Delete download queue items
tags:
- Download Queue
description: delete items from a download queue
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item id
in: path
required: true
explode: false
schema:
type: array
items:
type: integer
example:
- 32
- 345
- 23
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete download queue items
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
get:
operationId: getDownloadQueueItems
summary: Get download queue items
tags:
- Download Queue
description: |-
Available: 0.2.0
Get items from a download queue
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item ids
in: path
required: true
explode: false
schema:
type: array
items:
type: integer
example:
- 32
- 345
- 23
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
DownloadQueueItem:
type: array
items:
$ref: "#/components/schemas/DownloadQueueItem"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
DownloadQueueItem:
- DecisionResult:
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: string value
generalDecisionCode: 1
generalDecisionText: string value
mdeDecisionCode: 1
mdeDecisionText: string value
transcodeDecisionCode: 1
transcodeDecisionText: string value
error: string value
id: 1
key: string value
queueId: 1
status: deciding
transcode: {}
TranscodeSession:
complete: true
context: string value
duration: 1
error: true
key: string value
progress: 1
protocol: string value
size: 1
sourceAudioCodec: string value
sourceVideoCodec: string value
speed: 1
throttled: true
transcodeHwFullPipeline: true
transcodeHwRequested: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/downloadQueue/{queueId}/items/{itemId}/restart:
post:
operationId: restartProcessingDownloadQueueItems
summary: Restart processing of items from the decision
tags:
- Download Queue
description: |-
Available: 0.2.0
Reprocess download queue items with previous decision parameters
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: queueId
description: The queue id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item ids
in: path
required: true
explode: false
schema:
type: array
items:
type: integer
example:
- 32
- 345
- 23
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed restart processing of items from the decision
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/hubs/sections/{sectionId}/manage/{identifier}:
delete:
operationId: deleteCustomHub
summary: Delete a custom hub
tags:
- Hubs
description: Delete a custom hub from the server
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to change
in: path
required: true
schema:
type: integer
- name: identifier
description: The identifier of the hub to change
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a custom hub
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: The hub is not a custom hub
content:
text/html:
schema:
type: string
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: The section or hub was not found
content:
text/html:
schema:
type: string
put:
operationId: updateHubVisibility
summary: Change hub visibility
tags:
- Hubs
description: Changed the visibility of a hub for both the admin and shared users
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: The section ID for the hubs to change
in: path
required: true
schema:
type: integer
- name: identifier
description: The identifier of the hub to change
in: path
required: true
schema:
type: string
- name: promotedToRecommended
description: Whether this hub should be displayed in recommended
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: promotedToOwnHome
description: Whether this hub should be displayed in admin's home
in: query
schema:
$ref: "#/components/schemas/BoolInt"
- name: promotedToSharedHome
description: Whether this hub should be displayed in shared user's home
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated change hub visibility
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'403':
$ref: "#/components/responses/403"
description: Forbidden - User does not have permission to access this resource
content:
text/html:
schema:
type: string
'404':
description: Section id was not found
content:
text/html:
schema:
type: string
/library/collections/{collectionId}/composite/{updatedAt}:
get:
operationId: getCollectionImage
summary: Get a collection's image
tags:
- Content
description: Get an image for the collection based on the items within
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/composite"
- name: collectionId
description: The collection id
in: path
required: true
schema:
type: integer
- name: updatedAt
description: The update time of the image. Used for busting cache.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
image/jpeg:
schema:
type: string
format: binary
'404':
description: Collection not found
content:
text/html:
schema:
type: string
/library/collections/{collectionId}/items/{itemId}:
put:
operationId: updateCollectionItem
summary: Update an item in a collection
tags:
- Library Collections
description: Delete an item from a collection
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: collectionId
description: The collection id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item to delete
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
description: Item not found
content:
text/html:
schema:
type: string
'404':
description: Collection not found
content:
text/html:
schema:
type: string
/library/collections/{collectionId}/items/{itemId}/move:
put:
operationId: moveCollectionItem
summary: Reorder an item in the collection
tags:
- Library Collections
description: Reorder items in a collection with one item after another
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: collectionId
description: The collection id
in: path
required: true
schema:
type: integer
- name: itemId
description: The item to move
in: path
required: true
schema:
type: integer
- name: after
description: The item to move this item after. If not provided, this item will be moved to the beginning
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'400':
description: Item not found
content:
text/html:
schema:
type: string
'404':
description: Collection not found
content:
text/html:
schema:
type: string
/library/media/{mediaId}/chapterImages/{chapter}:
get:
operationId: getChapterImage
summary: Get a chapter image
tags:
- Library
description: Get a single chapter image for a piece of media
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: mediaId
description: The id of the media item
in: path
required: true
schema:
type: integer
- name: chapter
description: The index of the chapter
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
image/jpeg:
schema:
type: string
format: binary
'404':
description: Either the media item or the chapter image was not found
content:
text/html:
schema:
type: string
/library/metadata/{ids}/{element}:
post:
operationId: setItemArtwork
summary: Set an item's artwork, theme, etc
tags:
- Library
description: |-
Set the artwork, thumb, element for a metadata item
Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: element
description: The type of artwork element (e.g., art, poster, thumb)
in: path
required: true
schema:
type: string
enum:
- thumb
- art
- clearLogo
- banner
- poster
- theme
- name: url
description: The url of the new asset. If not provided, the binary of the asset must be provided in the post body.
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully created/executed set an item's artwork, theme, etc
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: updateItemArtwork
summary: Set an item's artwork, theme, etc
tags:
- Library
description: |-
Set the artwork, thumb, element for a metadata item
Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: element
description: The type of artwork element (e.g., art, poster, thumb)
in: path
required: true
schema:
type: string
enum:
- thumb
- art
- clearLogo
- banner
- poster
- theme
- name: url
description: The url of the new asset.
in: query
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated set an item's artwork, theme, etc
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/marker/{marker}:
delete:
operationId: deleteMarker
summary: Delete a marker
tags:
- Library
description: Delete a marker for this user on the metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: marker
description: The marker identifier
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a marker
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Marker is not a bookmark
content:
text/html:
schema:
type: string
'404':
description: Marker could not be found
content:
text/html:
schema:
type: string
put:
operationId: editMarker
summary: Edit a marker
tags:
- Library
description: Edit a marker for this user on the metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: marker
description: The id of the marker to edit
in: path
required: true
schema:
type: string
- name: type
description: The type of marker to edit/create
in: query
required: true
schema:
type: integer
x-speakeasy-name-override: mediaType
- name: startTimeOffset
description: The start time of the marker
in: query
required: true
schema:
type: integer
- name: endTimeOffset
description: The end time of the marker
in: query
schema:
type: integer
- name: attributes
description: The attributes to assign to this marker
in: query
style: deepObject
schema:
type: object
example:
title: My favorite spot
responses:
'200':
$ref: "#/components/responses/post-responses-200"
description: Successfully updated edit a marker
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/responses-400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: The marker could not be found
content:
text/html:
schema:
type: string
/library/metadata/{ids}/media/{mediaItem}:
delete:
operationId: deleteMediaItem
summary: Delete a media item
tags:
- Library
description: Delete a single media from a metadata item in the library
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: mediaItem
description: The mediaItem
in: path
required: true
schema:
type: string
- name: proxy
description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a media item
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
description: Media item could not be deleted
content:
text/html:
schema:
type: string
'404':
description: Media item could not be found
content:
text/html:
schema:
type: string
/library/parts/{partId}/indexes/{index}:
get:
operationId: getPartIndex
summary: Get BIF index for a part
tags:
- Library
description: Get BIF index for a part by index type
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: partId
description: The part id who's index is to be fetched
in: path
required: true
schema:
type: integer
- name: index
description: The type of index to grab.
in: path
required: true
schema:
type: string
enum:
- sd
- name: interval
description: The interval between images to return in ms.
in: query
schema:
type: integer
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: The part or the index doesn't exist or the interval is too small
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/collection/{collectionId}:
delete:
operationId: deleteCollection
summary: Delete a collection
tags:
- Library
description: Delete a library collection from the PMS
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: collectionId
description: Collection Id
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a collection
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'404':
description: Collection not found
content:
text/html:
schema:
type: string
/library/sections/{sectionId}/composite/{updatedAt}:
get:
operationId: getSectionImage
summary: Get a section composite image
tags:
- Library
description: Get a composite image of images in this section
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- $ref: "#/components/parameters/mediaQuery"
- $ref: "#/components/parameters/composite"
- name: sectionId
description: Section identifier
in: path
required: true
schema:
type: integer
- name: updatedAt
description: The update time of the image. Used for busting cache.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully retrieved get a section composite image
content:
application/json:
schema:
$ref: "#/components/schemas/BinaryResponse"
example:
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/streams/{streamId}.{ext}:
delete:
operationId: deleteStream
summary: Delete a stream
tags:
- Library
description: Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: streamId
description: The id of the stream
in: path
required: true
schema:
type: integer
- name: ext
description: This is not a part of this endpoint but documented here to satisfy OpenAPI
in: path
required: true
schema:
type: string
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully deleted delete a stream
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'403':
description: This user cannot delete this stream
content:
text/html:
schema:
type: string
'500':
description: The stream cannot be deleted
content:
text/html:
schema:
type: string
get:
operationId: getStream
summary: Get a stream
tags:
- Library
description: Get a stream (such as a sidecar subtitle stream)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: streamId
description: The id of the stream
in: path
required: true
schema:
type: integer
- name: ext
description: The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles
in: path
required: true
schema:
type: string
- name: encoding
description: The requested encoding for the subtitle (only used for text subtitles)
in: query
required: false
schema:
type: string
- name: format
description: The requested format for the subtitle to convert the subtitles to (only used for text subtitles)
in: query
required: false
schema:
type: string
- name: autoAdjustSubtitle
description: Whether the server should attempt to automatically adjust the subtitle timestamps to match the media
in: query
required: false
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: The stream in the requested format.
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'403':
description: The media is not accessible to the user
content:
text/html:
schema:
type: string
'404':
description: The stream doesn't exist or has no data
content:
text/html:
schema:
type: string
'501':
description: The stream is not a sidecar subtitle
content:
text/html:
schema:
type: string
put:
operationId: setStreamOffset
summary: Set a stream offset
tags:
- Library
description: Set a stream offset in ms. This may not be respected by all clients
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: streamId
description: The id of the stream
in: path
required: true
schema:
type: integer
- name: ext
description: This is not a part of this endpoint but documented here to satisfy OpenAPI
in: path
required: true
schema:
type: string
- name: offset
description: The offest in ms
in: query
required: false
schema:
type: integer
responses:
'200':
description: The stream in the requested format.
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'400':
description: The stream doesn't exist
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/channels/{channel}/tune:
post:
operationId: tuneChannel
summary: Tune a channel on a DVR
tags:
- DVRs
description: Tune a channel on a DVR to the provided channel
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: channel
description: The channel ID to tune
in: path
required: true
schema:
type: string
example: '2.1'
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithMetadata"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
'500':
description: Tuning failed
content:
text/html:
schema:
type: string
/livetv/dvrs/{dvrId}/devices/{deviceId}:
delete:
operationId: removeDeviceFromDVR
summary: Remove a device from an existing DVR
tags:
- DVRs
description: Remove a device from an existing DVR
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: deviceId
description: The ID of the device to add.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainerWithStatus"
- type: object
properties:
DVR:
type: array
items:
$ref: "#/components/schemas/DVR"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
put:
operationId: addDeviceToDVR
summary: Add a device to an existing DVR
tags:
- DVRs
description: Add a device to an existing DVR
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: dvrId
description: The ID of the DVR.
in: path
required: true
schema:
type: integer
- name: deviceId
description: The ID of the device to add.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainerWithStatus"
- type: object
properties:
DVR:
type: array
items:
$ref: "#/components/schemas/DVR"
example:
MediaContainer:
DVR:
- Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/livetv/epg/countries/{country}/{epgId}/lineups:
get:
operationId: getCountriesLineups
summary: Get lineups for a country via postal code
tags:
- EPG
description: Returns a list of lineups for a given country, EPG provider and postal code
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: country
description: 3 letter country code
in: path
required: true
schema:
type: string
- name: epgId
description: The `providerIdentifier` of the provider
in: path
required: true
schema:
type: string
- name: postalCode
description: The postal code for the lineups to fetch
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithLineup"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Lineup:
- title: string value
type: string value
identifier: string value
key: string value
lineupType: 1
location: string value
uuid: string value
uuid: example
'404':
description: No provider with the identifier was found
content:
text/html:
schema:
type: string
/livetv/epg/countries/{country}/{epgId}/regions:
get:
operationId: getCountryRegions
summary: Get regions for a country
tags:
- EPG
description: Get regions for a country within an EPG provider
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: country
description: 3 letter country code
in: path
required: true
schema:
type: string
- name: epgId
description: The `providerIdentifier` of the provider
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Country:
type: array
items:
$ref: "#/components/schemas/EPGRegion"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Country:
- title: string value
type: string value
key: string value
national: true
'404':
description: No provider with the identifier was found
content:
text/html:
schema:
type: string
/livetv/sessions/{sessionId}/{consumerId}/index.m3u8:
get:
operationId: getSessionPlaylistIndex
summary: Get a session playlist index
tags:
- Live TV
description: Get a playlist index for playing this session
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sessionId
description: The session id
in: path
required: true
schema:
type: string
- name: consumerId
description: The consumer id
in: path
required: true
schema:
type: string
responses:
'200':
description: Index playlist for playing HLS content
content:
application/vnd.apple.mpegurl:
schema:
$ref: "#/components/schemas/BinaryResponse"
'404':
description: Session or consumer not found
content:
text/html:
schema:
type: string
/media/grabbers/devices/{deviceId}/thumb/{version}:
get:
operationId: getThumb
summary: Get device thumb
tags:
- Devices
description: Get a device's thumb for display to the user
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: deviceId
description: The ID of the device.
in: path
required: true
schema:
type: integer
- name: version
description: A version number of the thumb used for busting cache
in: path
required: true
schema:
type: integer
responses:
'200':
description: The thumbnail for the device
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'301':
description: The thumb URL on the device
content:
text/html:
schema:
type: string
'404':
description: No thumb found for this device
content:
text/html:
schema:
type: string
/playlists/{playlistId}/items/{generatorId}:
delete:
operationId: deletePlaylistItem
summary: Delete a Generator
tags:
- Library Playlists
description: Deletes an item from a playlist. Only works with dumb playlists.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: generatorId
description: The generator item ID to delete.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully deleted delete a generator
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator not found
content:
text/html:
schema:
type: string
get:
operationId: getPlaylistGenerator
summary: Get a playlist generator
tags:
- Library Playlists
description: Get a playlist's generator. Only used for optimized versions
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: generatorId
description: The generator item ID to delete.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Item:
type: array
items:
type: object
properties:
title:
type: string
type:
description: The type of this generator
type: integer
enum:
- -1
- 42
composite:
description: The composite thumbnail image path
type: string
Device:
type: object
properties:
profile:
type: string
id:
type: integer
Location:
type: object
properties:
librarySectionID:
type: integer
uri:
type: string
MediaSettings:
type: object
properties:
advancedSubtitles:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
audioBoost:
type: integer
audioChannelCount:
type: integer
autoAdjustQuality:
type: boolean
autoAdjustSubtitle:
type: boolean
directPlay:
type: boolean
directStream:
type: boolean
directStreamAudio:
type: boolean
disableResolutionRotation:
type: boolean
maxVideoBitrate:
type: integer
musicBitrate:
type: integer
peakBitrate:
type: integer
photoQuality:
type: integer
minimum: 0
maximum: 100
photoResolution:
type: string
secondsPerSegment:
type: integer
subtitles:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
subtitleSize:
type: integer
videoBitrate:
type: integer
videoQuality:
type: integer
minimum: 0
maximum: 100
videoResolution:
type: string
Policy:
type: object
properties:
scope:
type: string
enum:
- all
- count
unwatched:
description: True if only unwatched items are optimized
type: boolean
value:
description: If the scope is count, the number of items to optimize
type: integer
Status:
type: object
properties:
itemsCompleteCount:
type: integer
itemsCount:
type: integer
itemsSuccessfulCount:
type: integer
state:
type: string
enum:
- pending
- complete
- failed
totalSize:
type: integer
target:
type: string
targetTagID:
description: The tag of this generator's settings
type: integer
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Item:
- title: example
type: 1
composite: example
Device: {}
id: 1
Location: {}
MediaSettings: {}
Policy: {}
Status: {}
target: example
targetTagID: 1
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator not found
content:
text/html:
schema:
type: string
put:
operationId: modifyPlaylistGenerator
summary: Modify a Generator
tags:
- Library Playlists
description: Modify a playlist generator. Only used for optimizer
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: generatorId
description: The generator item ID to modify.
in: path
required: true
schema:
type: integer
- name: Item
description: |-
Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as:
Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0
in: query
style: deepObject
explode: true
schema:
type: object
properties:
title:
type: string
type:
type: integer
Location:
type: object
properties:
uri:
type: string
locationID:
type: integer
Policy:
type: object
properties:
scope:
type: string
enum:
- all
- count
unwatched:
$ref: "#/components/schemas/BoolInt"
value:
type: integer
target:
type: string
targetTagID:
type: integer
example:
Location:
uri: library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146
locationID: -1
Policy:
value: ''
scope: all
unwatched: 0
target: ''
targetTagID: 1
title: Jack-Jack Attack
type: 42
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated modify a generator
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator not found
content:
text/html:
schema:
type: string
/playlists/{playlistId}/items/{generatorId}/items:
get:
operationId: getPlaylistGeneratorItems
summary: Get a playlist generator's items
tags:
- Library Playlists
description: Get a playlist generator's items
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: generatorId
description: The generator item ID to delete.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
allOf:
- $ref: "#/components/schemas/Metadata"
- type: object
properties:
processingState:
description: The state of processing if this generator is part of an optimizer playlist
type: string
enum:
- processed
- completed
- tombstoned
- disabled
- error
- pending
processingStateContext:
description: The error which could have occurred (or `good`)
type: string
enum:
- good
- sourceFileUnavailable
- sourceFileMetadataError
- clientProfileError
- ioError
- transcoderError
- unknownError
- mediaAnalysisError
- downloadFailed
- accessDenied
- cannotTranscode
- codecInstallError
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
processingState: processed
processingStateContext: good
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator not found
content:
text/html:
schema:
type: string
/playlists/{playlistId}/items/{playlistItemId}/move:
put:
operationId: movePlaylistItem
summary: Moving items in a playlist
tags:
- Library Playlists
description: Moves an item in a playlist. Only works with dumb playlists.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: playlistItemId
description: The playlist item ID to move.
in: path
required: true
schema:
type: integer
- name: after
description: The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist
in: query
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated moving items in a playlist
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist)
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/items/{playQueueItemId}:
delete:
operationId: deletePlayQueueItem
summary: Delete an item from a play queue
tags:
- Play Queue
description: Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
- name: playQueueItemId
description: The play queue item ID to delete.
in: path
required: true
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully deleted delete an item from a play queue
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue not found
content:
text/html:
schema:
type: string
/playQueues/{playQueueId}/items/{playQueueItemId}/move:
put:
operationId: movePlayQueueItem
summary: Move an item in a play queue
tags:
- Play Queue
description: Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playQueueId
description: The ID of the play queue.
in: path
required: true
schema:
type: integer
- name: playQueueItemId
description: The play queue item ID to delete.
in: path
required: true
schema:
type: integer
- name: after
description: The play queue item ID to insert the new item after. If not present, moves to the beginning.
in: query
schema:
type: integer
responses:
'200':
$ref: "#/components/responses/slash-post-responses-200"
description: Successfully updated move an item in a play queue
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Play queue or queue item not found
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/session/{sessionId}/{segmentId}.m4s:
get:
operationId: getDASHSegment
summary: Get DASH Segment
tags:
- Transcoder
description: DASH segment delivery for adaptive streaming.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: transcodeType
description: The type of transcoding (e.g., video, audio)
in: path
required: true
schema:
type: string
- name: sessionId
description: The unique identifier of the session
in: path
required: true
schema:
type: string
- name: segmentId
description: The unique identifier of the media segment
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
video/mp4:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/{transcodeType}/:/transcode/universal/session/{sessionId}/{segmentId}.ts:
get:
operationId: getHLSSegment
summary: Get HLS Segment
tags:
- Transcoder
description: HLS TS segment delivery for adaptive streaming.
security:
- token:
- admin
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: transcodeType
description: The type of transcoding (e.g., video, audio)
in: path
required: true
schema:
type: string
- name: sessionId
description: The unique identifier of the session
in: path
required: true
schema:
type: string
- name: segmentId
description: The unique identifier of the media segment
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
video/mp2t:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/metadata/{ids}/{element}/{timestamp}:
get:
operationId: getItemArtwork
summary: Get an item's artwork, theme, etc
tags:
- Library
description: Get the artwork, thumb, element for a metadata item
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: ids
description: Comma-separated list of IDs
in: path
required: true
schema:
type: string
- name: element
description: The type of artwork element (e.g., art, poster, thumb)
in: path
required: true
schema:
type: string
enum:
- thumb
- art
- clearLogo
- banner
- poster
- theme
- name: timestamp
description: A timestamp on the element used for cache management in the client
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
audio/mpeg3:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'401':
$ref: "#/components/responses/401"
description: Unauthorized - Authentication token is missing or invalid
content:
text/html:
schema:
type: string
/library/parts/{partId}/{changestamp}/{filename}:
get:
operationId: getMediaPart
summary: Get a media part
tags:
- Library
description: |-
Get a media part for streaming or download.
- streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future.
- download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains.
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: partId
description: The part id who's index is to be fetched
in: path
required: true
schema:
type: integer
- name: changestamp
description: The changestamp of the part; used for busting potential caches. Provided in the `key` for the part
in: path
required: true
schema:
type: integer
- name: filename
description: A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part
in: path
required: true
schema:
type: string
- name: download
description: Whether this is a file download
in: query
schema:
$ref: "#/components/schemas/BoolInt"
responses:
'200':
description: OK
headers:
Content-Disposition:
description: 'Note: This header is only included in download requests'
schema:
type: string
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'403':
description: Client requested download and server owner has forbidden download of media
content:
text/html:
schema:
type: string
'404':
description: The part doesn't exist
content:
text/html:
schema:
type: string
'503':
description: Client requested the part without a decision and no decision could be made or decision is for a transcode
content:
text/html:
schema:
type: string
'509':
description: Client requested the part without a decision and no decision could be made because there is insufficient bandwidth for client to direct play this part
content:
text/html:
schema:
type: string
/library/parts/{partId}/indexes/{index}/{offset}:
get:
operationId: getImageFromBif
summary: Get an image from part BIF
tags:
- Library
description: Extract an image from the BIF for a part at a particular offset
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: partId
description: The part id who's index is to be fetched
in: path
required: true
schema:
type: integer
- name: index
description: The type of index to grab.
in: path
required: true
schema:
type: string
enum:
- sd
- name: offset
description: The offset to seek in ms.
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
image/jpeg:
schema:
type: string
format: binary
'404':
description: The part or the index doesn't exist
content:
text/html:
schema:
type: string
/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups:
get:
operationId: listLineups
summary: Get lineups for a region
tags:
- EPG
description: Get lineups for a region within an EPG provider
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: country
description: 3 letter country code
in: path
required: true
schema:
type: string
- name: epgId
description: The `providerIdentifier` of the provider
in: path
required: true
schema:
type: string
- name: region
description: The region for the lineup
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of objects available
schema:
type: integer
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithLineup"
example:
MediaContainer:
identifier: example
offset: 1
size: 1
totalSize: 1
Lineup:
- title: string value
type: string value
identifier: string value
key: string value
lineupType: 1
location: string value
uuid: string value
uuid: example
'404':
description: No provider with the identifier was found
content:
text/html:
schema:
type: string
/livetv/sessions/{sessionId}/{consumerId}/{segmentId}:
get:
operationId: getSessionSegment
summary: Get a single session segment
tags:
- Live TV
description: Get a single LiveTV session segment
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: sessionId
description: The session id
in: path
required: true
schema:
type: string
- name: consumerId
description: The consumer id
in: path
required: true
schema:
type: string
- name: segmentId
description: The segment id
in: path
required: true
schema:
type: string
responses:
'200':
description: MPEG-TS segment for playing HLS content
content:
application/octet-stream:
schema:
$ref: "#/components/schemas/BinaryResponse"
'404':
description: Session, consumer, or segment not found
content:
text/html:
schema:
type: string
/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}:
put:
operationId: refreshPlaylist
summary: Reprocess a generator
tags:
- Library Playlists
description: Make a generator reprocess (refresh)
parameters:
- $ref: "#/components/parameters/accepts"
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
- $ref: "#/components/parameters/X-Plex-Product"
- $ref: "#/components/parameters/X-Plex-Version"
- $ref: "#/components/parameters/X-Plex-Platform"
- $ref: "#/components/parameters/X-Plex-Platform-Version"
- $ref: "#/components/parameters/X-Plex-Device"
- $ref: "#/components/parameters/X-Plex-Model"
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
- $ref: "#/components/parameters/X-Plex-Device-Name"
- $ref: "#/components/parameters/X-Plex-Marketplace"
- name: playlistId
description: The ID of the playlist
in: path
required: true
schema:
type: integer
- name: generatorId
description: The generator item ID to act on
in: path
required: true
schema:
type: integer
- name: metadataId
description: The metadata item ID to act on
in: path
required: true
schema:
type: integer
- name: action
description: The action to perform for this item on this optimizer queue
in: path
required: true
schema:
type: string
enum:
- reprocess
- disable
- enable
responses:
'200':
$ref: "#/components/responses/200"
description: Successfully updated reprocess a generator
content:
application/json:
schema:
$ref: "#/components/schemas/SuccessResponse"
example:
success: true
'400':
$ref: "#/components/responses/400"
description: Bad Request - Invalid parameters or malformed request
content:
text/html:
schema:
type: string
'404':
description: Playlist not found (or user may not have permission to access playlist) or generator or metadata item not found
content:
text/html:
schema:
type: string
components:
securitySchemes:
clientIdentifier:
name: X-Plex-Client-Identifier
description: |-
An opaque identifier unique to the client. Required for OAuth PIN flows
and JWT device registration endpoints.
type: apiKey
in: header
token:
name: X-Plex-Token
description: |-
The token which identifies the user accessing the PMS. This can be either:
- A traditional access token obtained from plex.tv
- A JWT token obtained through the JWT authentication flow
JWT tokens provide better security with:
- Short-lived tokens (7 days expiration)
- Public-key cryptography (ED25519)
- Better clock synchronization
- Individual device revocation capability
type: apiKey
in: header
parameters:
accepts:
name: accepts
description: Indicates the client accepts the indicated media types
in: header
schema:
type: string
default: application/xml
enum:
- application/json
- application/xml
advancedSubtitles:
name: advancedSubtitles
description: "Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost"
in: query
schema:
type: string
enum:
- burn
- text
- unknown
example: burn
audioBoost:
name: audioBoost
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
in: query
schema:
type: integer
minimum: 1
example: 50
audioChannelCount:
name: audioChannelCount
description: Target video number of audio channels.
in: query
schema:
type: integer
minimum: 1
maximum: 8
example: 5
autoAdjustQuality:
name: autoAdjustQuality
description: Indicates the client supports ABR.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
autoAdjustSubtitle:
name: autoAdjustSubtitle
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
composite:
name: composite
in: query
schema:
type: object
properties:
type:
description: Limit composite to specified metadata types
type: integer
format:
description: The image type
type: string
enum:
- jpg
- png
backgroundColor:
description: 6 character hex RGB value for background color for image
type: string
border:
description: The width of the intra-image border
type: integer
cols:
description: Number of columns to construct in the composite image
type: integer
crop:
description: Where to crop source images to fit into composite image proportions
type: string
enum:
- center
- top
height:
description: The height of the image
type: integer
media:
description: The default image type to use as the sources
type: string
enum:
- thumb
- art
- banner
repeat:
description: Allow repetion of images if there are not enough source images to fill grid
type: boolean
rows:
description: Number of rows to construct in the composite image
type: integer
width:
description: The width of the image
type: integer
count:
name: count
description: Limit results to count items
in: query
schema:
type: integer
directPlay:
name: directPlay
description: Indicates the client supports direct playing the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
directStream:
name: directStream
description: Indicates the client supports direct streaming the video of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
directStreamAudio:
name: directStreamAudio
description: Indicates the client supports direct streaming the audio of the indicated content.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
disableResolutionRotation:
name: disableResolutionRotation
description: Indicates if resolution should be adjusted for orientation.
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
hasMDE:
name: hasMDE
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
in: query
schema:
$ref: "#/components/schemas/BoolInt"
example: 1
location:
name: location
description: Network type of the client, can be used to help determine target bitrate.
in: query
schema:
type: string
enum:
- lan
- wan
- cellular
example: wan
mediaBufferSize:
name: mediaBufferSize
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
in: query
schema:
type: integer
example: 102400
mediaIndex:
name: mediaIndex
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
in: query
schema:
type: integer
example: 0
mediaQuery:
name: mediaQuery
description: |-
A querystring-based filtering language used to select subsets of media. Can be provided as an object with typed properties for type safety, or as a string for complex queries with operators and boolean logic.
The query supports:
- Fields: integer, boolean, tag, string, date, language
- Operators: =, !=, ==, !==, <=, >=, >>=, <<= (varies by field type)
- Boolean operators: & (AND), , (OR), push/pop (parentheses), or=1 (explicit OR)
- Sorting: sort parameter with :desc, :nullsLast modifiers
- Grouping: group parameter
- Limits: limit parameter
Examples:
- Object format: `{type: 4, sourceType: 2, title: "24"}` → `type=4&sourceType=2&title=24`
- String format: `type=4&sourceType=2&title==24` - type = 4 AND sourceType = 2 AND title = "24"
- Complex: `push=1&index=1&or=1&rating=2&pop=1&duration=10` - (index = 1 OR rating = 2) AND duration = 10
See [API Info section](#section/API-Info/Media-Queries) for detailed information on building media queries.
in: query
style: form
explode: true
schema:
$ref: "#/components/schemas/MediaQuery"
musicBitrate:
name: musicBitrate
description: Target bitrate for audio only files (in kbps, used to transcode).
in: query
schema:
type: integer
minimum: 0
example: 5000
offset:
name: offset
description: Offset from the start of the media (in seconds).
in: query
schema:
type: number
example: 90.5
partIndex:
name: partIndex
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
in: query
schema:
type: integer
example: 0
path:
name: path
description: Internal PMS path of the media to transcode.
in: query
schema:
type: string
example: /library/metadata/151671
peakBitrate:
name: peakBitrate
description: Maximum bitrate (in kbps) to use in ABR.
in: query
schema:
type: integer
minimum: 0
example: 12000
photoResolution:
name: photoResolution
description: Target photo resolution.
in: query
schema:
type: string
pattern: ^\d[x:]\d$
example: 1080x1080
protocol:
name: protocol
description: "Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)"
in: query
schema:
type: string
enum:
- http
- hls
- dash
example: dash
secondsPerSegment:
name: secondsPerSegment
description: Number of seconds to include in each transcoded segment
in: query
schema:
type: integer
example: 5
smart:
name: smart
description: Whether this is a smart collection/playlist
in: query
schema:
type: boolean
subtitles:
name: subtitles
description: "Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream"
in: query
schema:
type: string
enum:
- auto
- burn
- none
- sidecar
- embedded
- segmented
- unknown
example: burn
subtitleSize:
name: subtitleSize
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
in: query
schema:
type: integer
minimum: 1
example: 50
title:
name: title
description: The title to filter by or assign
in: query
schema:
type: string
transcodeSessionId:
name: transcodeSessionId
description: Transcode session UUID
in: query
schema:
type: string
transcodeType:
name: transcodeType
description: Type of transcode media
in: path
required: true
schema:
type: string
enum:
- video
- music
- audio
- subtitles
type:
name: type
description: |-
The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
in: query
schema:
$ref: "#/components/schemas/MediaType"
example: 2
videoBitrate:
name: videoBitrate
description: Target video bitrate (in kbps).
in: query
schema:
type: integer
minimum: 0
example: 12000
videoQuality:
name: videoQuality
description: Target photo quality.
in: query
schema:
type: integer
minimum: 0
maximum: 99
example: 50
videoResolution:
name: videoResolution
description: Target maximum video resolution.
in: query
schema:
type: string
pattern: ^\d[x:]\d$
example: 1080x1080
X-Plex-Client-Identifier:
name: X-Plex-Client-Identifier
description: An opaque identifier unique to the client
in: header
required: true
schema:
type: string
example: abc123
example: abc123
x-speakeasy-name-override: Client-Identifier
X-Plex-Container-Size:
name: X-Plex-Container-Size
description: |-
The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
in: query
required: false
schema:
type: integer
format: int32
default: 50
example: 50
X-Plex-Container-Start:
name: X-Plex-Container-Start
description: |-
The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
in: query
required: false
schema:
type: integer
format: int32
default: 0
example: 0
X-Plex-Device:
name: X-Plex-Device
description: A relatively friendly name for the client device
in: header
schema:
type: string
example: Roku 3
example: Roku 3
x-speakeasy-name-override: Device
X-Plex-Device-Name:
name: X-Plex-Device-Name
description: A friendly name for the client
in: header
schema:
type: string
example: Living Room TV
example: Living Room TV
x-speakeasy-name-override: Device-Name
X-Plex-Device-Vendor:
name: X-Plex-Device-Vendor
description: The device vendor
in: header
schema:
type: string
example: Roku
example: Roku
x-speakeasy-name-override: Device-Vendor
X-Plex-Marketplace:
name: X-Plex-Marketplace
description: The marketplace on which the client application is distributed
in: header
schema:
type: string
example: googlePlay
example: googlePlay
x-speakeasy-name-override: Marketplace
X-Plex-Model:
name: X-Plex-Model
description: A potentially less friendly identifier for the device model
in: header
schema:
type: string
example: 4200X
example: 4200X
x-speakeasy-name-override: Model
X-Plex-Platform:
name: X-Plex-Platform
description: The platform of the client
in: header
schema:
type: string
example: Roku
example: Roku
x-speakeasy-name-override: Platform
X-Plex-Platform-Version:
name: X-Plex-Platform-Version
description: The version of the platform
in: header
schema:
type: string
example: 4.3 build 1057
example: 4.3 build 1057
x-speakeasy-name-override: Platform-Version
X-Plex-Product:
name: X-Plex-Product
description: The name of the client product
in: header
schema:
type: string
example: Plex for Roku
example: Plex for Roku
x-speakeasy-name-override: Product
X-Plex-Version:
name: X-Plex-Version
description: The version of the client application
in: header
schema:
type: string
example: 2.4.1
example: 2.4.1
x-speakeasy-name-override: Version
headers:
X-Plex-Container-Start:
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
schema:
type: integer
X-Plex-Container-Total-Size:
description: Provided on all MediaContainer objects indicating the total size of the collection
schema:
type: integer
example: 100
minimum: 0
responses:
'200':
description: OK
content:
text/html: {}
'204':
description: No Content
content:
text/html: {}
'400':
description: Bad Request
content:
text/html: {}
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
'403':
description: Forbidden
content:
text/html: {}
'404':
description: Not Found
content:
text/html: {}
dvrRequestHandler_slash-get-responses-200:
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainerWithStatus"
- properties:
DVR:
items:
$ref: "#/components/schemas/DVR"
type: array
type: object
type: object
get-responses-200:
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- properties:
Hub:
items:
$ref: "#/components/schemas/ManagedHub"
type: array
type: object
type: object
historyAll-get-responses-200:
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- properties:
Metadata:
items:
$ref: "#/components/schemas/PlaybackHistoryMetadata"
type: array
type: object
type: object
LibrarySections:
description: OK
content:
application/json:
schema:
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/ServerConfiguration"
- properties:
Directory:
items:
properties:
count:
type: integer
key:
description: The key where this directory is found
type: string
title:
type: string
type: object
type: array
type: object
type: object
post-responses-200:
description: OK
content:
application/json:
schema:
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- $ref: "#/components/schemas/Marker"
type: object
responses-200:
description: OK
headers:
X-Plex-Container-Start:
$ref: "#/components/headers/X-Plex-Container-Start"
X-Plex-Container-Total-Size:
$ref: "#/components/headers/X-Plex-Container-Total-Size"
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithHubs"
responses-400:
description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset`
content:
text/html: {}
responses-403:
description: The media is not accessible to the user
content:
text/html: {}
responses-404:
description: The stream doesn't exist, or the loudness feature is not available on this PMS
content:
text/html: {}
slash-get-responses-200:
description: OK
content:
application/json:
schema:
properties:
MediaContainer:
properties:
content:
description: |-
The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly.
type: string
allowSync:
oneOf:
- type: boolean
- enum:
- '0'
- '1'
type: string
art:
type: string
Directory:
items:
$ref: "#/components/schemas/Metadata"
type: array
identifier:
type: string
librarySectionID:
type: integer
mediaTagPrefix:
type: string
mediaTagVersion:
type: integer
size:
type: integer
sortAsc:
type: boolean
thumb:
type: string
title1:
type: string
viewGroup:
type: string
viewMode:
type: integer
type: object
type: object
slash-post-responses-200:
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/MediaContainerWithPlaylistMetadata"
schemas:
Activity:
type: object
example:
title: string value
type: string value
cancellable: true
Context: {}
progress: 1
Response: {}
subtitle: string value
userID: 1
uuid: string value
additionalProperties: true
properties:
title:
description: A user-friendly title for this activity
type: string
type:
description: The type of activity
type: string
cancellable:
description: Indicates whether this activity can be cancelled
type: boolean
Context:
description: An object with additional values
type: object
additionalProperties: true
progress:
description: A progress percentage. A value of -1 means the progress is indeterminate
type: number
minimum: -1
maximum: 100
Response:
description: An object with the response to the async opperation
type: object
additionalProperties: true
subtitle:
description: A user-friendly sub-title for this activity
type: string
userID:
description: The user this activity belongs to
type: integer
uuid:
description: The ID of the activity
type: string
x-speakeasy-unknown-fields: true
AddedQueueItem:
type: object
example:
id: 1
key: string value
properties:
id:
description: The queue item id that was added or the existing one if an item already exists in this queue with the same parameters
type: integer
key:
description: The key added to the queue
type: string
AllowSync:
example: true
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
AuthKeysResponse:
type: object
example:
keys:
- alg: string value
e: string value
kid: string value
kty: string value
n: string value
use: string value
properties:
keys:
type: array
items:
type: object
properties:
alg:
type: string
e:
type: string
kid:
type: string
kty:
type: string
n:
type: string
use:
type: string
AuthNonceResponse:
type: object
example:
nonce: string value
properties:
nonce:
description: A random nonce string for authentication
type: string
AuthTokenResponse:
type: object
example:
authToken: string value
clientIdentifier: string value
jwt: string value
properties:
authToken:
description: The Plex authentication token
type: string
clientIdentifier:
type: string
jwt:
description: JWT token for device authentication
type: string
BadRequestErrorResponse:
type: object
example:
errors:
- code: 400
message: Bad Request
status: 400
properties:
errors:
type: array
items:
type: object
properties:
code:
type: integer
format: int32
example: 1000
message:
type: string
example: X-Plex-Client-Identifier is missing
x-speakeasy-error-message: true
status:
type: integer
format: int32
example: 400
x-speakeasy-name-override: BadRequest
Bandwidth:
type: object
example:
bandwidth: 1
resolution: string value
time: 1
properties:
bandwidth:
description: The bandwidth at this time in kbps
type: integer
resolution:
description: The user-friendly resolution at this time
type: string
time:
description: Media playback time where this bandwidth started
type: integer
BinaryResponse:
description: A binary data response (image, audio, video, or other media)
type: string
format: binary
example:
BoolInt:
type: integer
format: int32
enum:
- 0
- 1
default: 0
example: 1
x-speakeasy-enums:
- false
- true
ButlerTask:
type: object
example:
title: string value
description: string value
enabled: true
interval: 1
name: string value
scheduleRandomized: true
properties:
title:
description: A user-friendly title of the task
type: string
description:
description: A user-friendly description of the task
type: string
enabled:
description: Whether this task is enabled or not
type: boolean
interval:
description: The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.
type: integer
name:
description: The name of the task
type: string
scheduleRandomized:
description: Indicates whether the timing of the task is randomized within the butler interval
type: boolean
Channel:
type: object
example:
title: string value
callSign: string value
channelVcn: string value
drm: true
favorite: true
hd: true
identifier: string value
key: string value
language: string value
signalQuality: 1
signalStrength: 1
thumb: string value
properties:
title:
type: string
callSign:
type: string
channelVcn:
type: string
drm:
description: Whether the channel requires DRM.
type: boolean
example: false
favorite:
description: Whether the channel is marked as a favorite.
type: boolean
example: true
hd:
type: boolean
identifier:
type: string
key:
type: string
language:
type: string
signalQuality:
description: Signal quality percentage (0-100).
type: integer
example: 85
signalStrength:
description: Signal strength percentage (0-100).
type: integer
example: 90
thumb:
type: string
ChannelMapping:
type: object
example:
channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
properties:
channelKey:
type: string
deviceIdentifier:
type: string
enabled:
type: string
lineupIdentifier:
type: string
ChannelResponse:
type: object
example:
MediaContainer:
size: 1
Channel:
- id: 1
title: Example Channel
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Channel:
type: array
items:
$ref: "#/components/schemas/Channel"
ClaimTokenResponse:
type: object
example:
token: string value
properties:
token:
description: The claim token for server authentication
type: string
CloudServerResponse:
type: object
example:
address: string value
name: string value
port: 1
scheme: string value
properties:
address:
type: string
name:
type: string
port:
type: integer
scheme:
type: string
Collection:
description: A collection of related media items.
type: object
example:
artBlurHash: string value
collectionFilterBasedOnUser: true
collectionMode: default
collectionPublished: true
collectionSort: string value
lastRatedAt: 1
thumbBlurHash: string value
userRating: 1
properties:
artBlurHash:
description: Blur hash for collection art.
type: string
example: LhE3*HRjR*a#ogWBofj[bbf6ofa#
collectionFilterBasedOnUser:
description: Whether the smart collection filter is based on the current user.
type: boolean
example: false
collectionMode:
description: Display mode for the collection.
type: string
enum:
- default
- hideItems
- showItems
example: default
collectionPublished:
description: Whether the collection is published to Plex Discover.
type: boolean
example: true
collectionSort:
description: Sort order for items in the collection.
type: string
example: addedAt:desc
lastRatedAt:
description: Timestamp of the last user rating.
type: integer
example: 1704067200
thumbBlurHash:
description: Blur hash for collection thumbnail.
type: string
example: LhE3*HRjR*a#ogWBofj[bbf6ofa#
userRating:
description: User star rating (0-10).
type: number
example: 8.5
Connection:
type: object
example:
address: string value
local: true
port: 1
protocol: string value
relay: true
uri: string value
properties:
address:
type: string
local:
description: Indicates if the connection is the server's LAN address
type: boolean
port:
type: integer
protocol:
type: string
relay:
description: Indicates the connection is over a relayed connection
type: boolean
uri:
type: string
ConnectionInfo:
type: object
example:
accessToken: string value
clientIdentifier: string value
Connection:
- address: string value
local: true
port: 1
protocol: string value
relay: true
uri: string value
name: string value
properties:
accessToken:
type: string
clientIdentifier:
type: string
Connection:
type: array
items:
$ref: "#/components/schemas/Connection"
name:
type: string
ConnectionInfoWrapper:
type: object
example:
Device:
Connection:
- uri: http://192.168.1.1:32400
properties:
Device:
$ref: "#/components/schemas/ConnectionInfo"
DecisionResult:
type: object
example:
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: string value
generalDecisionCode: 1
generalDecisionText: string value
mdeDecisionCode: 1
mdeDecisionText: string value
transcodeDecisionCode: 1
transcodeDecisionText: string value
properties:
availableBandwidth:
description: The maximum bitrate set when item was added
type: integer
directPlayDecisionCode:
type: integer
directPlayDecisionText:
type: string
generalDecisionCode:
type: integer
generalDecisionText:
type: string
mdeDecisionCode:
description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1`
type: integer
mdeDecisionText:
description: Descriptive text for the above code
type: string
transcodeDecisionCode:
type: integer
transcodeDecisionText:
type: string
Device:
type: object
example:
title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
properties:
title:
description: Display title for the device.
type: string
example: Living Room Tuner
ChannelMapping:
type: array
items:
$ref: "#/components/schemas/ChannelMapping"
deviceIdentifier:
description: Distinct hardware identifier for the device.
type: string
example: HDHomeRun-1234ABCD
enabled:
description: Whether the device is enabled.
type: boolean
example: true
id:
description: Unique device ID.
type: integer
example: 42
key:
type: string
lastSeenAt:
type: integer
lineup:
description: EPG lineup association.
type: string
example: OTA
lineupType:
description: Type of EPG lineup.
type: string
example: Antenna
make:
type: string
model:
type: string
modelNumber:
type: string
name:
description: Human-readable device name.
type: string
example: HDHomeRun CONNECT
protocol:
type: string
sources:
type: string
state:
type: string
status:
type: string
thumb:
description: URL to the device thumbnail image.
type: string
example: https://plex.tv/devices/42/thumb
thumbVersion:
description: Version of the device thumbnail.
type: integer
example: 1
tuners:
type: string
uri:
type: string
uuid:
type: string
DeviceChannel:
type: object
example:
drm: true
favorite: true
hd: true
identifier: string value
key: string value
name: string value
signalQuality: 1
signalStrength: 1
properties:
drm:
description: Indicates the channel is DRMed and thus may not be playable
type: boolean
favorite:
type: boolean
hd:
type: boolean
identifier:
type: string
key:
type: string
name:
type: string
signalQuality:
type: integer
signalStrength:
type: integer
Directory:
type: object
example:
title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
additionalProperties: true
properties:
title:
type: string
type:
type: string
art:
type: string
content:
type: boolean
filter:
type: string
hasPrefs:
type: boolean
hasStoreServices:
type: boolean
hubKey:
type: string
identifier:
type: string
key:
type: string
lastAccessedAt:
type: integer
Pivot:
type: array
items:
type: object
properties:
title:
type: string
type:
type: string
context:
type: string
id:
type: string
key:
type: string
symbol:
type: string
share:
type: integer
thumb:
type: string
titleBar:
type: string
DownloadQueue:
type: object
example:
id: 1
itemCount: 1
status: deciding
properties:
id:
type: integer
itemCount:
type: integer
status:
description: |-
The state of this queue
- deciding: At least one item is still being decided
- waiting: At least one item is waiting for transcode and none are currently transcoding
- processing: At least one item is being transcoded
- done: All items are available (or potentially expired)
- error: At least one item has encountered an error
type: string
enum:
- deciding
- waiting
- processing
- done
- error
DownloadQueueItem:
type: object
example:
DecisionResult:
availableBandwidth: 1
directPlayDecisionCode: 1
directPlayDecisionText: string value
generalDecisionCode: 1
generalDecisionText: string value
mdeDecisionCode: 1
mdeDecisionText: string value
transcodeDecisionCode: 1
transcodeDecisionText: string value
error: string value
id: 1
key: string value
queueId: 1
status: deciding
transcode: {}
TranscodeSession:
complete: true
context: string value
duration: 1
error: true
key: string value
progress: 1
protocol: string value
size: 1
sourceAudioCodec: string value
sourceVideoCodec: string value
speed: 1
throttled: true
transcodeHwFullPipeline: true
transcodeHwRequested: true
properties:
DecisionResult:
$ref: "#/components/schemas/DecisionResult"
error:
description: The error encountered in transcoding or decision
type: string
id:
type: integer
key:
type: string
queueId:
type: integer
status:
description: |-
The state of the item:
- deciding: The item decision is pending
- waiting: The item is waiting for transcode
- processing: The item is being transcoded
- available: The item is available for download
- error: The item encountered an error in the decision or transcode
- expired: The transcoded item has timed out and is no longer available
type: string
enum:
- deciding
- waiting
- processing
- available
- error
- expired
transcode:
description: The transcode session object which is not yet documented otherwise it'd be a $ref here.
type: object
TranscodeSession:
$ref: "#/components/schemas/TranscodeSession"
DVR:
type: object
example:
Device:
- title: string value
ChannelMapping:
- channelKey: string value
deviceIdentifier: string value
enabled: string value
lineupIdentifier: string value
deviceIdentifier: string value
enabled: true
id: 1
key: string value
lastSeenAt: 1
lineup: string value
lineupType: string value
make: string value
model: string value
modelNumber: string value
name: string value
protocol: string value
sources: string value
state: string value
status: string value
thumb: string value
thumbVersion: 1
tuners: string value
uri: string value
uuid: string value
key: string value
language: string value
lineup: string value
uuid: string value
properties:
Device:
type: array
items:
$ref: "#/components/schemas/Device"
key:
type: string
language:
type: string
lineup:
type: string
uuid:
type: string
DVRResponse:
type: object
example:
MediaContainer:
size: 1
DVR:
- key: /tv.plex.provider.epg
title: HDHomerun
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainerWithStatus"
- type: object
properties:
DVR:
type: array
items:
$ref: "#/components/schemas/DVR"
EPGCountry:
type: object
example:
title: string value
type: string value
example: string value
code: string value
flavor: 1
key: string value
language: string value
languageTitle: string value
properties:
title:
type: string
type:
type: string
example:
type: string
code:
description: Three letter code
type: string
flavor:
description: |-
- `0`: The country is divided into regions, and following the key will lead to a list of regions.
- `1`: The county is divided by postal codes, and an example code is returned in `example`.
- `2`: The country has a single postal code, returned in `example`.
type: integer
enum:
- 0
- 1
- 2
key:
type: string
language:
description: Three letter language code
type: string
languageTitle:
description: The title of the language
type: string
EPGLanguage:
type: object
example:
title: string value
code: string value
properties:
title:
type: string
code:
description: 3 letter language code
type: string
EPGRegion:
type: object
example:
title: string value
type: string value
key: string value
national: true
properties:
title:
type: string
type:
type: string
key:
type: string
national:
type: boolean
Error:
type: object
example:
errors:
- code: 1
message: string value
status: 1
properties:
errors:
type: array
items:
type: object
properties:
code:
type: integer
format: int32
example: 1001
message:
type: string
example: User could not be authenticated
x-speakeasy-error-message: true
status:
type: integer
format: int32
example: 401
Feature:
type: object
example:
type: string value
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
key: string value
properties:
type:
type: string
Directory:
type: array
items:
$ref: "#/components/schemas/Directory"
key:
type: string
Filter:
example:
filter: genre=action
filterType: string
allOf:
- $ref: "#/components/schemas/Directory"
- description: Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API.
type: object
properties:
title:
description: The title for the filter.
type: string
filter:
description: This represents the filter name used for the filter, which can be used to construct complex media queries with.
type: string
filterType:
description: This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter.
type: string
key:
description: This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element.
type: string
GeoIPResponse:
type: object
example:
city: string value
coordinates: string value
country: string value
country_code: string value
subdivisions: string value
timezone: string value
properties:
city:
type: string
coordinates:
type: string
country:
type: string
country_code:
type: string
subdivisions:
type: string
timezone:
type: string
Hub:
type: object
example:
title: string value
type: string value
context: string value
hubIdentifier: string value
hubKey: string value
key: string value
Metadata:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
more: true
promoted: true
random: true
reason: string value
reasonID: 1
reasonTitle: string value
size: 1
style: string value
subtype: string value
totalSize: 1
additionalProperties: true
properties:
title:
description: A title for this grouping of content
type: string
type:
description: The type of the items contained in this hub, or possibly `mixed` if there are multiple types
type: string
example: track
context:
type: string
example: hub.home.onDeck
hubIdentifier:
description: A unique identifier for the hub
type: string
example: home.onDeck
hubKey:
description: A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional.
type: string
key:
description: The key at which all of the content for this hub can be retrieved
type: string
example: /hubs/sections/home/onDeck
Metadata:
type: array
items:
$ref: "#/components/schemas/Metadata"
more:
description: '"A boolean indicating that the hub contains more than what''s included in the current response."'
type: boolean
promoted:
description: Indicating if the hub should be promoted to the user's homescreen
type: boolean
random:
description: Indicating that the contents of the hub may change on each request
type: boolean
reason:
description: Reason for hub inclusion (e.g. "because you watched").
type: string
example: becauseYouWatched
reasonID:
description: ID of the item that triggered the reason.
type: integer
example: 12345
reasonTitle:
description: Human-readable reason title.
type: string
example: Because You Watched The Matrix
size:
type: integer
example: 1
style:
description: A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell`
type: string
subtype:
description: The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types
type: string
example: podcast
totalSize:
type: integer
example: 8
x-speakeasy-unknown-fields: true
Image:
description: Images such as movie posters and background artwork are represented by Image elements.
type: object
example:
type: background
alt: string value
url: string value
properties:
type:
description: Describes both the purpose and intended presentation of the image.
type: string
enum:
- background
- backgroundSquare
- banner
- clearLogo
- coverPoster
- snapshot
alt:
description: Title to use for accessibility.
type: string
url:
description: The relative path or absolute url for the image.
type: string
IPResponse:
type: object
example:
ip: 192.168.1.1
properties:
ip:
description: The public IP address
type: string
format: ipv4
Items:
type: object
example:
size: 10
items: []
allOf:
- $ref: "#/components/schemas/Metadata"
- type: object
properties:
MetadataItem:
type: array
items:
$ref: "#/components/schemas/Items"
description: Nested metadata items
type: object
JWKRegistrationRequest:
type: object
example:
jwk:
crv: string value
kid: string value
kty: string value
x: string value
strong: false
properties:
jwk:
description: JSON Web Key for device authentication
type: object
properties:
crv:
type: string
example: Ed25519
kid:
type: string
kty:
type: string
example: OKP
x:
type: string
strong:
description: Request strong authentication
type: boolean
default: false
Key:
type: string
example: /library/metadata/1
LegacyPinResponse:
type: object
example:
authToken: string value
clientIdentifier: string value
code: string value
expiresIn: 1
id: 1
trusted: true
properties:
authToken:
description: The authentication token
type: string
clientIdentifier:
type: string
code:
description: The 4-character PIN code
type: string
expiresIn:
type: integer
id:
description: The PIN ID
type: integer
trusted:
type: boolean
Level:
type: object
example:
v: 1
properties:
v:
description: The level in db.
type: number
LibrarySection:
type: object
example:
title: string value
type: movie
agent: string value
allowSync: true
art: string value
composite: string value
content: true
contentChangedAt: 1
createdAt: 1
directory: true
filters: true
hidden: true
key: string value
language: string value
Location:
- id: 1
refreshing: true
scannedAt: 1
scanner: string value
thumb: string value
updatedAt: 1
uuid: string value
properties:
title:
description: The title of the library
type: string
example: Movies
type:
$ref: "#/components/schemas/MediaTypeString"
agent:
type: string
allowSync:
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
art:
type: string
composite:
type: string
content:
type: boolean
contentChangedAt:
$ref: "#/components/schemas/PlexDateTime"
createdAt:
$ref: "#/components/schemas/PlexDateTime"
directory:
type: boolean
filters:
description: Indicates whether this section has filtering capabilities
type: boolean
hidden:
type: boolean
key:
$ref: "#/components/schemas/Key"
language:
type: string
Location:
type: array
items:
description: Represents a top-level location on disk where media in this library section is stored
type: object
properties:
id:
type: integer
path:
description: The path of where this directory exists on disk
refreshing:
description: Indicates whether this library section is currently scanning
type: boolean
scannedAt:
$ref: "#/components/schemas/PlexDateTime"
scanner:
type: string
thumb:
$ref: "#/components/schemas/Thumb"
updatedAt:
$ref: "#/components/schemas/PlexDateTime"
uuid:
description: The universally unique identifier for the library.
type: string
example: e69655a2-ef48-4aba-bb19-d3cc3401e7d6
required:
- uuid
- language
- type
Lineup:
type: object
example:
title: string value
type: string value
identifier: string value
key: string value
lineupType: 1
location: string value
uuid: string value
properties:
title:
type: string
type:
description: The type of this object (`lineup` in this case)
type: string
identifier:
description: Lineup identifier.
type: string
example: OTA
key:
description: API key for this lineup.
type: string
example: /tv.plex.lineup.ota
lineupType:
description: |-
- `-1`: N/A
- `0`: Over the air
- `1`: Cable
- `2`: Satellite
- `3`: IPTV
- `4`: Virtual
type: integer
enum:
- -1
- 0
- 1
- 2
- 3
- 4
location:
type: string
uuid:
description: The uuid of this lineup
type: string
LogMessageRequest:
type: object
example:
level: DEBUG
message: string value
source: string value
properties:
level:
description: Log level (DEBUG, INFO, WARN, ERROR)
type: string
enum:
- DEBUG
- INFO
- WARN
- ERROR
example: INFO
message:
description: The log message content
type: string
example: Server started successfully
source:
description: Source of the log message
type: string
example: PlexMediaServer
ManagedHub:
type: object
example:
title: string value
homeVisibility: all
identifier: string value
promotedToOwnHome: true
promotedToRecommended: true
promotedToSharedHome: true
recommendationsVisibility: all
properties:
title:
description: The title of this hub
type: string
homeVisibility:
description: |-
Whether this hub is visible on the home screen
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
type: string
enum:
- all
- none
- admin
- shared
identifier:
description: The identifier for this hub
type: string
promotedToOwnHome:
description: Whether this hub is visible to admin user home
type: boolean
promotedToRecommended:
description: Whether this hub is promoted to all for recommendations
type: boolean
promotedToSharedHome:
description: Whether this hub is visible to shared user's home
type: boolean
recommendationsVisibility:
description: |-
The visibility of this hub in recommendations:
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
type: string
enum:
- all
- none
- admin
- shared
Marker:
type: object
example:
title: string value
type: intro
color: string value
endTimeOffset: 1
id: 1
startTimeOffset: 1
additionalProperties: true
properties:
title:
type: string
type:
type: string
enum:
- intro
- commercial
- bookmark
- resume
- credit
color:
type: string
endTimeOffset:
type: integer
id:
type: integer
startTimeOffset:
type: integer
Media:
description: "`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element."
type: object
example:
aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
additionalProperties: true
properties:
aspectRatio:
type: number
format: float
example: 2.35
audioChannels:
type: integer
format: int32
example: 2
audioCodec:
type: string
example: aac
audioProfile:
type: string
example: lc
bitrate:
type: integer
format: int32
example: 5612
container:
type: string
example: mov
duration:
type: integer
format: int32
example: 150192
has64bitOffsets:
type: boolean
example: false
hasVoiceActivity:
description: |-
Voice activity detection availability flag returned by PMS.
PMS may return this as a boolean or as string values (`"0"` or `"1"`).
example: '0'
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
height:
type: integer
format: int32
example: 544
id:
type: integer
format: int64
example: 1
optimizedForStreaming:
type: integer
format: int32
enum:
- 0
- 1
Part:
type: array
items:
$ref: "#/components/schemas/Part"
selected:
description: Whether this media version is selected for playback.
type: boolean
example: true
uuid:
description: Unique identifier for this media instance.
type: string
example: 5d776d057ae4e7001f65e7d0
videoCodec:
type: string
example: h264
videoFrameRate:
type: string
example: 24p
videoProfile:
type: string
example: main
videoResolution:
type: string
example: '720'
width:
type: integer
format: int32
example: 1280
required:
- id
MediaContainer:
description: |-
`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
type: object
example:
identifier: com.plexapp.plugins.library
offset: 0
size: 1
totalSize: 100
properties:
identifier:
type: string
offset:
description: The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
type: integer
size:
type: integer
totalSize:
description: The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
type: integer
MediaContainerWithArtwork:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
artwork: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
type: array
items:
type: object
additionalProperties: true
properties:
title:
description: The title of the item
type: string
type:
type: string
enum:
- image
key:
description: The path to the artwork
type: string
MediaContainerWithDecision:
description: |-
`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`).
It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well.
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Decision: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
availableBandwidth:
description: The maximum available bitrate when the decision was rendered.
type: integer
directPlayDecisionCode:
type: integer
directPlayDecisionText:
type: string
generalDecisionCode:
description: The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all.
type: integer
generalDecisionText:
type: string
mdeDecisionCode:
description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1`
type: integer
mdeDecisionText:
description: Descriptive text for the above code
type: string
Metadata:
type: array
items:
allOf:
- $ref: "#/components/schemas/Metadata"
- type: object
properties:
Media:
type: array
items:
allOf:
- $ref: "#/components/schemas/Media"
- type: object
properties:
abr:
type: boolean
Part:
type: array
items:
allOf:
- $ref: "#/components/schemas/Part"
- type: object
properties:
decision:
type: string
enum:
- directplay
- transcode
- none
selected:
type: boolean
Stream:
type: array
items:
allOf:
- $ref: "#/components/schemas/Stream"
- type: object
properties:
decision:
type: string
enum:
- copy
- transcode
- burn
- unavailable
- ignore
- none
location:
type: string
enum:
- direct
- sidecar-subs
- segments-video
- segments-audio
- segments-av
- segments-subs
- embedded
- sidecar
resourceSession:
type: string
selected:
type: boolean
transcodeDecisionCode:
type: integer
transcodeDecisionText:
type: string
MediaContainerWithDevice:
type: object
example:
MediaContainer:
identifier: com.plexapp.system.devices
size: 1
Device: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Device:
type: array
items:
$ref: "#/components/schemas/Device"
MediaContainerWithDirectory:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Directory: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
$ref: "#/components/schemas/Directory"
MediaContainerWithHubs:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Hub: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Hub:
type: array
items:
$ref: "#/components/schemas/Hub"
MediaContainerWithLineup:
type: object
example:
MediaContainer:
identifier: tv.plex.provider.epg
size: 1
Lineup: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Lineup:
type: array
items:
$ref: "#/components/schemas/Lineup"
uuid:
description: The UUID of this set lineups
type: string
MediaContainerWithMediaGrabOperation:
type: object
example:
MediaContainer:
identifier: com.plexapp.system
size: 1
MediaGrabOperation: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
MediaGrabOperation:
type: array
items:
$ref: "#/components/schemas/MediaGrabOperation"
MediaContainerWithMetadata:
description: A MediaContainer that includes metadata items. When `includeCollections=1` is passed to endpoints such as `/library/sections/{sectionId}/all`, this container may also include `Collection` items.
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Metadata: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
type: array
items:
$ref: "#/components/schemas/Metadata"
MediaContainerWithNestedMetadata:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Metadata: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
MetadataItem:
type: array
items:
type: object
allOf:
- $ref: "#/components/schemas/Metadata"
- type: object
properties:
MetadataItem:
type: array
items:
$ref: "#/components/schemas/Items"
description: Nested metadata items
type: object
MediaContainerWithPlaylistMetadata:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Metadata: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Metadata:
type: array
items:
allOf:
- type: object
properties:
readOnly:
description: If we return this as true then this playlist cannot be altered or deleted directly by the client.
type: boolean
composite:
description: A composite image for the playlist.
type: string
duration:
description: The total duration of the playlist in ms
type: integer
durationInSeconds:
description: Total duration in seconds (redundant but present in XML).
type: integer
example: 7200
key:
description: Leads to a list of items in the playlist.
type: string
leafCount:
description: The number of items in the playlist.
type: integer
playlistType:
description: The type of the playlist.
type: string
enum:
- audio
- video
- photo
radio:
description: Whether this is a generated radio playlist.
type: boolean
example: false
smart:
description: Whether or not the playlist is smart.
type: boolean
specialPlaylistType:
description: If this is a special playlist, this returns its type (e.g. favorites).
type: string
- $ref: "#/components/schemas/Metadata"
MediaContainerWithPlayQueue:
description: A media container representing a play queue.
example:
playQueueID: 1
playQueueSelectedItemID: 1
playQueueSelectedItemOffset: 0
playQueueTotalCount: 10
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
playQueueID:
type: integer
example: 42
playQueueLastAddedItemID:
type: integer
example: 123
playQueueSelectedItemID:
type: integer
example: 1
playQueueSelectedItemOffset:
type: integer
example: 0
playQueueSelectedMetadataItemID:
type: integer
example: 456
playQueueShuffled:
type: boolean
example: false
playQueueSourceURI:
type: string
example: library://abc123/item/%2Flibrary%2Fmetadata%2F1
playQueueTotalCount:
type: integer
example: 50
playQueueVersion:
type: integer
example: 3
MediaContainerWithSettings:
type: object
example:
MediaContainer:
identifier: com.plexapp.system.settings
size: 1
Setting: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Setting:
type: array
items:
$ref: "#/components/schemas/Setting"
MediaContainerWithSorts:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Sort: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
$ref: "#/components/schemas/Sort"
MediaContainerWithStatus:
type: object
example:
MediaContainer:
identifier: com.plexapp.system
size: 1
Status: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
status:
description: A status indicator. If present and non-zero, indicates an error
type: integer
MediaContainerWithSubscription:
type: object
example:
MediaContainer:
identifier: com.plexapp.system
size: 1
MediaSubscription: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
MediaSubscription:
type: array
items:
$ref: "#/components/schemas/MediaSubscription"
MediaContainerWithTags:
type: object
example:
MediaContainer:
identifier: com.plexapp.plugins.library
size: 1
Tag: []
properties:
MediaContainer:
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
Directory:
type: array
items:
$ref: "#/components/schemas/Tag"
MediaGrabber:
type: object
example:
title: string value
identifier: string value
protocol: string value
properties:
title:
type: string
identifier:
type: string
protocol:
type: string
MediaGrabOperation:
description: A media grab operation represents a scheduled or active recording of media
type: object
example:
currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
properties:
currentSize:
type: integer
grabberIdentifier:
type: string
grabberProtocol:
type: string
id:
type: string
key:
type: string
mediaIndex:
type: integer
mediaSubscriptionID:
type: integer
Metadata:
$ref: "#/components/schemas/Metadata"
percent:
type: number
provider:
type: string
status:
type: string
enum:
- inactive
- scheduled
- inprogress
- complete
- cancelled
- error
- postprocessing
- paused
MediaQuery:
description: |-
A querystring-based filtering language used to select subsets of media. When provided as an object, properties are serialized as a querystring using form style with explode.
Only the defined properties below are allowed. The object serializes to a querystring format like: `type=4&sourceType=2&sort=duration:desc,index`
type: object
example:
type: 4
sourceType: 2
sort: duration:desc,index
additionalProperties: false
properties:
type:
$ref: "#/components/schemas/MediaType"
description: The type of media to retrieve or filter by.
group:
description: Field to group results by (similar to SQL GROUP BY)
type: string
limit:
description: Maximum number of results to return
type: integer
sort:
description: Field(s) to sort by, with optional modifiers. Use comma to separate multiple fields, and :desc or :nullsLast for modifiers (e.g., "duration:desc,index")
type: string
sourceType:
description: Change the default level to which fields refer (used with type for hierarchical queries)
type: integer
MediaSubscription:
description: A media subscription contains a representation of metadata desired to be recorded
type: object
example:
title: string value
type: 1
airingsType: New Airings Only
createdAt: 1
Directory: {}
durationTotal: 1
key: string value
librarySectionTitle: string value
locationPath: string value
MediaGrabOperation:
- currentSize: 1
grabberIdentifier: string value
grabberProtocol: string value
id: string value
key: string value
mediaIndex: 1
mediaSubscriptionID: 1
Metadata:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
percent: 1
provider: string value
status: inactive
Playlist: {}
Setting:
- type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
storageTotal: 1
targetLibrarySectionID: 1
targetSectionLocationID: 1
Video: {}
properties:
title:
type: string
type:
description: The metadata type of the root item of the subscription
type: integer
airingsType:
type: string
enum:
- New Airings Only
- New and Repeat Airings
createdAt:
type: integer
Directory:
description: Media Matching Hints
type: object
additionalProperties: true
durationTotal:
description: Only included if `includeStorage` is specified
type: integer
key:
type: string
librarySectionTitle:
type: string
locationPath:
type: string
MediaGrabOperation:
type: array
items:
$ref: "#/components/schemas/MediaGrabOperation"
Playlist:
description: Media Matching Hints
type: object
additionalProperties: true
Setting:
type: array
items:
$ref: "#/components/schemas/Setting"
storageTotal:
description: Only included if `includeStorage` is specified
type: integer
targetLibrarySectionID:
description: The library section id for where the item is to be recorded
type: integer
targetSectionLocationID:
description: The library section location id for where the item is to be recorded
type: integer
Video:
description: Media Matching Hints
type: object
additionalProperties: true
MediaType:
description: |-
The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
5 = artist
6 = album
7 = track
8 = photo_album
9 = photo
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
type: integer
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
example: 2
x-speakeasy-enums:
- MOVIE
- TV_SHOW
- SEASON
- EPISODE
- ARTIST
- ALBUM
- TRACK
- PHOTO_ALBUM
- PHOTO
MediaTypeString:
description: The type of media content in the Plex library. This can represent videos, music, or photos.
type: string
enum:
- movie
- show
- season
- episode
- artist
- album
- track
- photoalbum
- photo
- collection
example: movie
x-speakeasy-enums:
- MOVIE
- TV_SHOW
- SEASON
- EPISODE
- ARTIST
- ALBUM
- TRACK
- PHOTO_ALBUM
- PHOTO
- COLLECTION
Metadata:
description: |-
Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
type: object
example:
title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
additionalProperties: true
properties:
title:
description: The title of the item (e.g. “300” or “The Simpsons”)
type: string
type:
description: The type of the video item, such as `movie`, `episode`, or `clip`.
type: string
absoluteIndex:
description: When present, contains the disc number for a track on multi-disc albums.
type: integer
format: int32
addedAt:
description: In units of seconds since the epoch, returns the time at which the item was added to the library.
type: integer
format: int64
art:
description: When present, the URL for the background artwork for the item.
type: string
example: /library/metadata/58683/art/1703239236
artBlurHash:
description: Blur hash for background art.
type: string
example: LhE3*HRjR*a#ogWBofj[bbf6ofa#
audienceRating:
description: Some rating systems separate reviewer ratings from audience ratings
type: number
format: float
minimum: 0
maximum: 10
audienceRatingImage:
description: A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
type: string
Autotag:
type: array
items:
$ref: "#/components/schemas/Tag"
banner:
description: When present, the URL for a banner graphic for the item.
type: string
chapterSource:
description: When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
type: string
example: media
childCount:
description: The number of child items associated with this media item.
type: integer
format: int32
example: 1
composite:
description: When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
type: string
contentRating:
description: If known, the content rating (e.g. MPAA) for an item.
type: string
Country:
type: array
items:
$ref: "#/components/schemas/Tag"
Director:
type: array
items:
$ref: "#/components/schemas/Tag"
distance:
description: Levenshtein distance for voice search results.
type: integer
example: 2
duration:
description: When present, the duration for the item, in units of milliseconds.
type: integer
format: int32
editionTitle:
description: Edition string (e.g. "Director's Cut").
type: string
example: Director's Cut
enableCreditsMarkerGeneration:
description: Whether credits marker generation is enabled for this item.
type: boolean
example: true
Filter:
description: Typically only seen in metadata at a library's top level
type: array
items:
$ref: "#/components/schemas/Filter"
Genre:
type: array
items:
$ref: "#/components/schemas/Tag"
grandparentArt:
description: The `art` of the grandparent
type: string
grandparentGuid:
description: The GUID of the grandparent media item.
type: string
example: plex://show/5d9c081b170e24001f2a7be4
grandparentHero:
description: The `hero` of the grandparent
type: string
grandparentKey:
description: The `key` of the grandparent
type: string
grandparentRatingKey:
description: The `ratingKey` of the grandparent
type: string
grandparentTheme:
description: The `theme` of the grandparent
type: string
grandparentThumb:
description: The `thumb` of the grandparent
type: string
grandparentTitle:
description: The `title` of the grandparent
type: string
guid:
description: The globally unique identifier for the media item.
type: string
example: plex://movie/5d7768ba96b655001fdc0408
Guid:
type: array
items:
type: object
properties:
id:
description: The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
type: string
example:
imdbExample:
summary: IMDB example
value: imdb://tt13015952
tmdbExample:
summary: TMDB example
value: tmdb://2434012
tvdbExample:
summary: TVDB example
value: tvdb://7945991
pattern: ^(imdb|tmdb|tvdb)://.+$
required:
- id
x-speakeasy-name-override: guids
hero:
description: When present, the URL for a hero image for the item.
type: string
Image:
type: array
items:
$ref: "#/components/schemas/Image"
index:
description: When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
type: integer
format: int32
key:
description: The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
type: string
languageOverride:
description: Per-item language override.
type: string
example: en
lastRatedAt:
description: Timestamp of the last user rating.
type: integer
example: 1704067200
lastViewedAt:
allOf:
- $ref: "#/components/schemas/PlexDateTime"
- description: When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
leafCount:
description: For shows and seasons, contains the number of total episodes.
type: integer
format: int32
Media:
type: array
items:
$ref: "#/components/schemas/Media"
musicAnalysisVersion:
description: Analysis version for music items.
type: integer
example: 1
originallyAvailableAt:
description: When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
type: string
format: date
example: "2022-12-14T00:00:00.000Z"
originalTitle:
description: When present, used to indicate an item's original title, e.g. a movie's foreign title.
type: string
parentGuid:
description: The GUID of the parent media item.
type: string
example: plex://show/5d9c081b170e24001f2a7be4
parentHero:
description: The `hero` of the parent
type: string
parentIndex:
description: The `index` of the parent
type: integer
format: int32
parentKey:
description: The `key` of the parent
type: string
parentRatingKey:
description: The `ratingKey` of the parent
type: string
parentThumb:
description: The `thumb` of the parent
type: string
parentTitle:
description: The `title` of the parent
type: string
playlistItemID:
description: Item ID within a playlist.
type: integer
example: 42
primaryExtraKey:
description: Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
type: string
prompt:
description: Prompt to give the user for this directory (such as `Search Movies`)
type: string
rating:
description: When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
type: number
format: float
minimum: 0
maximum: 10
Rating:
type: array
items:
$ref: "#/components/schemas/Tag"
x-speakeasy-name-override: RatingArray
ratingCount:
description: Number of ratings under this metadata
type: integer
format: int32
ratingImage:
description: When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
type: string
ratingKey:
description: This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
type: string
Role:
type: array
items:
$ref: "#/components/schemas/Tag"
search:
description: Indicates this is a search directory
type: boolean
secondary:
description: Used by old clients to provide nested menus allowing for primative (but structured) navigation.
type: boolean
skipChildren:
description: When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
skipCount:
description: Number of times this track has been skipped.
type: integer
example: 3
skipParent:
description: When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
slug:
description: URL-friendly slug for the item.
type: string
example: the-matrix
Sort:
description: Typically only seen in metadata at a library's top level
type: array
items:
$ref: "#/components/schemas/Sort"
sourceURI:
description: Remote or shared server item URI.
type: string
example: provider://tv.plex.provider.vod/library/metadata/5d776d057ae4e7001f65e7d0
studio:
description: When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
type: string
subtype:
description: The subtype of the video item, such as `photo` when the video item is in a photo library
type: string
summary:
description: When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
type: string
tagline:
description: When present, a pithy one-liner about the item (usually only seen for movies).
type: string
theme:
description: When present, the URL for theme music for the item (usually only for TV shows).
type: string
example: /library/metadata/1/theme/1705636920
thumb:
description: When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
type: string
example: /library/metadata/58683/thumb/1703239236
thumbBlurHash:
description: Blur hash for thumbnail.
type: string
example: LhE3*HRjR*a#ogWBofj[bbf6ofa#
titleSort:
description: Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).
type: string
updatedAt:
description: In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
type: integer
useOriginalTitle:
description: Whether to display the original title.
type: boolean
example: false
userRating:
description: When the user has rated an item, this contains the user rating
type: number
format: float
minimum: 0
maximum: 10
viewCount:
description: When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
type: integer
format: int32
viewedLeafCount:
description: For shows and seasons, contains the number of viewed episodes.
type: integer
format: int32
viewOffset:
description: When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
type: integer
format: int32
Writer:
type: array
items:
$ref: "#/components/schemas/Tag"
year:
description: When present, the year associated with the item's release (e.g. release year for a movie).
type: integer
format: int32
required:
- addedAt
- key
- title
- type
x-speakeasy-unknown-fields: true
NotificationContainer:
type: object
example:
type: string value
PlaySessionStateNotification:
- controllable: string value
guid: string value
key: string value
playQueueID: 1
playQueueItemID: 1
ratingKey: string value
sessionKey: string value
state: playing
transcodeSession: string value
url: string value
viewOffset: 1
ReachabilityNotification:
- status: string value
size: 1
StatusNotification:
- title: string value
description: string value
type: string value
TimelineEntry:
- title: string value
type: 1
itemID: 1
metadataState: string value
playQueueItemID: 1
state: 1
properties:
type:
description: The notification type
type: string
PlaySessionStateNotification:
type: array
items:
$ref: "#/components/schemas/PlaySessionStateNotification"
ReachabilityNotification:
type: array
items:
$ref: "#/components/schemas/ReachabilityNotification"
size:
description: Number of notifications
type: integer
StatusNotification:
type: array
items:
$ref: "#/components/schemas/StatusNotification"
TimelineEntry:
type: array
items:
$ref: "#/components/schemas/TimelineEntry"
Part:
description: '`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.'
type: object
example:
accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
additionalProperties: true
properties:
accessible:
description: Indicates if the part is accessible.
type: boolean
example: true
audioProfile:
type: string
example: lc
container:
description: The container of the media file, such as `mp4` or `mkv`
type: string
example: mov
deepAnalysisVersion:
description: Deep analysis version for this part.
type: integer
example: 2
duration:
description: The duration of the media item, in milliseconds
type: integer
format: int32
example: 150192
exists:
description: Indicates if the part exists.
type: boolean
example: true
file:
description: The local file path at which the part is stored on the server
type: string
example: /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov
has64bitOffsets:
type: boolean
example: false
id:
type: integer
format: int64
example: 1
indexes:
type: string
example: sd
key:
description: The key from which the media can be streamed
type: string
example: /library/parts/1/1531779263/file.mov
optimizedForStreaming:
type: boolean
example: false
packetLength:
description: RTP packet length for streaming.
type: integer
example: 188
protocol:
description: Streaming protocol (e.g. dash, hls, direct).
type: string
example: dash
requiredBandwidths:
description: Comma-separated list of bandwidth requirements.
type: string
example: 10000,15000,20000
size:
description: The size of the media, in bytes
type: integer
format: int64
example: 105355654
Stream:
type: array
items:
$ref: "#/components/schemas/Stream"
syncItemId:
description: Mobile sync item association ID.
type: integer
example: 12345
syncState:
description: Sync state (e.g. pending, downloaded, processing).
type: string
example: pending
videoProfile:
type: string
example: main
required:
- id
- key
PlaybackHistoryMetadata:
type: object
example:
title: string value
type: string value
accountID: 1
deviceID: 1
grandparentRatingKey: string value
grandparentTitle: string value
historyKey: string value
index: 1
key: string value
librarySectionID: string value
originallyAvailableAt: string value
parentIndex: 1
parentTitle: string value
ratingKey: string value
thumb: string value
viewedAt: 1
properties:
title:
description: The title of the item played
type: string
type:
description: The metadata type of the item played
type: string
accountID:
description: The account id of this playback
type: integer
deviceID:
description: The device id which played the item
type: integer
grandparentRatingKey:
description: The rating key of the grandparent item
type: string
grandparentTitle:
description: The title of the grandparent item (e.g. show name for an episode)
type: string
historyKey:
description: The key for this individual history item
type: string
index:
description: The index of the item (e.g. episode number)
type: integer
key:
description: The metadata key for the item played
type: string
librarySectionID:
description: The library section id containing the item played
type: string
originallyAvailableAt:
description: The originally available at of the item played
type: string
parentIndex:
description: The index of the parent item (e.g. season number)
type: integer
parentTitle:
description: The title of the parent item (e.g. season name for an episode)
type: string
ratingKey:
description: The rating key for the item played
type: string
thumb:
description: The thumb of the item played
type: string
viewedAt:
description: The time when the item was played
type: integer
Player:
description: Information about the player being used for playback
type: object
example:
title: string value
address: string value
local: true
machineIdentifier: string value
model: string value
platform: string value
platformVersion: string value
product: string value
relayed: true
remotePublicAddress: string value
secure: true
state: string value
userID: 1
vendor: string value
version: string value
properties:
title:
description: The title of the client
type: string
address:
description: The remote address
type: string
local:
description: Indicating if the client is playing from the local LAN
type: boolean
machineIdentifier:
description: The identifier of the client
type: string
model:
description: The model of the client
type: string
platform:
description: The platform of the client
type: string
platformVersion:
description: The platformVersion of the client
type: string
product:
description: The product name of the client
type: string
relayed:
description: Indicating if the client is playing over a relay connection
type: boolean
remotePublicAddress:
description: The client's public address
type: string
secure:
description: Indicating if the client is playing over HTTPS
type: boolean
state:
description: The client's last reported state
type: string
userID:
description: The id of the user
type: integer
vendor:
description: The vendor of the client
type: string
version:
description: The version of the client
type: string
PlayQueueResponse:
type: object
example:
playQueueID: 1
playQueueLastAddedItemID: string value
playQueueSelectedItemID: 1
playQueueSelectedItemOffset: 1
playQueueSelectedMetadataItemID: 1
playQueueShuffled: true
playQueueSourceURI: string value
playQueueTotalCount: 1
playQueueVersion: 1
properties:
playQueueID:
description: The ID of the play queue, which is used in subsequent requests.
type: integer
playQueueLastAddedItemID:
description: Defines where the "Up Next" region starts
type: string
playQueueSelectedItemID:
description: The queue item ID of the currently selected item.
type: integer
playQueueSelectedItemOffset:
description: The offset of the selected item in the play queue, from the beginning of the queue.
type: integer
playQueueSelectedMetadataItemID:
description: The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library).
type: integer
playQueueShuffled:
description: Whether or not the queue is shuffled.
type: boolean
playQueueSourceURI:
description: The original URI used to create the play queue.
type: string
playQueueTotalCount:
description: The total number of items in the play queue.
type: integer
playQueueVersion:
description: The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh.
type: integer
PlaySessionStateNotification:
description: Real-time playback state change notification
type: object
example:
controllable: string value
guid: string value
key: string value
playQueueID: 1
playQueueItemID: 1
ratingKey: string value
sessionKey: string value
state: playing
transcodeSession: string value
url: string value
viewOffset: 1
properties:
controllable:
type: string
guid:
type: string
key:
type: string
playQueueID:
type: integer
playQueueItemID:
type: integer
ratingKey:
type: string
sessionKey:
type: string
state:
type: string
enum:
- playing
- paused
- stopped
transcodeSession:
type: string
url:
type: string
viewOffset:
type: integer
PlexDateTime:
description: Unix epoch datetime in seconds
type: integer
format: int64
example: 1556281940
PlexDateTimeISO:
type: string
format: date-time
example: "2019-06-24T11:38:02Z"
PlexDevice:
title: PlexDevice
type: object
example:
accessToken: string value
clientIdentifier: string value
connections:
- address: string value
IPv6: true
local: true
port: 1
protocol: http
relay: true
uri: string value
dnsRebindingProtection: true
home: true
httpsRequired: true
name: string value
natLoopbackSupported: true
owned: true
presence: true
product: string value
productVersion: string value
provides: string value
publicAddress: string value
publicAddressMatches: true
relay: true
synced: true
properties:
accessToken:
type: string
clientIdentifier:
type: string
connections:
type: array
items:
type: object
properties:
address:
description: The (ip) address or domain name used for the connection
type: string
IPv6:
description: If the connection is using IPv6
type: boolean
local:
description: If the connection is local address
type: boolean
port:
description: The port used for the connection
type: integer
format: int32
protocol:
description: The protocol used for the connection (http, https, etc)
type: string
enum:
- http
- https
example: http
relay:
description: If the connection is relayed through plex.direct
type: boolean
uri:
description: The full URI of the connection
type: string
required:
- protocol
- address
- port
- uri
- local
- relay
- IPv6
createdAt:
allOf:
- $ref: "#/components/schemas/PlexDateTimeISO"
- description: The time the device was created/registered
device:
type:
- 'null'
- string
dnsRebindingProtection:
type: boolean
home:
type: boolean
httpsRequired:
type: boolean
lastSeenAt:
allOf:
- $ref: "#/components/schemas/PlexDateTimeISO"
- description: The last time the device was seen
name:
type: string
natLoopbackSupported:
type: boolean
owned:
type: boolean
ownerId:
description: ownerId is null when the device is owned by the token used to send the request
type:
- 'null'
- integer
platform:
type:
- 'null'
- string
platformVersion:
type:
- 'null'
- string
presence:
type: boolean
product:
type: string
productVersion:
type: string
provides:
type: string
publicAddress:
type: string
publicAddressMatches:
type: boolean
relay:
type: boolean
sourceTitle:
type:
- 'null'
- string
synced:
type: boolean
required:
- name
- product
- productVersion
- clientIdentifier
- createdAt
- lastSeenAt
- provides
- ownerId
- sourceTitle
- publicAddress
- accessToken
- owned
- home
- synced
- relay
- presence
- httpsRequired
- publicAddressMatches
- dnsRebindingProtection
- natLoopbackSupported
- connections
PlexDownloadsResponse:
type: object
example:
MediaContainer:
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
size: 1
properties:
MediaContainer:
type: object
properties:
Directory:
type: array
items:
$ref: "#/components/schemas/Directory"
size:
type: integer
ProgressResponse:
type: object
example:
MediaContainer:
size: 1
Video:
- title: string value
type: string value
absoluteIndex: 1
addedAt: 1
art: string value
artBlurHash: string value
audienceRating: 1
audienceRatingImage: string value
Autotag:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
banner: string value
chapterSource: string value
childCount: 1
composite: string value
contentRating: string value
Country:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
Director:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
distance: 1
duration: 1
editionTitle: string value
enableCreditsMarkerGeneration: true
Filter:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
filterType: string value
Genre:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
grandparentArt: string value
grandparentGuid: string value
grandparentHero: string value
grandparentKey: string value
grandparentRatingKey: string value
grandparentTheme: string value
grandparentThumb: string value
grandparentTitle: string value
guid: string value
Guid:
- id: string value
hero: string value
Image:
- type: background
alt: string value
url: string value
index: 1
key: string value
languageOverride: string value
lastRatedAt: 1
leafCount: 1
Media:
- aspectRatio: 1
audioChannels: 1
audioCodec: string value
audioProfile: string value
bitrate: 1
container: string value
duration: 1
has64bitOffsets: true
hasVoiceActivity: true
height: 1
id: 1
optimizedForStreaming: 1
Part:
- accessible: true
audioProfile: string value
container: string value
deepAnalysisVersion: 1
duration: 1
exists: true
file: string value
has64bitOffsets: true
id: 1
indexes: string value
key: string value
optimizedForStreaming: true
packetLength: 1
protocol: string value
requiredBandwidths: string value
size: 1
Stream:
- title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
syncItemId: 1
syncState: string value
videoProfile: string value
selected: true
uuid: string value
videoCodec: string value
videoFrameRate: string value
videoProfile: string value
videoResolution: string value
width: 1
musicAnalysisVersion: 1
originallyAvailableAt: string value
originalTitle: string value
parentGuid: string value
parentHero: string value
parentIndex: 1
parentKey: string value
parentRatingKey: string value
parentThumb: string value
parentTitle: string value
playlistItemID: 1
primaryExtraKey: string value
prompt: string value
rating: 1
Rating:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
ratingCount: 1
ratingImage: string value
ratingKey: string value
Role:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
search: true
secondary: true
skipChildren: true
skipCount: 1
skipParent: true
slug: string value
Sort:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
default: asc
defaultDirection: asc
descKey: string value
firstCharacterKey: string value
sourceURI: string value
studio: string value
subtype: string value
summary: string value
tagline: string value
theme: string value
thumb: string value
thumbBlurHash: string value
titleSort: string value
updatedAt: 1
useOriginalTitle: true
userRating: 1
viewCount: 1
viewedLeafCount: 1
viewOffset: 1
Writer:
- confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
year: 1
properties:
MediaContainer:
type: object
properties:
size:
type: integer
Video:
type: array
items:
$ref: "#/components/schemas/Metadata"
Provider:
description: A media provider registered with the PMS.
type: object
example:
title: string value
identifier: string value
Protocol: string value
types: string value
properties:
title:
description: Human-readable provider title.
type: string
example: Plex VOD
identifier:
description: Unique provider identifier.
type: string
example: tv.plex.provider.vod
Protocol:
description: Protocol version used by the provider.
type: string
example: '1.0'
types:
description: Content types provided.
type: string
example: movie,show
ProviderFeature:
description: A feature supported by a media provider.
type: object
example:
title: string value
type: string value
key: search
properties:
title:
description: Human-readable feature title.
type: string
example: Search
type:
description: Feature type.
type: string
example: content
key:
description: Feature key identifier.
type: string
enum:
- search
- metadata
- content
- match
- manage
- timeline
- rate
- playqueue
- playlist
- subscribe
- promoted
- continuewatching
- collection
- actions
- imagetranscoder
- queryParser
- grid
example: search
ReachabilityNotification:
description: Server reachability status change notification
type: object
example:
status: string value
properties:
status:
type: string
Release:
type: object
example:
added: string value
downloadURL: string value
fixed: string value
key: string value
state: available
version: string value
properties:
added:
description: A list of what has been added in this version
type: string
downloadURL:
description: The URL of where this update is available
type: string
fixed:
description: A list of what has been fixed in this version
type: string
key:
description: The URL key of the update
type: string
state:
description: |-
The status of this update.
- available - This release is available
- downloading - This release is downloading
- downloaded - This release has been downloaded
- installing - This release is installing
- tonight - This release will be installed tonight
- skipped - This release has been skipped
- error - This release has an error
- notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
- done - This release is complete
type: string
enum:
- available
- downloading
- downloaded
- installing
- tonight
- skipped
- error
- notify
- done
version:
description: The version available
type: string
ServerAccessTokensResponse:
type: object
example:
accessTokens:
- expiresAt: string value
scope: string value
token: string value
properties:
accessTokens:
type: array
items:
type: object
properties:
expiresAt:
type: string
scope:
type: string
token:
type: string
ServerConfiguration:
example:
friendlyName: My Plex Server
machineIdentifier: abc123
allOf:
- $ref: "#/components/schemas/MediaContainer"
- type: object
properties:
allowCameraUpload:
type: boolean
allowChannelAccess:
type: boolean
allowMediaDeletion:
type: boolean
allowSharing:
type: boolean
allowSync:
type: boolean
allowTuners:
type: boolean
backgroundProcessing:
type: boolean
certificate:
type: boolean
companionProxy:
type: boolean
countryCode:
type: string
diagnostics:
description: Comma-separated list of enabled diagnostics modules.
type: array
items:
type: string
eventStream:
type: boolean
friendlyName:
type: string
hubSearch:
type: boolean
itemClusters:
type: boolean
livetv:
type: integer
example: 7
machineIdentifier:
example: 0123456789abcdef0123456789abcdef012345678
mediaProviders:
type: boolean
multiuser:
type: boolean
musicAnalysis:
type: integer
example: 2
myPlex:
type: boolean
myPlexMappingState:
example: mapped
myPlexSigninState:
example: ok
myPlexSubscription:
type: boolean
myPlexUsername:
type: string
offlineTranscode:
description: Whether offline transcoding is enabled.
type: integer
format: int32
ownerFeatures:
description: List of enabled owner features.
type: array
items:
type: string
platform:
type: string
platformVersion:
type: string
pluginHost:
type: boolean
pushNotifications:
type: boolean
readOnlyLibraries:
type: boolean
streamingBrainABRVersion:
type: integer
streamingBrainVersion:
type: integer
sync:
type: boolean
transcoderActiveVideoSessions:
type: integer
transcoderAudio:
type: boolean
transcoderLyrics:
type: boolean
transcoderPhoto:
type: boolean
transcoderSubtitles:
type: boolean
transcoderVideo:
type: boolean
transcoderVideoBitrates:
description: List of supported transcoder video bitrates.
type: array
items:
type: string
transcoderVideoQualities:
description: List of supported transcoder video qualities.
type: array
items:
type: string
transcoderVideoResolutions:
description: List of supported transcoder video resolutions.
type: array
items:
type: string
updatedAt:
type: integer
updater:
type: boolean
version:
type: string
voiceSearch:
type: boolean
ServerUserFeaturesResponse:
type: object
example:
features:
- type: string value
Directory:
- title: string value
type: string value
art: string value
content: true
filter: string value
hasPrefs: true
hasStoreServices: true
hubKey: string value
identifier: string value
key: string value
lastAccessedAt: 1
Pivot:
- title: string value
type: string value
context: string value
id: string value
key: string value
symbol: string value
share: 1
thumb: string value
titleBar: string value
key: string value
properties:
features:
type: array
items:
$ref: "#/components/schemas/Feature"
Session:
description: Information about the playback session
type: object
example:
title: string value
bandwidth: 1
id: string value
location: lan
sessionKey: string value
userID: 1
uuid: string value
additionalProperties: true
properties:
title:
description: Title of the media being played.
type: string
example: The Matrix
bandwidth:
description: The bandwidth used by this client's playback in kbps
type: integer
id:
description: The id of the playback session
type: string
location:
description: The location of the client
type: string
enum:
- lan
- wan
sessionKey:
description: Unique session key for this playback session.
type: string
example: abc123
userID:
description: ID of the user owning this session.
type: integer
example: 12345
uuid:
description: UUID of the playback session.
type: string
example: 5d776d057ae4e7001f65e7d0
x-speakeasy-unknown-fields: true
Setting:
description: A configuration setting or preference
type: object
example:
type: bool
default: string value
advanced: true
enumValues: string value
group: string value
hidden: true
id: string value
label: string value
summary: string value
value: string value
properties:
type:
description: The type of the value of this setting
type: string
enum:
- bool
- int
- text
- double
default:
description: The default value of this setting
oneOf:
- type: string
- type: number
- type: boolean
advanced:
description: Whether the setting is considered advanced and normally hidden from the user
type: boolean
enumValues:
description: The possible values for this setting if restricted. The list is `|` separated with `value:name` entries.
type: string
group:
description: The group name of this setting to aid in display of a hierarchy
type: string
hidden:
description: Whether the setting is hidden or not
type: boolean
id:
description: The query parameter name for this setting
type: string
label:
description: A user-friendly name for the setting
type: string
summary:
description: A description of the setting
type: string
value:
description: The current value of this setting
oneOf:
- type: string
- type: number
- type: boolean
Sort:
example:
default: asc
defaultDirection: asc
descKey: titleSort:desc
key: titleSort
allOf:
- $ref: "#/components/schemas/Directory"
- description: Each `Sort` object contains a description of the sort field.
type: object
properties:
title:
description: The title of the field.
type: string
default:
description: If present, this sort is the default and in this direction
type: string
enum:
- asc
- desc
defaultDirection:
description: This default diction of this sort
type: string
enum:
- asc
- desc
descKey:
description: The key for sorting this field in reverse order
type: string
firstCharacterKey:
description: The key to use to get items sorted by this field and indexed by the first character
type: string
key:
description: The key to use in the sort field to make items sort by this item
type: string
StatusNotification:
description: Server status notification (e.g. library scan complete)
type: object
example:
title: string value
description: string value
type: string value
properties:
title:
type: string
description:
type: string
type:
type: string
Stream:
description: '`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).'
type: object
example:
title: string value
format: string value
default: true
albumGain: 1
albumPeak: 1
albumRange: 1
audioChannelLayout: string value
bitDepth: 1
bitrate: 1
bitrateMode: cbr
canAutoSync: true
channels: 1
chromaLocation: string value
chromaSubsampling: string value
closedCaptions: true
codec: string value
codedHeight: 1
codedWidth: 1
colorPrimaries: string value
colorRange: string value
colorSpace: string value
colorTrc: string value
displayTitle: string value
DOVIBLCompatID: 1
DOVIBLPresent: true
DOVIELPresent: true
DOVILevel: 1
DOVIPresent: true
DOVIProfile: 1
DOVIRPUPresent: true
DOVIVersion: string value
dub: true
embeddedInVideo: string value
endRamp: string value
extendedDisplayTitle: string value
forced: true
frameRate: 1
gain: 1
hasScalingMatrix: true
headerCompression: true
hearingImpaired: true
height: 1
id: 1
index: 1
key: string value
language: string value
languageCode: string value
languageTag: string value
level: 1
loudness: 1
lra: 1
minLines: 1
original: true
peak: 1
perfectMatch: true
profile: string value
provider: string value
providerTitle: string value
refFrames: 1
samplingRate: 1
scanType: string value
score: 1
selected: true
sourceKey: string value
startRamp: string value
streamIdentifier: 1
timed: true
transient: true
userID: 1
visualImpaired: true
width: 1
additionalProperties: true
properties:
title:
description: Optional title for the stream (e.g., language variant).
type: string
example: SDH
format:
description: Format of the stream (e.g., srt).
type: string
example: srt
default:
description: Indicates if this stream is default.
type: boolean
example: true
albumGain:
description: ReplayGain album gain in dB.
type: number
example: -8.5
albumPeak:
description: ReplayGain album peak amplitude.
type: number
example: 0.95
albumRange:
description: ReplayGain album dynamic range in dB.
type: number
example: 12.3
audioChannelLayout:
description: Audio channel layout.
type: string
example: 5.1(side)
bitDepth:
description: Bit depth of the video stream.
type: integer
format: int32
example: 10
bitrate:
description: Bitrate of the stream.
type: integer
format: int32
example: 24743
bitrateMode:
description: Audio bitrate mode (cbr or vbr).
type: string
enum:
- cbr
- vbr
example: vbr
canAutoSync:
description: Indicates if the stream can auto-sync.
type: boolean
example: false
oneOf:
- type: boolean
- type: string
enum:
- '0'
- '1'
channels:
description: Number of audio channels (for audio streams).
type: integer
format: int32
example: 6
chromaLocation:
description: Chroma sample location.
type: string
example: topleft
chromaSubsampling:
description: Chroma subsampling format.
type: string
example: 14520
closedCaptions:
type: boolean
example: true
codec:
description: Codec used by the stream.
type: string
example: hevc
codedHeight:
description: Coded video height.
type: integer
format: int32
example: 1608
codedWidth:
description: Coded video width.
type: integer
format: int32
example: 3840
colorPrimaries:
description: Color primaries used.
type: string
example: bt2020
colorRange:
description: Color range (e.g., tv).
type: string
example: tv
colorSpace:
description: Color space.
type: string
example: bt2020nc
colorTrc:
description: Color transfer characteristics.
type: string
example: smpte2084
displayTitle:
description: Display title for the stream.
type: string
example: 4K DoVi/HDR10 (HEVC Main 10)
DOVIBLCompatID:
description: Dolby Vision BL compatibility ID.
type: integer
format: int32
example: 1
DOVIBLPresent:
description: Indicates if Dolby Vision BL is present.
type: boolean
example: true
DOVIELPresent:
description: Indicates if Dolby Vision EL is present.
type: boolean
example: false
DOVILevel:
description: Dolby Vision level.
type: integer
format: int32
example: 6
DOVIPresent:
description: Indicates if Dolby Vision is present.
type: boolean
example: true
DOVIProfile:
description: Dolby Vision profile.
type: integer
format: int32
example: 8
DOVIRPUPresent:
description: Indicates if Dolby Vision RPU is present.
type: boolean
example: true
DOVIVersion:
description: Dolby Vision version.
type: string
example: '1.0'
dub:
description: Indicates if the stream is a dub.
type: boolean
example: true
embeddedInVideo:
type: string
example: progressive
endRamp:
description: Loudness ramp end type.
type: string
example: none
extendedDisplayTitle:
description: Extended display title for the stream.
type: string
example: 4K DoVi/HDR10 (HEVC Main 10)
forced:
type: boolean
example: true
frameRate:
description: Frame rate of the stream.
type: number
format: float
example: 23.976
gain:
description: Track replay gain in dB.
type: number
example: -6.2
hasScalingMatrix:
type: boolean
example: false
headerCompression:
description: Indicates whether header compression is enabled.
type: boolean
example: true
hearingImpaired:
description: Indicates if the stream is for the hearing impaired.
type: boolean
example: true
height:
description: Height of the video stream.
type: integer
format: int32
example: 1602
id:
description: Unique stream identifier.
type: integer
format: int32
example: 1002625
index:
description: Index of the stream.
type: integer
format: int32
example: 0
key:
description: Key to access this stream part.
type: string
example: /library/streams/216389
language:
description: Language of the stream.
type: string
example: English
languageCode:
description: ISO language code.
type: string
example: eng
languageTag:
description: Language tag (e.g., en).
type: string
example: en
level:
description: Video level.
type: integer
format: int32
example: 150
loudness:
description: Integrated loudness in LUFS.
type: number
example: -14
lra:
description: Loudness range in LU.
type: number
example: 8.5
minLines:
description: Minimum lines in the lyric file.
type: integer
example: 10
original:
description: Indicates if this is the original stream.
type: boolean
example: true
peak:
description: Track peak amplitude.
type: number
example: 0.98
perfectMatch:
description: Whether the subtitle is an exact match.
type: boolean
example: true
profile:
description: Video profile.
type: string
example: main 10
provider:
description: Lyric or subtitle provider name.
type: string
example: OpenSubtitles
providerTitle:
description: Subtitle provider display name.
type: string
example: OpenSubtitles.org
refFrames:
description: Number of reference frames.
type: integer
format: int32
example: 1
samplingRate:
description: Sampling rate for the audio stream.
type: integer
format: int32
example: 48000
scanType:
type: string
example: progressive
score:
description: Subtitle match confidence score (0-100).
type: number
example: 95.5
selected:
description: Indicates if this stream is selected (applicable for audio streams).
type: boolean
example: true
sourceKey:
description: Source identifier for the subtitle.
type: string
example: opensubtitles
startRamp:
description: Loudness ramp start type.
type: string
example: none
streamIdentifier:
type: integer
format: int32
example: 1
streamType:
allOf:
- type: integer
format: int32
enum:
- 1
- 2
- 3
example: 1
x-speakeasy-enums:
- VIDEO
- AUDIO
- SUBTITLE
- description: |-
Stream type:
- VIDEO = 1 (Video stream)
- AUDIO = 2 (Audio stream)
- SUBTITLE = 3 (Subtitle stream)
timed:
description: Whether lyrics are timestamped.
type: boolean
example: true
transient:
description: Whether the subtitle is temporary or downloaded.
type: boolean
example: false
userID:
description: ID of the user who added the subtitle.
type: integer
example: 12345
visualImpaired:
description: Whether this audio track is an audio description track.
type: boolean
example: false
width:
description: Width of the video stream.
type: integer
format: int32
example: 3840
required:
- id
- key
- codec
- displayTitle
- streamType
x-speakeasy-unknown-fields: true
SuccessResponse:
description: A simple success indicator for operations that return no meaningful data
type: object
example:
success: true
properties:
success:
type: boolean
example: true
Tag:
description: A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes.
type: object
example:
confidence: 1
context: string value
filter: string value
id: 1
ratingKey: string value
role: string value
tag: string value
tagKey: string value
tagType: 1
thumb: string value
properties:
confidence:
description: Measure of the confidence of an automatic tag
type: number
context:
type: string
filter:
description: A filter parameter that can be used to query for more content that matches this tag value.
type: string
example: actor=49
id:
type: integer
format: int32
ratingKey:
description: 'The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.'
type: string
example: '58683'
role:
description: The role this actor played
type: string
example: Secretary
tag:
description: The value of the tag (the name)
type: string
example: Shaun Lawton
tagKey:
description: Plex identifier for this tag which can be used to fetch additional information from plex.tv
type: string
example: 5d3ee12c4cde6a001c3e0b27
tagType:
type: integer
format: int32
thumb:
type: string
example: http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg
required:
- tag
Thumb:
type: string
example: /library/metadata/1/thumb/1234567890
TimelineEntry:
description: A timeline update entry delivered via WebSocket or EventSource
type: object
example:
title: string value
type: 1
itemID: 1
metadataState: string value
playQueueItemID: 1
state: 1
properties:
title:
type: string
type:
type: integer
itemID:
type: integer
metadataState:
type: string
playQueueItemID:
type: integer
state:
type: integer
TokenExchangeRequest:
type: object
example:
clientIdentifier: string value
jwt: string value
scope: string value
properties:
clientIdentifier:
description: Unique client identifier
type: string
jwt:
description: JWT token to exchange for a Plex auth token
type: string
scope:
description: Requested scope for the token
type: string
TopUserAccount:
type: object
example:
globalViewCount: 1
id: 1
properties:
globalViewCount:
type: integer
id:
type: integer
TranscodeJob:
type: object
example:
title: string value
type: transcode
generatorID: 1
key: string value
progress: 1
ratingKey: string value
remaining: 1
size: 1
speed: 1
targetTagID: 1
thumb: string value
properties:
title:
type: string
type:
type: string
enum:
- transcode
generatorID:
type: integer
key:
type: string
progress:
type: number
minimum: 0
maximum: 100
ratingKey:
type: string
remaining:
description: The number of seconds remaining in this job
type: integer
size:
description: The size of the result so far
type: integer
speed:
description: The speed of the transcode; 1.0 means real-time
type: number
targetTagID:
description: The tag associated with the job. This could be the tag containing the optimizer settings.
type: integer
thumb:
type: string
TranscodeSession:
description: The transcode session if item is currently being transcoded
type: object
example:
complete: true
context: string value
duration: 1
error: true
key: string value
progress: 1
protocol: string value
size: 1
sourceAudioCodec: string value
sourceVideoCodec: string value
speed: 1
throttled: true
transcodeHwFullPipeline: true
transcodeHwRequested: true
properties:
complete:
type: boolean
context:
type: string
duration:
type: integer
error:
type: boolean
key:
type: string
progress:
type: number
minimum: 0
maximum: 100
protocol:
type: string
size:
type: integer
sourceAudioCodec:
type: string
sourceVideoCodec:
type: string
speed:
type: number
throttled:
type: boolean
transcodeHwFullPipeline:
type: boolean
transcodeHwRequested:
type: boolean
UltraBlurColors:
type: object
example:
bottomLeft: string value
bottomRight: string value
topLeft: string value
topRight: string value
properties:
bottomLeft:
description: The color (hex) for the bottom left quadrant.
type: string
bottomRight:
description: The color (hex) for the bottom right quadrant.
type: string
topLeft:
description: The color (hex) for the top left quadrant.
type: string
topRight:
description: The color (hex) for the top right quadrant.
type: string
UnauthorizedErrorResponse:
type: object
example:
errors:
- code: 401
message: Unauthorized
status: 401
properties:
errors:
type: array
items:
type: object
properties:
code:
type: integer
format: int32
example: 1001
message:
type: string
example: User could not be authenticated
x-speakeasy-error-message: true
status:
type: integer
format: int32
example: 401
x-speakeasy-name-override: Unauthorized
UpdaterStatus:
description: Status of the PMS updater.
type: object
example:
checkedAt: 1
downloadURL: string value
Release:
- added: string value
downloadURL: string value
fixed: string value
key: string value
state: available
version: string value
status: 1
properties:
checkedAt:
description: Timestamp of the last update check.
type: integer
downloadURL:
description: The URL where the update is available.
type: string
Release:
type: array
items:
$ref: "#/components/schemas/Release"
status:
description: The current error code (0 means no error).
type: integer
User:
description: The user playing the content
type: object
example:
title: string value
id: string value
thumb: string value
properties:
title:
description: The username
type: string
id:
description: The id of the user
type: string
thumb:
description: Thumb image to display for the user
type: string
UserOptOutsResponse:
type: object
example:
optOuts:
- type: string value
id: string value
value: true
properties:
optOuts:
type: array
items:
type: object
properties:
type:
type: string
id:
type: string
value:
type: boolean
UserPlexAccount:
title: UserPlexAccount
type: object
example:
title: string value
adsConsentReminderAt: 1
adsConsentSetAt: 1
authToken: string value
backupCodesCreated: false
confirmed: false
country: string value
email: user@example.com
emailOnlyAuth: false
entitlements:
- string value
experimentalFeatures: false
friendlyName: string value
guest: false
hasPassword: true
home: false
homeAdmin: false
homeSize: 1
id: 1
joinedAt: 1
mailingListActive: false
mailingListStatus: active
maxHomeSize: 1
pin: string value
profile:
autoSelectAudio: true
protected: false
rememberExpiresAt: 1
restricted: false
roles:
- string value
scrobbleTypes: string value
services:
- endpoint: https://plex.tv
identifier: string value
status: online
subscription:
active: true
features:
- string value
status: Inactive
subscriptions:
- active: true
features:
- string value
status: Inactive
thumb: https://plex.tv
twoFactorEnabled: false
username: string value
uuid: string value
additionalProperties: true
properties:
title:
description: The title of the account (username or friendly name)
type: string
example: UsernameTitle
adsConsent:
description: Unknown
type:
- boolean
- 'null'
adsConsentReminderAt:
oneOf:
- $ref: "#/components/schemas/PlexDateTime"
- type: 'null'
adsConsentSetAt:
oneOf:
- $ref: "#/components/schemas/PlexDateTime"
- type: 'null'
anonymous:
description: Unknown
type:
- boolean
- 'null'
default: false
attributionPartner:
type:
- string
- 'null'
example: null
authToken:
description: The account token
type: string
example: CxoUzBTSV5hsxjTpFKaf
backupCodesCreated:
description: If the two-factor authentication backup codes have been created
type: boolean
default: false
confirmed:
description: If the account has been confirmed
type: boolean
default: false
country:
description: The account country
type: string
example: US
minLength: 2
maxLength: 2
email:
description: The account email address
type: string
format: email
example: username@email.com
emailOnlyAuth:
description: If login with email only is enabled
type: boolean
default: false
entitlements:
description: List of devices your allowed to use with this account
type: array
example: '[]'
items:
type: string
experimentalFeatures:
description: If experimental features are enabled
type: boolean
default: false
friendlyName:
description: Your account full name
type: string
example: friendlyUsername
guest:
description: If the account is a Plex Home guest user
type: boolean
default: false
hasPassword:
description: If the account has a password
type: boolean
default: true
home:
description: If the account is a Plex Home user
type: boolean
default: false
homeAdmin:
description: If the account is the Plex Home admin
type: boolean
default: false
homeSize:
description: The number of accounts in the Plex Home
type: integer
format: int32
example: 1
id:
description: The Plex account ID
type: integer
format: int32
example: 13692262
joinedAt:
$ref: "#/components/schemas/PlexDateTime"
locale:
description: The account locale
type:
- string
- 'null'
mailingListActive:
description: If you are subscribed to the Plex newsletter
type: boolean
default: false
mailingListStatus:
description: Your current mailing list status
type: string
enum:
- active
- unsubscribed
- removed
example: active
x-speakeasy-enums:
- ACTIVE
- UNSUBSCRIBED
- REMOVED
maxHomeSize:
description: The maximum number of accounts allowed in the Plex Home
type: integer
format: int32
example: 15
pin:
description: '[Might be removed] The hashed Plex Home PIN'
deprecated: true
type: string
profile:
$ref: "#/components/schemas/UserProfile"
protected:
description: If the account has a Plex Home PIN enabled
type: boolean
default: false
rememberExpiresAt:
$ref: "#/components/schemas/PlexDateTime"
restricted:
description: If the account is a Plex Home managed user
type: boolean
default: false
roles:
description: '[Might be removed] List of account roles. Plexpass membership listed here'
type: array
items:
type: string
scrobbleTypes:
description: Unknown
type: string
services:
type: array
items:
type: object
properties:
endpoint:
type: string
format: uri
example: https://epg.provider.plex.tv
identifier:
type: string
example: metadata-dev
secret:
type:
- string
- 'null'
status:
type: string
enum:
- online
- offline
example: online
x-speakeasy-enums:
- ONLINE
- OFFLINE
x-speakeasy-unknown-values: allow
token:
type:
- string
- 'null'
example: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv
required:
- identifier
- endpoint
- token
- secret
- status
subscription:
title: Subscription
description: If the account's Plex Pass subscription is active
type: object
properties:
active:
description: If the account's Plex Pass subscription is active
type: boolean
example: true
features:
description: List of features allowed on your Plex Pass subscription
type: array
items:
description: |-
- Android - Dolby Vision
- Android - PiP
- CU Sunset
- HRK_enable_EUR
- TREBLE-show-features
- ad-countdown-timer
- adaptive_bitrate
- album-types
- allow_dvr
- amazon-loop-debug
- avod-ad-analysis
- avod-new-media
- blacklist_get_signin
- boost-voices
- camera_upload
- client-radio-stations
- cloudflare-turnstile-required
- cloudsync
- collections
- comments_and_replies_push_notifications
- community_access_plex_tv
- companions_sonos
- content_filter
- custom-home-removal
- disable_home_user_friendships
- disable_sharing_friendships
- downloads-gating
- drm_support
- dvr
- dvr-block-unsupported-countries
- epg-recent-channels
- exclude restrictions
- federated-auth
- friend_request_push_notifications
- grandfather-sync
- guided-upgrade
- hardware_transcoding
- home
- hwtranscode
- imagga-v2
- increase-password-complexity
- ios14-privacy-banner
- iterable-notification-tokens
- item_clusters
- keep-payment-method
- kevin-bacon
- korea-consent
- le_isrg_root_x1
- lets_encrypt
- lightning-dvr-pivot
- live-tv-support-incomplete-segments
- livetv
- lyrics
- metadata_search
- music-analysis
- music_videos
- new_plex_pass_prices
- news-provider-sunset-modal
- nominatim
- pass
- photos-favorites
- photos-metadata-edition
- photosV6-edit
- photosV6-tv-albums
- pms_health
- premium-dashboard
- premium_music_metadata
- radio
- rate-limit-client-token
- scrobbling-service-plex-tv
- session_bandwidth_restrictions
- session_kick
- shared_server_notification
- shared_source_notification
- signin_notification
- signin_with_apple
- silence-removal
- sleep-timer
- spring_serve_ad_provider
- sync
- sweet-fades
- transcoder_cache
- trailers
- tuner-sharing
- two-factor-authentication
- unsupportedtuners
- upgrade-3ds2
- visualizers
- vod-schema
- vod_cloudflare
- volume-leveling
- watch-together-invite
- watchlist-rss
- web_server_dashboard
- webhooks
- blacklist-subnets
- chromecast-music-mp
- Sync v3
- livetv-platform-specific
- nonAnonymousAccount
- parental-controls
- Subtitles on Demand
- ultrablur
- web-desktop-gracenote-banner
type: string
paymentService:
description: Payment service used for your Plex Pass subscription
type:
- string
- 'null'
plan:
description: Name of Plex Pass subscription plan
type:
- string
- 'null'
status:
description: String representation of subscriptionActive
type: string
enum:
- Inactive
- Active
example: Inactive
x-speakeasy-enums:
- INACTIVE
- ACTIVE
x-speakeasy-unknown-values: allow
subscribedAt:
description: Date the account subscribed to Plex Pass
type:
- string
- 'null'
example: "2021-04-12T18:21:12Z"
subscriptionDescription:
description: Description of the Plex Pass subscription
type:
- string
- 'null'
subscriptions:
type: array
items:
title: Subscription
type: object
properties:
active:
description: If the account's Plex Pass subscription is active
type: boolean
example: true
features:
description: List of features allowed on your Plex Pass subscription
type: array
items:
description: |-
- Android - Dolby Vision
- Android - PiP
- CU Sunset
- HRK_enable_EUR
- TREBLE-show-features
- ad-countdown-timer
- adaptive_bitrate
- album-types
- allow_dvr
- amazon-loop-debug
- avod-ad-analysis
- avod-new-media
- blacklist_get_signin
- boost-voices
- camera_upload
- client-radio-stations
- cloudflare-turnstile-required
- cloudsync
- collections
- comments_and_replies_push_notifications
- community_access_plex_tv
- companions_sonos
- content_filter
- custom-home-removal
- disable_home_user_friendships
- disable_sharing_friendships
- downloads-gating
- drm_support
- dvr
- dvr-block-unsupported-countries
- epg-recent-channels
- exclude restrictions
- federated-auth
- friend_request_push_notifications
- grandfather-sync
- guided-upgrade
- hardware_transcoding
- home
- hwtranscode
- imagga-v2
- increase-password-complexity
- ios14-privacy-banner
- iterable-notification-tokens
- item_clusters
- keep-payment-method
- kevin-bacon
- korea-consent
- le_isrg_root_x1
- lets_encrypt
- lightning-dvr-pivot
- live-tv-support-incomplete-segments
- livetv
- lyrics
- metadata_search
- music-analysis
- music_videos
- new_plex_pass_prices
- news-provider-sunset-modal
- nominatim
- pass
- photos-favorites
- photos-metadata-edition
- photosV6-edit
- photosV6-tv-albums
- pms_health
- premium-dashboard
- premium_music_metadata
- radio
- rate-limit-client-token
- scrobbling-service-plex-tv
- session_bandwidth_restrictions
- session_kick
- shared_server_notification
- shared_source_notification
- signin_notification
- signin_with_apple
- silence-removal
- sleep-timer
- spring_serve_ad_provider
- sync
- sweet-fades
- transcoder_cache
- trailers
- tuner-sharing
- two-factor-authentication
- unsupportedtuners
- upgrade-3ds2
- visualizers
- vod-schema
- vod_cloudflare
- volume-leveling
- watch-together-invite
- watchlist-rss
- web_server_dashboard
- webhooks
- blacklist-subnets
- chromecast-music-mp
- Sync v3
- livetv-platform-specific
- nonAnonymousAccount
- parental-controls
- Subtitles on Demand
- ultrablur
- web-desktop-gracenote-banner
type: string
paymentService:
description: Payment service used for your Plex Pass subscription
type:
- string
- 'null'
plan:
description: Name of Plex Pass subscription plan
type:
- string
- 'null'
status:
description: String representation of subscriptionActive
type: string
enum:
- Inactive
- Active
example: Inactive
x-speakeasy-unknown-values: allow
subscribedAt:
description: Date the account subscribed to Plex Pass
type:
- string
- 'null'
example: "2021-04-12T18:21:12Z"
thumb:
description: URL of the account thumbnail
type: string
format: uri
example: https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101
twoFactorEnabled:
description: If two-factor authentication is enabled
type: boolean
default: false
username:
description: The account username
type: string
example: Username
uuid:
description: The account UUID
type: string
example: dae343c1f45beb4f
required:
- authToken
- email
- friendlyName
- hasPassword
- id
- joinedAt
- title
- twoFactorEnabled
- username
- uuid
x-speakeasy-unknown-fields: true
UserProfile:
title: UserProfile
type: object
example:
autoSelectAudio: true
properties:
autoSelectAudio:
description: If the account has automatically select audio and subtitle tracks enabled
type: boolean
default: true
example: true
autoSelectSubtitle:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
default: 0
example: 1
x-speakeasy-enums:
- MANUALLY_SELECTED
- SHOWN_WITH_FOREIGN_AUDIO
- ALWAYS_ENABLED
- description: The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)
defaultAudioAccessibility:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
- 3
default: 0
example: 0
x-speakeasy-enums:
- PREFER_NON_ACCESSIBILITY
- PREFER_ACCESSIBILITY
- ONLY_ACCESSIBILITY
- ONLY_NON_ACCESSIBILITY
- description: The audio accessibility mode (0 = Prefer non-accessibility audio, 1 = Prefer accessibility audio, 2 = Only show accessibility audio, 3 = Only show non-accessibility audio)
defaultAudioLanguage:
description: The preferred audio language for the account
type:
- string
- 'null'
example: ja
defaultAudioLanguages:
description: The preferred audio languages for the account
type:
- array
- 'null'
example: null
items:
type: string
defaultSubtitleAccessibility:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
- 3
default: 0
example: 1
x-speakeasy-enums:
- PREFER_NON_SDH
- PREFER_SDH
- ONLY_SDH
- ONLY_NON_SDH
- description: The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)
defaultSubtitleForced:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
- 3
default: 0
example: 1
x-speakeasy-enums:
- PREFER_NON_FORCED
- PREFER_FORCED
- ONLY_FORCED
- ONLY_NON_FORCED
- description: The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)
defaultSubtitleLanguage:
description: The preferred subtitle language for the account
type:
- string
- 'null'
example: en
defaultSubtitleLanguages:
description: The preferred subtitle languages for the account
type:
- array
- 'null'
example: null
items:
type: string
mediaReviewsLanguages:
description: The languages for media reviews visibility
type:
- array
- 'null'
example: null
items:
type: string
mediaReviewsVisibility:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
- 3
default: 0
example: 1
x-speakeasy-enums:
- NO_ONE
- CRITICS_ONLY
- PLEX_USERS_ONLY
- PLEX_USERS_AND_CRITICS
- description: Whether or not the account has media reviews visibility enabled
watchedIndicator:
allOf:
- type: integer
format: int32
enum:
- 0
- 1
- 2
- 3
default: 0
example: 1
x-speakeasy-enums:
- NONE
- MOVIES_AND_TV_SHOWS
- MOVIES
- TV_SHOWS
- description: Whether or not media watched indicators are enabled (little orange dot on media)
required:
- autoSelectAudio
- defaultAudioLanguage
- defaultSubtitleLanguage
- autoSelectSubtitle
- defaultSubtitleAccessibility
- defaultSubtitleForced
- watchedIndicator
- mediaReviewsVisibility
WebhookPayload:
description: Payload delivered by Plex to configured webhook URLs.
type: object
example:
Account:
title: string value
id: 1
thumb: string value
event: media.play
Metadata: {}
owner: true
Player:
title: string value
local: true
publicAddress: string value
uuid: string value
Server:
title: string value
uuid: string value
user: true
properties:
Account:
type: object
properties:
title:
type: string
example: Plex User
id:
type: integer
example: 1
thumb:
type: string
example: https://plex.tv/users/1/thumb
event:
description: Event type that triggered the webhook.
type: string
enum:
- media.play
- media.pause
- media.resume
- media.stop
- media.scrobble
- media.rate
- library.new
- library.on.deck
example: media.play
Metadata:
description: The media item associated with the event. Shape varies by event type.
type: object
owner:
type: boolean
example: true
Player:
type: object
properties:
title:
type: string
example: Chrome
local:
type: boolean
example: true
publicAddress:
type: string
example: 192.168.1.100
uuid:
type: string
example: player-uuid-123
Server:
type: object
properties:
title:
type: string
example: My Server
uuid:
type: string
example: 5d776d057ae4e7001f65e7d0
user:
type: boolean
example: true
x-speakeasy-retries:
backoff:
exponent: 2
initialInterval: 1000
maxElapsedTime: 300000
maxInterval: 30000
retryConnectionErrors: true
statusCodes:
- '429'
strategy: backoff