Subsonic API
Subsonic API support
Ampache implements the OpenSubsonic API as well as a pure Subsonic API.
Each user can enable OpenSubsonic by disabling the Enable legacy Subsonic API responses for compatibility issues
preference on the Options page. (preferences.php?tab=options
)
Compatible Versions:
- Ampache7.6.0 => Separated OpenSubsonic docs & Subsonic API's 1.16.1
- Ampache7 => OpenSubsonic extensions & Subsonic 1.16.1
- Ampache6 => Subsonic 1.16.1
- Ampache5 => Subsonic 1.13.0
- Ampache4 => Subsonic 1.13.0
- Ampache3 => Subsonic 1.11.0
OpenSubsonic API extension
OpenSubsonic API is an open source initiative to create backward-compatible extensions for the original Subsonic API.
Ampache Subsonic support is being extended to support these changes
Extensions
- Add API Key Authentication
- Add getPodcastEpisode method
- Expanded subsonic-response
- Expanded subsonic-response error
- Support HTTP form POST
- Add songLyrics support
- Add Index based Queue
- Tentatively supported Transcode Offset (Parameter is supported but untested)
Api Key authentication
The key that must be passed to Ampache is the API Key generated for a specific user (none by default, only the administrator can generate one).
Then call the following URL (Where localhost/ampache is the location of your Ampache installation):
http://localhost/ampache/rest/ping.view?apiKey=API_KEY&v=1.2.0&c=DSub&f=json
NOTE Do not send a user (u) parameter or auth will be rejected.
The key can be also be passed to Ampache using SHA256(USER+KEY)
where KEY
is SHA256('APIKEY')
. Below is a PHP example
$user = 'username';
$key = hash('sha256', 'myapikey');
$passphrase = hash('sha256', $user . $key);
HTTP Header Authentication
Ampache supports sending your apiKey parameter to the server using a Bearer Token.
The apiKey
parameter does not need to be sent with your URL. We will check your header for a token first
GET http://localhost/ampache/rest/ping.view?v=1.2.0&c=DSub&f=jsonHTTP/1.1
Authorization: Bearer 000111112233334444455556667777788888899aaaaabbbbcccccdddeeeeeeff
Endpoint extension
- Edit search3 to allow empty
query
argument - Edit savePlayQueue to allow empty
id
argument - Add getOpenSubsonicExtensions
Partially implemented
- stream
- Support
timeOffset
(Parameter is supported but untested)
- Support
Subsonic Examples
You can get examples from an official Subsonic release as well as examples from Ampache.
These servers are using a Subsonic 1.16.1 compatible API version.