Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Plex Media Server Provider API
version: '1.2.2
'
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
description: '# API Info
## Content Types
The API supports responses in both XML and JSON, and clients can request one or the other using the standard `Accept` HTTP header.'
servers:
- url: https://{IP-description}.{identifier}.plex.direct:{port}
variables:
IP-description:
default: 1-2-3-4
description: A `-` separated string of the IPv4 or IPv6 address components
identifier:
default: 0123456789abcdef0123456789abcdef
description: The unique identifier of this particular PMS
port:
default: '32400'
security:
- user_token:
- shared user
- admin
tags:
- 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 for more information on how to use media providers.
paths:
/media/providers:
get:
tags:
- Provider
operationId: getMediaProviders
summary: Get the list of available media providers
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:
type: object
properties:
MediaContainer:
allOf:
- $ref: '#/components/schemas/serverConfiguration'
- type: object
properties:
identifier:
type: string
description: A unique identifier for the provider, e.g. `com.plexapp.plugins.library`.
title:
type: string
description: The title of the provider.
types:
type: string
description: This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`).
protocols:
type: string
description: 'A comma-separated list of default protocols for the provider, which can be:
- `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis.'
Feature:
type: array
items:
type: object
properties:
key:
type: string
type:
type: string
Directory:
type: array
items:
$ref: '#/components/schemas/directory'
examples:
providerWithEpg:
summary: Media providers including EPG
value:
MediaContainer:
size: 2
allowCameraUpload: true
allowChannelAccess: true
allowMediaDeletion: true
allowSharing: true
allowSync: true
allowTuners: true
backgroundProcessing: true
certificate: true
companionProxy: true
countryCode: usa
diagnostics: logs,databases,streaminglogs
eventStream: true
friendlyName: Server Name
hubSearch: true
itemClusters: true
livetv: 7
machineIdentifier: c997cf82c4158cb986ccc0e8f829a6f5d5086a63
mediaProviders: true
multiuser: true
musicAnalysis: 2
myPlex: true
myPlexMappingState: mapped
myPlexSigninState: ok
myPlexSubscription: true
myPlexUsername: me@somewhere.else
offlineTranscode: 1
ownerFeatures: adaptive_bitrate,advanced-playback-settings,camera_upload,collections,content_filter,download_certificates,dvr,federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,ump-matching-pref,unsupportedtuners,webhooks
platform: MacOSX
platformVersion: 14.4.1
pluginHost: true
pushNotifications: false
readOnlyLibraries: false
streamingBrainABRVersion: 3
streamingBrainVersion: 2
sync: true
transcoderActiveVideoSessions: 0
transcoderAudio: true
transcoderLyrics: true
transcoderPhoto: true
transcoderSubtitles: true
transcoderVideo: true
transcoderVideoBitrates: 64,96,208,320,720,1500,2000,3000,4000,8000,10000,12000,20000
transcoderVideoQualities: 0,1,2,3,4,5,6,7,8,9,10,11,12
transcoderVideoResolutions: 128,128,160,240,320,480,768,720,720,1080,1080,1080,1080
updatedAt: 1714653009
updater: true
version: 1.40.2.8395-c67dce28e
voiceSearch: true
MediaProvider:
- identifier: com.plexapp.plugins.library
title: Library
types: video,audio,photo
protocols: stream,download
Feature:
- key: /library/sections
type: content
Directory:
- hubKey: /hubs
title: Home
- agent: tv.plex.agents.movie
language: en-US
refreshing: false
scanner: Plex Movie
uuid: 82503060-0d68-4603-b594-8b071d54819e
id: '1'
key: /library/sections/1
hubKey: /hubs/sections/1
type: movie
title: Movies
updatedAt: 1689270983
scannedAt: 1706626696
Pivot:
- id: recommended
key: /hubs/sections/1
type: hub
title: Recommended
context: content.discover
symbol: star
- id: library
key: /library/sections/1/all?type=1
type: list
title: Library
context: content.library
symbol: library
- id: collections
key: /library/sections/1/collections
type: list
title: Collections
context: content.collections
symbol: stack
- id: categories
key: /library/sections/1/categories
type: list
title: Categories
context: content.categories
symbol: stack
- agent: tv.plex.agents.series
language: en-US
refreshing: false
scanner: Plex TV Series
uuid: 3a85ee1d-238c-4af9-88ee-45fc634fc478
id: '2'
key: /library/sections/2
hubKey: /hubs/sections/2
type: show
title: TV Shows
updatedAt: 1682628353
scannedAt: 1714485942
Pivot:
- id: recommended
key: /hubs/sections/2
type: hub
title: Recommended
context: content.discover
symbol: star
- id: library
key: /library/sections/2/all?type=2
type: list
title: Library
context: content.library
symbol: library
- id: categories
key: /library/sections/2/categories
type: list
title: Categories
context: content.categories
symbol: stack
- agent: tv.plex.agents.music
language: en-US
refreshing: false
scanner: Plex Music
uuid: d7fd8c81-a345-4e68-8113-92f23cb47e70
id: '3'
key: /library/sections/3
hubKey: /hubs/sections/3
type: artist
title: Music
updatedAt: 1691606667
scannedAt: 1690487664
Pivot:
- id: recommended
key: /hubs/sections/3
type: hub
title: Recommended
context: content.discover
symbol: star
- id: library
key: /library/sections/3/all?type=8
type: list
title: Library
context: content.library
symbol: library
- id: playlists
key: /playlists?type=15§ionID=3&playlistType=audio
type: list
title: Playlists
context: content.playlists
symbol: playlist
- id: playlists
key: /playlists
type: playlist
title: Playlists
Pivot:
- id: playlists.audio
key: /playlists?playlistType=audio
type: list
title: Music
context: content.playlists.music
symbol: playlist
- id: playlists.video
key: /playlists?playlistType=video
type: list
title: Video
context: content.playlists.video
symbol: playlist
- key: /hubs/search
type: search
- key: /library/matches
type: match
- key: /library/metadata
type: metadata
- key: /:/rate
type: rate
- key: /photo/:/transcode
type: imagetranscoder
- key: /hubs/promoted
type: promoted
- key: /hubs/continueWatching
type: continuewatching
- key: /actions
type: actions
Action:
- id: removeFromContinueWatching
key: /actions/removeFromContinueWatching
- flavor: universal
key: /playlists
type: playlist
- flavor: universal
key: /playQueues
type: playqueue
- key: /library/collections
type: collection
- scrobbleKey: /:/scrobble
unscrobbleKey: /:/unscrobble
key: /:/timeline
type: timeline
- type: manage
- type: queryParser
- flavor: download
type: subscribe
- id: 13
parentID: 12
identifier: tv.plex.providers.epg.cloud:12
providerIdentifier: tv.plex.providers.epg.cloud
title: Live TV & DVR
types: video
protocols: livetv
epgSource: Gracenote
friendlyName: My Server
Feature:
- key: /tv.plex.providers.epg.cloud:12/sections
type: content
Directory:
- id: tv.plex.providers.epg.cloud:12
hubKey: /tv.plex.providers.epg.cloud:12/hubs/discover
title: Live TV & DVR
Pivot:
- id: dvr.whatson
key: /tv.plex.providers.epg.cloud:12/hubs/discover
type: hub
title: What's On
context: content.dvr.discover
symbol: star
- id: dvr.guide
key: view://dvr/guide
type: view
title: Guide
context: content.dvr.guide
symbol: guide
- id: dvr.schedule
key: view://dvr/recording-schedule
type: view
title: DVR Schedule
context: content.dvr.schedule
symbol: schedule
- id: dvr.priority
key: view://dvr/recording-priority
type: view
title: Recording Priority
context: content.dvr.priority
symbol: list
- id: dvr.browse
key: /tv.plex.providers.epg.cloud:12/sections/2/all?type=4
type: list
title: Browse
context: content.dvr.browse
symbol: library
- type: mixed
key: /tv.plex.providers.epg.cloud:12/watchnow
title: Guide
icon: /:/resources/dvr/dvr-watchnow-icon.png
- key: /tv.plex.providers.epg.cloud:12/sections/1
type: movie
title: Movies
icon: /:/resources/dvr/dvr-movies-icon.png
updatedAt: 171458958"
- key: /tv.plex.providers.epg.cloud:12/sections/2
type: show
title: Shows
icon: /:/resources/dvr/dvr-allshows-icon.png
updatedAt: 171458958"
- key: /tv.plex.providers.epg.cloud:12/sections/3
type: show
title: Sports
icon: /:/resources/dvr/dvr-sports-icon.png
updatedAt: 171458958"
- key: /tv.plex.providers.epg.cloud:12/hubs/search
type: search
- key: /tv.plex.providers.epg.cloud:12/matches
type: match
- key: /tv.plex.providers.epg.cloud:12/metadata
type: metadata
- key: /photo/:/transcode
type: imagetranscoder
- key: /tv.plex.providers.epg.cloud:12/hubs/discover?promoted=1&includeTypeFirst=1
type: promoted
- key: /tv.plex.providers.epg.cloud:12/grid
type: grid
GridChannelFilter:
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1a610ee2002c74f34a
title: Hit TV
genreRatingKey: genre_6006cc1a610ee2002c74f34a
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1a610ee2002c74f33f
title: Crime
genreRatingKey: genre_6006cc1a610ee2002c74f33f
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1d610ee2002c74f38c
title: Reality
genreRatingKey: genre_6006cc1d610ee2002c74f38c
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1d610ee2002c74f37a
title: News
genreRatingKey: genre_6006cc1d610ee2002c74f37a
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_620143f98578b9238e1cdb8a
title: Sports
genreRatingKey: genre_620143f98578b9238e1cdb8a
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1b610ee2002c74f358
title: Game Shows
genreRatingKey: genre_6006cc1b610ee2002c74f358
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ecc
title: History & Science
genreRatingKey: genre_6529021f0f3f142ea6049ecc
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc18610ee2002c74f2f6
title: Sci-Fi & Action
genreRatingKey: genre_6006cc18610ee2002c74f2f6
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_620143f98578b9238e1cdb89
title: Movies
genreRatingKey: genre_620143f98578b9238e1cdb89
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc18610ee2002c74f308
title: Chills & Thrills
genreRatingKey: genre_6006cc18610ee2002c74f308
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ecb
title: Classic TV
genreRatingKey: genre_6529021f0f3f142ea6049ecb
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ecd
title: Nature & Travel
genreRatingKey: genre_6529021f0f3f142ea6049ecd
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc18610ee2002c74f2f9
title: Comedy
genreRatingKey: genre_6006cc18610ee2002c74f2f9
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ece
title: Black Entertainment
genreRatingKey: genre_6529021f0f3f142ea6049ece
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1a610ee2002c74f33b
title: Cooking
genreRatingKey: genre_6006cc1a610ee2002c74f33b
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1b610ee2002c74f361
title: Home
genreRatingKey: genre_6006cc1b610ee2002c74f361
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6074b802507c8d42cf7e1678
title: Kids & Family
genreRatingKey: genre_6074b802507c8d42cf7e1678
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ed0
title: Sporting
genreRatingKey: genre_6529021f0f3f142ea6049ed0
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6171e01d4c451f5a44debdf6
title: En Español
genreRatingKey: genre_6171e01d4c451f5a44debdf6
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6529021f0f3f142ea6049ecf
title: International
genreRatingKey: genre_6529021f0f3f142ea6049ecf
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_60d37385f631b9aabb67bf37
title: Gaming & Anime
genreRatingKey: genre_60d37385f631b9aabb67bf37
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_620143f98578b9238e1cdb88
title: Lifestyle
genreRatingKey: genre_620143f98578b9238e1cdb88
- key: /tv.plex.providers.epg.cloud:12/lineups/dvr/channels?genre=genre_6006cc1c610ee2002c74f378
title: Music
genreRatingKey: genre_6006cc1c610ee2002c74f378
- key: /tv.plex.providers.epg.cloud:12/collections
type: collection
- scrobbleKey: /:/scrobble
unscrobbleKey: /:/unscrobble
key: /:/timeline
type: timeline
- flavor: record
type: subscribe
post:
tags:
- Provider
operationId: postMediaProviders
summary: Add a media 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:
- in: query
name: url
required: true
schema:
type: string
description: The URL of the media provider to add.
responses:
'200':
$ref: '#/components/responses/200'
'400':
$ref: '#/components/responses/400'
/media/providers/refresh:
post:
tags:
- Provider
operationId: postMediaProvidersRefresh
summary: Refresh media providers
description: Refresh all known media providers. This is useful in case a provider has updated features.
responses:
'200':
$ref: '#/components/responses/200'
/media/providers/{provider}:
delete:
tags:
- Provider
operationId: deleteMediaProvider
summary: Delete a media provider
description: Deletes a media provider with the given id
parameters:
- in: path
name: provider
schema:
type: string
description: The ID of the media provider to delete
required: true
responses:
'200':
$ref: '#/components/responses/200'
'400':
$ref: '#/components/responses/400'
'403':
description: Cannot delete a provider which is a child of another provider
content:
text/html:
examples:
forbidden:
summary: Forbidden
value: <html><head><title>Forbidden</title></head><body><h1>403 Forbidden</h1></body></html>
components:
schemas:
directory:
type: object
properties:
hubKey:
type: string
key:
type: string
title:
type: string
thumb:
type: string
art:
type: string
share:
type: integer
hasStoreServices:
type: boolean
hasPrefs:
type: boolean
identifier:
type: string
titleBar:
type: string
lastAccessedAt:
type: integer
type:
type: string
content:
type: boolean
filter:
type: string
Pivot:
type: array
items:
type: object
properties:
id:
type: string
key:
type: string
type:
type: string
title:
type: string
context:
type: string
symbol:
type: string
additionalProperties: true
MediaContainer:
type: object
properties:
identifier:
type: string
size:
type: integer
totalSize:
type: integer
description: The total size of objects available. Also provided in the X-Plex-Container-Total-Size header
offset:
type: integer
description: The offset of where this container page starts among the total objects available. Also provided in the X-Plex-Container-Start header
serverConfiguration:
allOf:
- $ref: '#/components/schemas/MediaContainer'
- type: object
properties:
allowCameraUpload:
type: boolean
allowChannelAccess:
type: boolean
allowMediaDeletion:
type: boolean
allowSharing:
type: boolean
allowSync:
type: boolean
allowTuners:
type: boolean
backgroundProcessing:
type: boolean
certificate:
type: boolean
companionProxy:
type: boolean
countryCode:
type: string
diagnostics:
type: string
eventStream:
type: boolean
friendlyName:
type: string
hubSearch:
type: boolean
itemClusters:
type: boolean
livetv:
type: integer
example: 7
machineIdentifier:
example: 0123456789abcdef0123456789abcdef012345678
mediaProviders:
type: boolean
multiuser:
type: boolean
musicAnalysis:
type: integer
example: 2
myPlex:
type: boolean
myPlexMappingState:
example: mapped
myPlexSigninState:
example: ok
myPlexSubscription:
type: boolean
myPlexUsername:
type: string
offlineTranscode:
example: 1
ownerFeatures:
description: A comma-separated list of features which are enabled for the server owner
type: string
platform:
type: string
platformVersion:
type: string
pluginHost:
type: boolean
pushNotifications:
type: boolean
readOnlyLibraries:
type: boolean
streamingBrainABRVersion:
type: integer
streamingBrainVersion:
type: integer
sync:
type: boolean
transcoderActiveVideoSessions:
type: integer
transcoderAudio:
type: boolean
transcoderLyrics:
type: boolean
transcoderPhoto:
type: boolean
transcoderSubtitles:
type: boolean
transcoderVideo:
type: boolean
transcoderVideoBitrates:
description: The suggested video quality bitrates to present to the user
transcoderVideoQualities:
type: string
transcoderVideoResolutions:
description: The suggested video resolutions to the above quality bitrates
updatedAt:
type: integer
updater:
type: boolean
version:
type: string
voiceSearch:
type: boolean
responses:
'200':
description: OK
content:
text/html:
examples:
ok:
summary: OK
value: ''
'400':
description: Bad Request
content:
text/html:
examples:
badRequest:
summary: A parameter has a bad value or required parameter is missing
value: <html><head><title>Bad Request</title></head><body><h1>400 Bad Request</h1></body></html>
securitySchemes:
user_token:
type: apiKey
in: header
name: X-Plex-Token
description: The token which identifies the user accessing the PMS. This is typically provided to the client by plex.tv. This can be either a traditional access token or a JWT token obtained through the JWT authentication flow.
x-tagGroups:
- name: General
tags:
- General
- Library
- Library Playlists
- Library Collections
- Status
- Activities
- Updater
- Butler
- Events
- Log
- Preferences
- Download Queue
- UltraBlur
- Transcoder
- name: Media Provider
tags:
- Provider
- Metadata Agents
- Content
- Hubs
- Search
- Rate
- Playlist
- Play Queue
- Timeline
- name: DVR
tags:
- DVRs
- Devices
- EPG
- Subscriptions
- Live TV