Media Control
Control media playback and system volume.
WebSocket for Media
For building media widgets or dashboards, we strongly recommend the WebSocket API instead of polling this endpoint.
Why WebSocket?
- Instant updates - Receive
media_updateevents only when something changes (track, volume, mute) - Bidirectional - Send play/pause/skip commands and receive feedback through the same connection
- Zero polling - No need to hammer the server every second to check for changes
- Efficient - Cntrl uses smart change detection, so you only get data when it matters
macOS Permissions Required
On macOS, the first time you use media control endpoints, the system will prompt for Media & Apple Music permissions. Grant access in System Settings → Privacy & Security → Media & Apple Music to enable media playback control.
The media endpoints allow you to control system-wide media playback, system volume, and retrieve information about what's currently playing.
Get Media Status
Returns information about the currently playing media, including system volume.
GET /api/media/status
Response:
{
"status": "active",
"title": "Song Name",
"artist": "Artist Name",
"album": "Album Name",
"source": "SpotifyAB.SpotifyMusic...",
"has_image": true,
"volume": 50,
"muted": false
}
Field Reference
| Field | Type | Description |
|---|---|---|
status |
string | Current status (active, stopped, or idle). |
title |
string | Current track title. |
artist |
string | Current artist name. |
album |
string | Current album name. |
source |
string | App ID of the media source (Win only). |
has_image |
boolean | If true, a thumbnail is available. |
volume |
number | Current system volume (0-100). |
muted |
boolean | True if system volume is muted. |
Status Note
On Windows, status returns `