MBXHub REST API SDK
Version: 0.45 | Base URL: http://localhost:8080
API Categories
- Dashboard - Web remote control
- System - Status, hub settings
- Player - Playback control
- Now Playing - Current track
- Queue - Now playing list
- Library - Browse and search
- Playlists - Playlist CRUD
- Pending - Pending files
- Podcasts - Subscriptions
- Settings - MusicBee settings
- MusicBee App - App control
- MB Sync - Device sync
- ARiA - Input simulation
- RPC - Direct API access
Dashboard NEW in 0.45
The web dashboard provides a full-featured browser-based remote control for MusicBee. Server-side rendered HTML with CSS themes - no JavaScript required for core functionality.
Redirects to /dashboard
Full web dashboard with now playing, player controls, volume, ratings, shuffle toggle, and ARiA presets (if enabled).
Features:
- Album artwork display (base64 embedded)
- Track info (title, artist, album)
- Progress bar with live WebSocket updates
- Play/Pause, Stop, Previous, Next buttons
- Volume Up/Down, Mute toggle
- Love button and 5-star rating
- Shuffle/AutoDJ three-state toggle (Off, Shuffle, AutoDJ)
- Repeat mode toggle (cycles off → all → one)
- Theme switcher (Dark, Light, Midnight) - cookie persisted
- ARiA preset buttons (collapsible, when enabled)
- Connection indicator (logo turns green when WebSocket connected)
Simple HTML status page with link to dashboard.
Set theme (dark, light, midnight). Persisted via cookie.
All dashboard actions use POST-Redirect-GET pattern. After the action, redirects back to /dashboard with a status message.
| Endpoint | Action |
|---|---|
/dashboard/play | Play/Pause toggle |
/dashboard/stop | Stop playback |
/dashboard/next | Next track |
/dashboard/prev | Previous track |
/dashboard/volup | Volume +5% |
/dashboard/voldown | Volume -5% |
/dashboard/mute | Mute toggle |
/dashboard/shuffle | Enable shuffle (disables AutoDJ) |
/dashboard/shuffle-off | Turn off shuffle and AutoDJ |
/dashboard/autodj | Start AutoDJ |
/dashboard/repeat | Cycle repeat mode (off → all → one) |
/dashboard/love | Love toggle |
/dashboard/rate/{1-5} | Set star rating (click same to clear) |
/dashboard/aria/{preset} | Execute ARiA preset |
/dashboard/aria-expand | Expand ARiA presets section |
/dashboard/aria-collapse | Collapse ARiA presets section |
System Endpoints
Returns system status and enabled modules.
Health check endpoint.
Get or update hub configuration (ports, enabled modules).
Player Control
List available audio output devices and switch between them.
Open stream handles and update play/skip counts.
Now Playing
Returns current track info with full metadata.
Query params: ?field=TrackTitle or ?type=Bitrate
Returns album artwork as binary image or URL.
FFT spectrum and waveform data for visualizations.
Queue Management
Returns the now playing list with track metadata. Supports ?offset=0&limit=50
Query params: ?field=Artist or ?type=Duration
Library Browsing
Query library with ?query=, ?artist=, ?album=, ?genre=, ?offset=, ?limit=
Full-text search: ?q=search+term
Get/update file metadata, add files to library.
Find files by device IDs, get library changes since date.
Playlist Management
Pending Files
Files waiting to be processed/added to the library.
Query params: ?field=TrackTitle or ?type=Size
Podcasts
List podcast subscriptions. Query: ?query=
MusicBee Settings
Get all MusicBee settings overview.
Query params vary: ?field=, ?id=, ?codec=, etc.
MusicBee Application
MusicBee Device Sync
Control MusicBee's internal device synchronization.
Signal file sync start/end for device synchronization.
ARiA - Input Simulation
Simulate keyboard and mouse input to wake or control the host PC. Useful for remote wake scenarios where TMRemote needs to wake a sleeping/locked PC via simple HTTP calls.
ariaEnabled: true). Returns 403 FORBIDDEN when disabled.
Check if ARiA input simulation is enabled.
{
"success": true,
"data": {
"enabled": true,
"message": "ARiA input simulation is enabled"
}
}
Quick wake: moves mouse slightly and sends a harmless key (Shift) to wake a sleeping/locked PC.
POST /aria/wake
{ }
Response: { "success": true, "data": { "result": true } }
Send keyboard input using SendKeys format.
| Symbol | Meaning |
|---|---|
^ | Ctrl |
% | Alt |
+ | Shift |
# | Win (Windows key) |
{ENTER} | Enter key |
{ESC} | Escape key |
{F1}-{F12} | Function keys |
{WIN} | Windows key (standalone) |
POST /aria/send-keys
{ "keys": "^a" } // Ctrl+A
Response: { "success": true, "data": { "keys": "^a", "result": true } }
Move mouse to absolute coordinates or relative to current position.
// Absolute movement
POST /aria/mouse/move
{ "x": 100, "y": 100 }
// Relative movement
POST /aria/mouse/move
{ "dx": 10, "dy": 0 }
Response: { "success": true, "data": { "x": 100, "y": 100 } }
Click at current position or specified coordinates. Supports left, right, middle buttons.
// Click at current position
POST /aria/mouse/click
{ "button": "left" }
// Move and click
POST /aria/mouse/click
{ "x": 500, "y": 300, "button": "left" }
Response: { "success": true, "data": { "button": "left", "result": true } }
RPC Interface
Direct access to all 137 MusicBee API methods:
Invoke any MusicBee API method directly by name.
Example:
POST /rpc/Library_GetFileTag
Content-Type: application/json
{
"fileUrl": "C:\\Music\\song.mp3",
"field": "TrackTitle"
}
Method Categories
- Player_* - 44 playback control methods
- NowPlaying_* - 19 current track methods
- NowPlayingList_* - 20 queue methods
- Library_* - 25 library methods
- Playlist_* - 15 playlist methods
- Pending_* - 3 pending file methods
- Podcasts_* - 5 podcast methods
- Sync_* - 4 device sync methods
- Setting_* - 10 settings methods
- MB_* - 12 application methods
Error Handling
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
}
}
| Error Code | HTTP Status | Description |
|---|---|---|
| NOT_FOUND | 404 | Endpoint or resource not found |
| INVALID_REQUEST | 400 | Invalid parameters |
| ARIA_DISABLED | 403 | ARiA input simulation is disabled |
| METHOD_NOT_ALLOWED | 405 | Wrong HTTP method |
| INTERNAL_ERROR | 500 | Server error |
| SERVICE_UNAVAILABLE | 503 | Optional module not installed |