Files
lms/SUBSONIC.md
T
2026-06-02 13:12:37 +02:00

81 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Subsonic API
The API version implemented is 1.16.0 and has been tested on _Android_ using _DSub_, _Subsonic Player_, _Symfonium_, _Tempo_, [_Tempus_](https://github.com/eddyizm/tempus) and _Ultrasonic_.
Folder navigation commands are supported. However, since _LMS_ does not store information for each folder, it is not possible to star/unstar folders considered as artists.
Given the API limitations of folder navigation commands, it is recommended to place all tracks of an album in the same folder and not to mix multiple albums in the same folder.
The Subsonic API is enabled by default.
## Jukebox support
The jukeboxcontrol subset of the API is implemented through the `jukeboxControl` endpoint. Only the administrator may execute these actions and the service can be
enabled or disabled with the `jukebox-audio-backend` configuration option in `lms.conf`. When the PulseAudio backend is selected, _LMS_ uses the normal systemwide environment variables (`PULSE_SERVER`, `PULSE_SINK`, `PULSE_SOURCE`, etc.) to determine where audio is sent.
__Note__: the jukebox play queue is kept entirely in memory by the service and is not persisted.
# OpenSubsonic API
OpenSubsonic is an initiative to patch and extend the legacy Subsonic API. You'll find more details in the [official documentation](https://opensubsonic.netlify.app/)
## Authentication
_LMS_ supports the [API Key Authentication](https://opensubsonic.netlify.app/docs/extensions/apikeyauth/) method. Each user has to generate their own API key on the settings page to use the Subsonic API.
By default, API keys can also be used as passwords, provided the `user` parameter matches the API key owner. To disable this fallback authentication method, set the following in `lms.conf`:
```
api-subsonic-support-user-password-auth = false;
```
__Note__: the token+salt authentication method is not supported; use the API key as the password instead (see above).
## Extra fields
The following extra fields are implemented:
* `Album` response:
* `artists`
* `discTitles`: discs with no subtitle are omitted
* `displayArtist`
* `explicitStatus`
* `genres`
* `isCompilation`
* `played`
* `mediaType`
* `moods`
* `musicBrainzId`
* `originalReleaseDate`
* `recordLabels`
* `releaseDate`
* `releaseTypes`
* `sortName`
* `userRating`
* `version`
* `Child` response:
* `albumArtists`
* `artists`
* `bitDepth`
* `channelCount`
* `comment`
* `contributors`
* `displayAlbumArtist`
* `displayArtist`
* `explicitStatus`
* `genres`
* `mediaType`
* `moods`
* `musicBrainzId`: note this is actually the recording MBID when this response refers to a song
* `played`
* `replayGain`
* `samplingRate`
* `Artist` response:
* `mediaType`
* `musicBrainzId`
* `sortName`
* `roles`
* `Playlist` response:
* `readonly`
## Supported extensions
* [API Key Authentication](https://opensubsonic.netlify.app/docs/extensions/apikeyauth/)
* [getPodcastEpisode](https://opensubsonic.netlify.app/docs/extensions/getpodcastepisode/)
* [HTTP form POST](https://opensubsonic.netlify.app/docs/extensions/formpost/)
* [Index based Queue](https://opensubsonic.netlify.app/docs/extensions/indexbasedqueue/)
* [Transcode offset](https://opensubsonic.netlify.app/docs/extensions/transcodeoffset/)
* [Song Lyrics](https://opensubsonic.netlify.app/docs/extensions/songlyrics/)
* [Transcoding](https://opensubsonic.netlify.app/docs/extensions/transcoding/)