Skip to main content
Version: v2.33.1

Server API

The muorg-server exposes a JSON REST API. All endpoints except the ones marked public require the API key:

Authorization: Bearer <your-api-key>

Base URL: http://<host>:<port> (default port 7700).

Public endpoints

MethodPathDescription
GET/api/healthLiveness check — returns Healthy
GET/stream/{id}Stream a track's audio. The id is the stream token issued by the tracks API.
MethodPathDescription
GET/api/rootsList configured library roots / folders
GET/api/tracksList tracks (paged, filterable)
GET/api/tracks/countTotal track count
GET/api/tracks/recently-addedRecently added tracks
GET/api/searchFull-text search across the library
GET/api/statsLibrary statistics
GET/api/play-history/recentRecently played tracks
GET/api/play-history/topTop played tracks

Tracks

MethodPathDescription
GET/api/tracks/{id}/coverAlbum art for a track
GET/api/tracks/{id}/metadataFull metadata
PUT/api/tracks/{id}/metadataUpdate metadata
GET/PUT/api/tracks/{id}/ratingRead / set rating
POST/api/tracks/{id}/playRecord a play
GET/api/tracks/{id}/backupBackup original file
POST/api/tracks/{id}/restoreRestore from backup
POST/api/tracks/{id}/renameRename the file on disk
GET/api/tracks/{id}/auto-tag-suggestionsMusicBrainz tag suggestions
GET/api/tracks/{id}/stream-tokenIssue a streaming token for /stream/{id}
POST/api/tracks/metadata/batchBatch metadata update

Playlists

MethodPathDescription
GET/POST/api/playlistsList / create playlists
GET/PUT/DELETE/api/playlists/{id}Read / update / delete a playlist
POST/api/playlists/orderReorder playlists
GET/POST/api/playlists/smartList / create smart playlists
GET/PUT/api/playlists/smart/{id}/rulesRead / update smart playlist rules
GET/api/playlists/smart/{id}/tracksTracks matching a smart playlist
GET/POST/api/playlists/{id}/tracksTracks in a playlist / add tracks
POST/api/playlists/{id}/tracks/orderReorder tracks in a playlist
DELETE/api/playlists/{id}/entries/{entry_id}Remove a track from a playlist

Admin

MethodPathDescription
POST/api/admin/rescanTrigger a library rescan
POST/api/admin/remove-folderRemove a library folder
POST/api/admin/backup-directoryRun a database backup
POST/api/admin/clear-cacheClear caches (e.g. cover cache)
GET/api/admin/healthHealth incl. dependency checks
GET/api/admin/metricsMetrics (Prometheus format)

Cast

MethodPathDescription
GET/api/cast/devicesDiscovered Chromecast devices
POST/api/cast/discovery/start · /stopStart / stop device discovery
POST/api/cast/play · /pause · /resume · /stop · /seekPlayback control
GET/POST/api/cast/statusCast session status
POST/api/cast/volumeSet cast volume

Misc

MethodPathDescription
POST/api/fetch-imageFetch / cache a remote image (used by clients for album art)

Streaming

Audio is streamed via GET /stream/{id}. Clients first request a stream token (GET /api/tracks/{id}/stream-token) and use the returned URL — this keeps the actual stream endpoint public while the token gates access. Streaming supports HTTP range requests, and transcodes on the fly when the client requests a different bitrate/format (see [transcoding]).