API coverage
See Features for what BeetstreamNext adds on top of the spec itself :)
BeetstreamNext implements essentially the entire Subsonic/OpenSubsonic REST API. The only unsupported endpoints are video-related:
Full endpoint-by-endpoint checklist
- addChatMessage
- changePassword
- createBookmark
- createInternetRadioStation
- createPlaylist
- createPodcastChannel
- createShare
- createUser
- deleteBookmark
- deleteInternetRadioStation
- deletePlaylist
- deletePodcastChannel
- deletePodcastEpisode
- deleteShare
- deleteUser
- download
- downloadPodcastEpisode
- findSonicPath
- getAlbum
- getAlbumInfo
- getAlbumInfo2
- getAlbumList
- getAlbumList2
- getArtist
- getArtistInfo
- getArtistInfo2
- getArtists
- getAvatar
- getBookmarks
- getCaptions
- getChatMessages
- getCoverArt
- getGenres
- getIndexes
- getInternetRadioStations
- getLicense
- getLyrics
- getLyricsBySongId
- getMusicDirectory
- getMusicFolders
- getNewestPodcasts
- getNowPlaying
- getOpenSubsonicExtensions
- getPlaylist
- getPlaylists
- getPlayQueue
- getPlayQueueByIndex
- getPodcastEpisode
- getPodcasts
- getRandomSongs
- getScanStatus
- getShares
- getSimilarSongs
- getSimilarSongs2
- getSong
- getSongsByGenre
- getSonicSimilarTracks
- getStarred
- getStarred2
- getTopSongs
- getTranscodeDecision
- getTranscodeStream
- getUser
- getUsers
- getVideoInfo
- getVideos
- hls
- jukeboxControl
- ping
- refreshPodcasts
- reportPlayback
- savePlayQueue
- savePlayQueueByIndex
- scrobble
- search
- search2
- search3
- setRating
- star
- startScan
- stream
- tokenInfo
- unstar
- updateInternetRadioStation
- updatePlaylist
- updateShare
- updateUser
Note: Following the reference Subsonic specification, error responses are returned with an HTTP 200 status. The actual outcome is in the response body’s
statusfield ("ok"or"failed", with an errorcode/messageon failure). Don’t rely on the HTTP status alone to detect a failed call.
Extensions
Alongside the base spec, BeetstreamNext implements every OpenSubsonic extension.
| Extension | Description |
|---|---|
apiKeyAuthentication | Authenticating with an API key alone, no password |
formPost | Accepting requests as application/x-www-form-urlencoded POST bodies |
getPodcastEpisode | Retrieving a single podcast episode’s metadata by ID |
indexBasedQueue | Setting/reading the play queue by index instead of only by ID |
playbackReport | Clients reporting their playback timeline back to the server |
songLyrics | Synchronized, multi-language lyrics, retrievable by song ID |
topSongsByArtistId | Retrieving an artist’s top songs by artist ID |
transcodeOffset | Starting a transcode from a given time offset |
transcoding | Clients making their own transcoding decisions and requesting transcoded streams directly |
sonicSimilarity | Acoustic similarity and playlist path-finding (see Library augmentation) |
Note: All these extensions are always advertised by the server except
sonicSimilarity, which only appears if an AudioMuse-AI instance is configured.
Authentication
Both authentication schemes from the spec are supported:
- API-key authentication (recommended): Always available.
- Legacy MD5-token / cleartext password authentication: For older clients. Can be enabled server-wide via
legacy_authif your client needs it.