Plex Updater API
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.
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.
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-updater-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 Updater 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: 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.'
paths:
/updater/status:
get:
tags:
- Updater
security:
- user_token:
- admin
summary: Querying status of updates
description: Get the status of updating the server
operationId: updaterGetStatus
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
MediaContainer:
allOf:
- type: object
properties:
canInstall:
type: boolean
description: Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows)
autoUpdateVersion:
type: integer
description: The version of the updater (currently `1`)
checkedAt:
type: integer
description: The last time a check for updates was performed
downloadURL:
type: string
description: The URL where the update is available
status:
type: integer
description: The current error code (`0` means no error)
Release:
type: array
items:
type: object
properties:
key:
type: string
description: The URL key of the update
version:
type: string
description: The version available
added:
type: string
description: A list of what has been added in this version
fixed:
type: string
description: A list of what has been fixed in this version
downloadURL:
type: string
description: The URL of where this update is available
state:
type: string
enum:
- available
- downloading
- downloaded
- installing
- tonight
- skipped
- error
- notify
- done
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
'
examples:
status:
description: An example of update status
value:
MediaContainer:
size: 1
autoUpdateVersion: 1
canInstall: true
checkedAt: 1715109491
downloadURL: https://plex.tv/downloads/latest/5?channel=16&build=windows-x86_64&distro=windows&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx
status: 0
Release:
- key: https://plex.tv/updater/releases/5315
version: 1.40.2.8395-c67dce28e
added: '(PLEASE NOTE) Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.
Rename ''un/played'' to ''un/watched'' terminology for video types (PM-1042)
We have identified an issue where automatic updates were not respecting custom paths for existing Windows 64-bit installs. Unfortunately, any automatic fix would introduce security vulnerabilities so we encourage users who installed in a custom path to uninstall and then manually reinstall Plex Media Server.'
fixed: '(Auto Update) Custom install paths are not respected when auto-updating on 64 bit Windows. (PM-1143)
(CreditsDetection) Retry detection only a limited amount of times on failures (PM-1093)
(DB Optimize) Server could become unresponsive during a DB optimize in certain circumstances (PM-1129)
(History) Query parsing would return Bad Request when encountering includeFields arguments.
(History) View history would yield fewer entries than requested (PM-1306)
(Loudness Analysis) Some files could cause errors when preforming Loudness Analysis. (PM-627)
(Mac) Linker optimization would incorrectly generate code that would cause the server to unexpectedly exit while syncing view state. (PM-1308)
(Nvidia Shield) Running on Nvidia Shield would result in ''core component problem'' error. (PM-1364)
(Push Notifications) Used expensive DB query during playback progress notifications (PM-1166)
(Thumbnails) Thumbnails were not properly updated when underlying file changed (PM-1162)
(Trailers) Premium trailers and extras could fail to load (PM-1347)
(Transcoder) On Windows, headless (no display attached) Nvidia cards were not recognized (PM-962)
(Transcoder) On Windows, the first Intel device was used for transcoding regardless of which Intel device was selected (PM-962)'
downloadURL: https://plex.tv/downloads/latest/5?channel=16&build=windows-x86_64&distro=windows&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx
state: available
/updater/check:
put:
tags:
- Updater
security:
- user_token:
- admin
summary: Checking for updates
description: Perform an update check and potentially download
operationId: updaterPutCheck
parameters:
- in: query
name: download
schema:
type: integer
enum:
- 0
- 1
description: Indicate that you want to start download any updates found.
responses:
'200':
$ref: '#/components/responses/200'
/updater/apply:
put:
tags:
- Updater
security:
- user_token:
- admin
summary: Applying updates
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.
operationId: updaterPutApply
parameters:
- in: query
name: tonight
schema:
type: integer
enum:
- 0
- 1
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
name: skip
schema:
type: integer
enum:
- 0
- 1
description: Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`.
responses:
'200':
description: The update process started correctly
content:
text/html:
examples:
ok:
summary: OK
value: ''
'400':
description: This system cannot install updates
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>
'500':
description: The update process failed to start
content:
text/html:
examples:
badParam:
summary: Processing failed inside the server
value: <html><head><title>Internal Server Error</title></head><body><h1>500 Internal Server Error</h1></body></html>
components:
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