Subsonic API Compatibility
Are you a Subsonic client developer? Check out the API features supported by Navidrome
Supported Subsonic API endpoints
Navidrome is currently compatible with Subsonic API
v1.16.1, with some exceptions.
OpenSubsonic extensions are being constantly added. For an up to date list of
supported extensions, check here.
This is a (hopefully) up-to-date list of all Subsonic API endpoints implemented in Navidrome.
Check the “Notes” column for limitations/missing behavior. Also keep in mind these differences
between Navidrome and Subsonic:
- Navidrome will not implement any video related functionality, it is focused on Music only
- Right now, Navidrome only works with a single Music Library (Music Folder)
- There are currently no plans to support browse-by-folder. Endpoints for this functionality (Ex:
getIndexes
, getMusicDirectory
)
returns a simulated directory tree, using the format: /Artist/Album/01 - Song.mp3
.
- Navidrome does not mark songs as played by calls to
stream
, only when
scrobble
is called with submission=true
- IDs in Navidrome are always strings, normally MD5 hashes or UUIDs. This is important to
mention because, even though the Subsonic API
schema
specifies IDs as strings, some clients insist in converting IDs to integers
System |
|
ping |
|
getLicense |
Always valid ;) |
Album/Songs Lists |
|
getAlbumList |
|
getAlbumList2 |
|
getStarred |
|
getStarred2 |
|
getNowPlaying |
|
getRandomSongs |
|
getSongsByGenre |
|
Searching |
|
search2 |
Doesn’t support Lucene queries, only simple auto complete queries |
search3 |
Doesn’t support Lucene queries, only simple auto complete queries |
Playlists |
|
getPlaylists |
username parameter is not implemented |
getPlaylist |
|
createPlaylist |
|
updatePlaylist |
|
deletePlaylist |
|
Media Retrieval |
|
stream |
|
download |
Accepts ids for Songs, Albums, Artists and Playlists. Also accepts transcoding options similar to stream |
getCoverArt |
|
getLyrics |
Currently only works with embedded lyrics |
getAvatar |
If Gravatar is enabled and the user has an email, returns a redirect to their Gravatar. Or else returns a placeholder |
Media Annotation |
|
star |
|
unstar |
|
setRating |
|
scrobble |
|
Bookmarks |
|
getBookmarks |
|
createBookmark |
|
deleteBookmark |
|
getPlayQueue |
current is a string id, not int as it shows in the official Subsonic API documentation |
savePlayQueue |
|
Sharing (if EnableSharing is true ) |
|
getShares |
|
createShare |
|
updateShare |
|
deleteShare |
|
Internet radio |
|
getInternetRadioStations |
|
createInternetRadioStation |
|
updateInternetRadioStation |
|
deleteInternetRadioStation |
|
User Management |
|
getUser |
Hardcoded all roles. Ignores username parameter, and returns the user identified in the authentication |
getUsers |
Returns only the user identified in the authentication |
Media library scanning |
|
getScanStatus |
Also returns the extra fields lastScan and folderCount |
startScan |
Accepts an extra fullScan boolean param, to force a full scan |