Plex Preferences API
The Preferences API from Plex — 2 operation(s) for preferences.
The Preferences API from Plex — 2 operation(s) for preferences.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/plex-preferences-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Plex Media Server Preferences 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: Preferences
paths:
/:/prefs:
get:
tags:
- Preferences
summary: Get all preferences
description: Get the list of all preferences
operationId: preferencesGetSlash
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/mediaContainerWithSettings'
examples:
somePrefs:
value:
MediaContainer:
size: 171
Setting:
- id: FriendlyName
label: Friendly name
summary: This name will be used to identify this media server to other computers on your network. If you leave it blank, your computer's name will be used instead.
type: text
default: ''
value: ''
hidden: false
advanced: false
group: general
- id: sendCrashReports
label: Send crash reports to Plex
summary: This helps us improve your experience.
type: bool
default: true
value: true
hidden: false
advanced: false
group: general
- id: ScheduledLibraryUpdateInterval
label: Library scan interval
summary: ''
type: int
default: 3600
value: 3600
hidden: false
advanced: false
group: library
enumValues: 900:every 15 minutes|1800:every 30 minutes|3600:hourly|7200:every 2 hours|21600:every 6 hours|43200:every 12 hours|86400:daily
- id: OnDeckWindow
label: Weeks to consider for Continue Watching
summary: Media that has not been watched in this many weeks will not appear in Continue Watching.
type: int
default: 16
value: 16
hidden: false
advanced: true
group: library
- id: LibraryVideoPlayedAtBehaviour
label: Video play completion behaviour
summary: Decide whether to use end credits markers to determine the 'watched' state of video items. When markers are not available the selected threshold percentage will be used.
type: text
default: '3'
value: '3'
hidden: false
advanced: true
group: library
enumValues: 0:at selected threshold percentage|1:at final credits marker position|2:at first credits marker position|3:earliest between threshold percent and first credits marker
- id: TranscoderH264MinimumCRF
label: ''
summary: ''
type: double
default: 16
value: 16
hidden: true
advanced: false
group: transcoder
put:
tags:
- Preferences
summary: Set preferences
description: Set a set of preferences in query parameters
operationId: preferencesPutSlash
parameters:
- in: query
name: prefs
schema:
type: object
required: true
example:
FriendlyName: My Server
sendCrashReports: 1
ScheduledLibraryUpdateInterval: 3600
responses:
'200':
$ref: '#/components/responses/200'
'400':
description: Attempt to set a preferences that doesn't exist
content:
text/html:
examples:
badRequest:
summary: A parameter has a bad value or required parameter is missing
value: cannot set preference value for unknown preference foo
'403':
description: Attempt to set a preferences that doesn't exist
content:
text/html:
examples:
forbidden:
summary: Forbidden
value: <html><head><title>Forbidden</title></head><body><h1>403 Forbidden</h1></body></html>
/:/prefs/get:
get:
tags:
- Preferences
summary: Get a preferences
description: Get a single preference and value
operationId: preferencesGetGet
parameters:
- in: query
name: id
schema:
type: string
description: The preference to fetch
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/mediaContainerWithSettings'
examples:
friendlyName:
value:
MediaContainer:
size: 1
Setting:
- id: FriendlyName
label: Friendly name
summary: This name will be used to identify this media server to other computers on your network. If you leave it blank, your computer's name will be used instead.
type: text
default: ''
value: ''
hidden: false
advanced: false
group: general
sendCrashReports:
value:
MediaContainer:
size: 1
Setting:
- id: sendCrashReports
label: Send crash reports to Plex
summary: This helps us improve your experience.
type: bool
default: true
value: true
hidden: false
advanced: false
group: general
scheduledLibraryUpdateInterval:
value:
MediaContainer:
size: 1
Setting:
- id: ScheduledLibraryUpdateInterval
label: Library scan interval
summary: ''
type: int
default: 3600
value: 3600
hidden: false
advanced: false
group: library
enumValues: 900:every 15 minutes|1800:every 30 minutes|3600:hourly|7200:every 2 hours|21600:every 6 hours|43200:every 12 hours|86400:daily
onDeckWindow:
value:
MediaContainer:
size: 1
Setting:
- id: OnDeckWindow
label: Weeks to consider for Continue Watching
summary: Media that has not been watched in this many weeks will not appear in Continue Watching.
type: int
default: 16
value: 16
hidden: false
advanced: true
group: library
libraryVideoPlayedAtBehaviour:
value:
MediaContainer:
size: 1
Setting:
- id: LibraryVideoPlayedAtBehaviour
label: Video play completion behaviour
summary: Decide whether to use end credits markers to determine the 'watched' state of video items. When markers are not available the selected threshold percentage will be used.
type: text
default: '3'
value: '3'
hidden: false
advanced: true
group: library
enumValues: 0:at selected threshold percentage|1:at final credits marker position|2:at first credits marker position|3:earliest between threshold percent and first credits marker
transcoderH264MinimumCRF:
value:
MediaContainer:
size: 1
Setting:
- id: TranscoderH264MinimumCRF
label: ''
summary: ''
type: double
default: 16
value: 16
hidden: true
advanced: false
group: transcoder
'404':
description: No preference with the provided name found.
content:
text/html:
examples:
notFound:
summary: Not Found
value: <html><head><title>Not Found</title></head><body><h1>404 Not Found</h1></body></html>
components:
schemas:
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
mediaContainerWithSettings:
type: object
properties:
MediaContainer:
allOf:
- $ref: '#/components/schemas/MediaContainer'
- type: object
properties:
Setting:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
description: A user-friendly name for the preference
summary:
type: string
description: A description of the preference
type:
type: string
enum:
- bool
- int
- text
- double
description: The type of the value of this pref
default:
oneOf:
- type: string
- type: number
- type: boolean
description: The default value of this pref
value:
oneOf:
- type: string
- type: number
- type: boolean
description: The current value of this pref
hidden:
type: boolean
description: Whether the pref is hidden or not
advanced:
type: boolean
description: Whether the pref is considered advanced and normally hidden from the user
group:
type: string
description: The group name of this pref to aid in display of a hierarchy.
enumValues:
type: string
description: The possible values for this pref if restricted. The list is `|` separated with `value:name` entries.
responses:
'200':
description: OK
content:
text/html:
examples:
ok:
summary: OK
value: ''
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