Feature request: Supported server-mediated API for controlling remote Plex/Plexamp sessions

I would like to request one specific feature:

A documented, authenticated, server-mediated API for controlling active Plex and Plexamp playback sessions across different networks.

Use case

I run my own Plex Media Server and use Plexamp on an iPhone while away from home. The phone can stream music from the server successfully, and PMS can see the active session through /status/sessions.

However, a third-party integration cannot pause, resume, skip, stop, or send media to that active session unless it can directly connect to the player’s local Plex Companion HTTP endpoint.

Reproduction

My test environment:

  • Plex Media Server 1.43.3
  • Plexamp 4.12.4 on iOS
  • The phone and integration are on different networks
  • Remote music playback itself works normally

Observed behavior:

  1. /status/sessions reports the iPhone Plexamp session, playback state, current item, and advancing playback position.
  2. The Plex account resources API lists the device with:
    client,player,pubsub-player
  3. The phone does not appear in PMS /clients.
  4. Its only advertised Companion connection is marked local and uses port 32500.
  5. That endpoint is not reachable from the remote integration.
  6. Therefore the integration can monitor playback but cannot control it.

I understand that Plexamp’s official clients can use a cloud intermediate for some basic controls. However, I could not find a documented and supported API for third-party integrations to use that mechanism.

Comparison with Emby

Emby exposes remote control as an authenticated server API.

An integration can discover an active session and send commands through the media server:

  • POST /Sessions/{Id}/Playing/{Command}
  • Pause / Unpause
  • Stop
  • NextTrack / PreviousTrack
  • Seek / Rewind / FastForward
  • POST /Sessions/{Id}/Playing to send media using PlayNow, PlayNext, or PlayLast

The target client still needs to support the relevant command, but the integration does not need to open a direct HTTP connection to the phone, television, or remote player.

This server-mediated model works much better for:

  • Home Assistant and smart-home integrations
  • Voice assistants and AI agents
  • Remote dashboards
  • Stream Deck and hardware controllers
  • Users with players behind mobile networks, NAT, or restrictive Wi-Fi
  • Accessibility tools

Requested behavior

Please expose a supported mechanism that allows an authenticated integration to:

  • Discover remotely connected player sessions and their supported commands
  • Send play, pause, resume, stop, next, previous, and seek commands
  • Optionally send a specific library item or play queue
  • Receive an acknowledgement or updated session state
  • Work without exposing the player’s local Companion port to the internet

This could be implemented as either:

  • PMS forwarding commands to its connected session, or
  • A documented, permission-scoped cloud player API based on the existing pubsub-player mechanism

Access could be restricted to the server owner, authorized home users, or dedicated API scopes.

I am not requesting unauthenticated access or direct exposure of mobile player ports. I am asking for a secure and officially supported way to control a session that Plex already knows is active.

Plex already has the session visibility and an internal cloud control mechanism. Exposing a supported, permission-scoped control API would make Plex much more integration-friendly.

good luck with that. They have all but deprecated the companion control system. It can still work on the old style apps but any of the newer apps they have removed that support and even the advertise as player which was part of the companion control. They took it out for some unknown reason, i personally used it for several apps i created that are now useless, so good luck getting them to add it back