Plex · AsyncAPI Specification
Plex Webhooks
Version
View Spec
View on GitHub
CompanyMediaStreamingVideoMusicMedia ServerEntertainmentSelf-HostedPersonal MediaHome AutomationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-05'
method: searched
source: https://support.plex.tv/articles/115002267687-webhooks/
spec_type: none
spec_note: Plex publishes no AsyncAPI, no CloudEvents mapping and no machine-readable
event schema. The webhook catalogue below is captured from the support article;
the streaming surfaces are declared operations in the Plex Media Server OpenAPI.
surface: webhooks + server-push streams
webhooks:
docs: https://support.plex.tv/articles/115002267687-webhooks/
configuration: Account settings in the Plex Web App (user menu, top right).
requirements:
- An active Plex Pass subscription.
- Tied to the admin/owner account of the Plex Media Server.
transport: HTTP POST
content_type: multipart/form-data
payload_field: payload (JSON)
attachment: For events flagged below, a JPEG thumbnail is included as a second
part of the multipart POST.
signing: none documented
retries: none documented
payload_shape:
top_level:
- event
- user
- owner
objects:
- name: Account
fields:
- id
- title
- thumb
- name: Server
fields:
- title
- uuid
- name: Player
fields:
- title
- uuid
- publicAddress
- local
- name: Metadata
fields: Full metadata object for the item, as returned by the library API.
events:
- event: library.on.deck
group: new content
description: A new item is added that appears in the user's On Deck.
thumbnail: true
- event: library.new
group: new content
description: A new item is added to a library to which the user has access.
thumbnail: true
- event: media.pause
group: playback
description: Media playback pauses.
thumbnail: false
- event: media.play
group: playback
description: Media starts playing.
thumbnail: true
- event: media.rate
group: playback
description: Media is rated.
thumbnail: true
- event: media.resume
group: playback
description: Media playback resumes.
thumbnail: false
- event: media.scrobble
group: playback
description: Media is viewed past the 90% mark.
thumbnail: false
- event: media.stop
group: playback
description: Media playback stops.
thumbnail: false
- event: admin.database.backup
group: server owner
description: A database backup completed successfully.
owner_only: true
thumbnail: false
- event: admin.database.corrupted
group: server owner
description: Database corruption was detected.
owner_only: true
thumbnail: false
- event: device.new
group: server owner
description: A device accesses the owner's server.
owner_only: true
thumbnail: false
- event: playback.started
group: server owner
description: Playback is started by a shared user for the owner's server.
owner_only: true
thumbnail: true
streaming:
source: openapi/plex-media-server-openapi.json
channels:
- operationId: websocketGetSlash
path: /:/websocket/notifications
protocol: WebSocket
summary: Connect to WebSocket
tag: Events
- operationId: eventsourceGetSlash
path: /:/eventsource/notifications
protocol: SSE
summary: Connect to Eventsource
tag: Events
note: Both are declared operations in the published OpenAPI but carry no message
schema — the notification payloads they emit are not described anywhere public.
examples:
first_party_reference_implementations:
- name: webhooks-home-automation
url: https://github.com/plexinc/webhooks-home-automation
description: Use Plex webhooks to control lighting in your home.
- name: webhooks-notifications
url: https://github.com/plexinc/webhooks-notifications
description: Use Plex webhooks to display desktop notifications and control
playback.
- name: webhooks-slack
url: https://github.com/plexinc/webhooks-slack
description: Use Plex webhooks to push media notifications into Slack.
gaps:
- No AsyncAPI document for the webhook catalogue or the WebSocket/SSE streams.
- No payload JSON Schema, so consumers reverse-engineer the shape from examples.
- No webhook signature or shared secret is documented, so receivers cannot verify
origin.
- The webhook catalogue lives in the support knowledge base, not in the developer
documentation, and is not linked from the OpenAPI.
x-evidence:
- fetched: '2026-08-05'
url: https://support.plex.tv/articles/115002267687-webhooks/
http_status: 200
- fetched: '2026-08-05'
url: https://github.com/plexinc
http_status: 200