Control
Status API
GET /api/status is optional feedback. Commands only require synchronous validation and queue
admission; callers do not need to read status or correlate it with a request.
The response is a fixed PlayerStatus object:
{
"state": "playing",
"source": "D:\\media\\main_loop.mp4",
"cue_position_sec": 0.0,
"position_sec": 12.45,
"duration_sec": 60.0,
"volume": 0.8,
"muted": false,
"loop": true,
"error": null
}All fields are always present. source, cue_position_sec, position_sec, duration_sec, and
error use null when unavailable. error is populated only for state=error; decoder metadata,
seekability, normalized progress, device identity, and timestamps remain internal or belong to
other diagnostic APIs.
| Field | Type | Description |
|---|---|---|
state | string | idle, loading, ready, playing, paused, ended, or error. |
source | string or null | Current media source. |
cue_position_sec | number or null | Cue point for the current media. |
position_sec | number or null | Current playback position. |
duration_sec | number or null | Duration when known. |
volume | number | 0.0–1.0. |
muted | boolean | Current mute state. |
loop | boolean | Current media loop policy. |
error | object or null | Normalized asynchronous playback error. |

