Plex Preferences API

The Preferences API from Plex — 2 operation(s) for preferences.

Operations 3

GET /:/prefs Get all preferences #
PUT /:/prefs Set preferences #
GET /:/prefs/get Get a preferences #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/plex-preferences-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

plex-preferences-api-openapi.yml Raw ↑
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