Overview Complete API documentation and reference.
What is OpenSubsonic API? The OpenSubsonic API allows anyone to build their own programs using a compatible server, whether they’re on the web, the desktop, or on mobile devices. All the OpenSubsonic-compatible apps (clients and servers) are built using the OpenSubsonic API.
The OpenSubsonic API allows you to call methods that respond in REST style XML or JSON. Since most clients now only rely on JSON, this documentation only shows the JSON answers in the documentation.
This project is built upon the original Subsonic API .
See:
OpenSubsonic API for the API documentation.Goals for some of the goals of this project.Issues for some of the issues this project tries to solve over the original API.Participants OpenSubsonic is built with servers and clients trying to improve the global media center ecosystem by providing a common expandable API that can fit most of the needs of modern music apps.
Any server or client can join the organization and make proposals for OpenSubsonic . The only condition is that if (as a client) you request an API extension that is accepted, you engage yourself in implementing it in your client in a timely manner.
Servers Clients Goals The OpenSubsonic API has several goals, which include:
Being an open, collaboratively maintained specification. Ensuring security across all extensions. The API aims for consistent results across all servers, ensuring that every request produces the same outcome. The API definition must be clear and precise, eliminating any ambiguity about the expected results. Maintaining complete backwards compatibility with the existing Subsonic API. Offering piecewise optional implementation for servers and clients. Addressing Issues with the Subsonic API Some of the issues the OpenSubsonic API aims to address include:
Outdated and insecure authentication methods. Suboptimal versioning schema. Insufficient methods for expressing server functionality. Lack of an open and collaborative way to evolve the API. By extending the existing Subsonic API, the OpenSubsonic API hopes to create a more secure, flexible, and collaborative environment for the Subsonic ecosystem.
Join us Feel free to join the OpenSubsonic forum for discussions, suggestions, and questions.
1 - OpenSubsonic API API details and methods.
See API Reference for the basic API documentation. (Mandatory parameters, authentication, error handling, …)
Be sure to read OpenSubsonic changes to easily identify the changes brought by OpenSubsonic.
Starting with version 1.8.0 , the API provides methods for accessing the media collection organized according to ID3 tags, rather than file structure.
For instance, browsing through the collection using ID3 tags should use the getArtists
, getArtist
and getAlbum
methods. To browse using file structure you would use getIndexes
and getMusicDirectory
.
Correspondingly, there are two sets of methods for searching, starring and album lists. Refer to the method documentation for details.
API methods 2 - API Reference Common API documentation.
Parameters Please note that all methods take the following parameters:
Parameter Req. OpenS. Default Comment u
Yes **The username. p
Yes *The password, either in clear text or hex-encoded with a “enc:” prefix. Since 1.13.0 this should only be used for testing purposes. t
Yes *(Since 1.13.0 ) The authentication token computed as md5(password + salt) . See below for details. s
Yes *(Since 1.13.0 ) A random string (“salt”) used as input for computing the password hash. See below for details. apiKey
Yes **Yes [OS] An API key used for authentication v
Yes The protocol version implemented by the client, i.e., the version of the subsonic-rest-api.xsd schema used (see below). c
Yes A unique string identifying the client application. f
No xml Request data to be returned in this format. Supported values are “xml”, “json” (since 1.4.0 ) and “jsonp” (since 1.6.0 ). If using jsonp, specify name of javascript callback function using a callback
parameter.
*) Either p
or both t
and s
must be specified.
**) If apiKey
is specified, then none of p
, t
, s
, nor u
can be specified.
Remember to URL encode the request parameters. All methods (except those that return binary data) returns XML documents conforming to the subsonic-rest-api.xsd schema. The XML documents are encoded with UTF-8.
POST support OpenSubsonic add official support for application/x-www-form-urlencoded
POST to pass the argument.
Check that the server support the HTTP form POST extension before using it.
The arguments can then be passed in the POST body (Do not forget to URL encode both the keys and values), this allows to overcome the URL size limits when passing many parameters for playlists for example.
curl -v -X POST -H 'Content-Type: application/x-www-form-urlencoded' 'http://your-server/rest/ping.view' --data 'c=AwesomeClientName&v=1.12.0&f=json&u=joe&p=sesame'
Authentication If you are targeting API version 1.12.0 or earlier, authentication is performed by sending the password as clear text or hex-encoded. Examples:
http://your-server/rest/ping.view?u=joe&p=sesame&v=1.12.0&c=AwesomeClientName&f=json
http://your-server/rest/ping.view?u=joe&p=enc:736573616d65&v=1.12.0&c=AwesomeClientName&f=json
Starting with API version 1.13.0 , the recommended authentication scheme is to send an authentication token, calculated as a one-way salted hash of the password.
This involves two steps:
For each REST call, generate a random string called the salt . Send this as parameter s
.
Use a salt length of at least six characters. Calculate the authentication token as follows: token = md5(password + salt) . The md5() function takes a string and returns the 32-byte ASCII hexadecimal representation of the MD5 hash, using lower case characters for the hex values. The ‘+’ operator represents concatenation of the two strings. Treat the strings as UTF-8 encoded when calculating the hash. Send the result as parameter t
. For example: if the password is sesame and the random salt is c19b2d , then token = md5(“sesamec19b2d”) = 26719a1196d2a940705a59634eb18eab . The corresponding request URL then becomes:
http://your-server/rest/ping.view?u=joe&t=26719a1196d2a940705a59634eb18eab&s=c19b2d&v=1.13.0&c=AwesomeClientName&f=json
For servers that implement API Key authentication , the recommended authentication is to use an API key.
This is a token generated from the Subsonic server.
It must be passed in in as apiKey=<API key>
, and the u
parameter must not be provided .
Note that u
/p
may still be used by servers which are backed by LDAP/PAM/other authentication.
http://your-server/rest/ping.view?u=joe&apiKey=43504ab81e2bfae1a7691fe3fc738fdf55ada2757e36f14bcf13d&v=1.16.1&c=AwesomeClientName&f=json
Subsonic-response All API endpoint unless noted otherwise returns a subsonic-response
that indicate the result of the command and give some information about the server.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
See: subsonic-response
for the field details.
Error handling If a method fails it will return an error code and message in an error
element. In addition, the status
attribute of the subsonic-response
root element will be set to failed
instead of ok
. For example:
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "failed" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"error" : {
"code" : 40 ,
"message" : "Wrong username or password"
}
}
}
{
"subsonic-response" : {
"status" : "failed" ,
"version" : "1.16.1" ,
"error" : {
"code" : 40 ,
"message" : "Wrong username or password"
}
}
}
Field Type Req. OpenS. Details error
error
Yes The error details. code
int
Yes The error code. message
string
No A human readable error message.
The following error codes are defined:
Code Description 0 A generic error. 10 Required parameter is missing. 20 Incompatible Subsonic REST protocol version. Client must upgrade. 30 Incompatible Subsonic REST protocol version. Server must upgrade. 40 Wrong username or password. 41 Token authentication not supported for LDAP users. 42 Provided authentication mechanism not supported. 43 Multiple conflicting authentication mechanisms provided. 44 Invalid API key. 50 User is not authorized for the given operation. 60 The trial period for the Subsonic server is over. Please upgrade to Subsonic Premium. Visit subsonic.org for details. 70 The requested data was not found.
OpenSubsonic Servers must return error 41
if they do not support token-based authentication, 42
if they do not support any other authentication mechanism (password-based and/or API key-based), and 43
if multiple conflicting authentication parameters are passed in at the same time.
Note that even though the error text for 41
is Token authentication not supported for LDAP users.
, it actually implies that Token authentication is not supported for any reason.
To indicate differences between cases (where LDAP is used, versus no LDAP), servers may use the new helpUrl
field.
New fields are added, see error
3 - OpenSubsonic changes API changes in OpenSubsonic API vs the original Subsonic API.
Documentation In the documentation all changes from the original Subsonic API will be emphasized with the following warning:
OpenSubsonic Changes (Required or optional) related to OpenSubsonic.All endpoints or responses modified by the OpenSubsonic API will have [OS] indicator in the navigation menu.
Most servers and clients have dedicated pages to show what parts of OpenSubsonic they support. See Overview
OpenSubsonic expand the original API via 3 different ways:
Clarifications : Documentation improvement to ensure consistency in server answers or actions where doubt was possible.Extensions : Non breaking changes to the API to improve clients life. Like new returned field, or new parameters to existing functions.Additions : New endpoints added to provide functions that could not be provided via non breaking extensions.Required changes OpenSubsonic is built to be mostly optional to ease the burden on the servers who can’t support some features, while still allowing clients to precisely know what the servers support without having to guess.
To achieve this servers supporting OpenSubsonic have to support a very minimal subset of things.
Expand the subsonic-response
with the new mandatory fields. Implement the getOpenSubsonicExtensions
endpoint. This must be accessible without any authentication parameters Return error 41 (API Reference
) if they do not support Subsonic 1.13.0 new authentification system while advertising a version > 1.13.0 List of changes Clarifications List of clarifications
Non breaking changes List of non breaking changes
Additions List of additions
Extensions List of extension
4 - Extensions OpenSubsonic extensions documentation.
4.1 - API Key Authentication Add a new authentication mechanism involving only an API key, and no.
OpenSubsonic version : 1
OpenSubsonic extension name apiKeyAuthentication
(As returned by getOpenSubsonicExtensions
)
Version 1 This extension requires changes to the semantics of authentication.
Broadly, there are two general changes:
Required : A new authentication mechanism: apiKey
for query.Recommended: Deprecation of token/salt-based authentication. API keys An API key is any authentication token generated by an OpenSubsonic server that can be used to authenticate.
How this API key is generated by the server is implementation-specific: the server may provide a page where the user can configure one or more API keys, the server may automatically generate a API key, or any other variety of means.
The format of the API key is not specified, but it must be of reasonable length to fit into a query parameter (less than 2048 characters URL-encoded).
Servers which implement this extension must provide some mechanism for viewing active API key(s) and allow for revoking API keys.
Note that these API keys do not expire; as long as they are not revoked by the user, they are assumed to be valid.
Using a API key An API key is used as a query parameter apiKey=<api key>
.
When an API key is provided, the client must not provide a u
parameter; passing in u
must be treated as an error 43
.
It is recommended that servers which provide API-key authentication no longer support salt/token-based authentication.
If multiple conflicting authentication parameters are passed in, the server must return an error 43
, Multiple conflicting authentication mechanisms provided
If a server removes support for token-based authentication, it must return error 41
(Token authentication not supported for LDAP users.
).
If a server removes support for any other particular authentication mechanism, it must return an error 42
(Provided authentication mechanism not supported
).
In both cases, it is recommended that the server provide a meaningful url (configuration url, documentation, etc) in the helpUrl
to help clients instruct their users how to obtain an API key.
New error codes This extension introduces three new errors 42
, 43
and 44
, and adds a new field helpUrl
. See error
4.2 - getPodcastEpisode Add support for retrieving individual podcast episode metadata.
OpenSubsonic version : 1
OpenSubsonic extension name : getPodcastEpisode
(As returned by getOpenSubsonicExtensions
)
When a server support this extension this means that it support the getPodcastEpisode
endpoint getPodCastEpisode
Version 1 You can now retrieve the metadata for an individual podcast episode without having to pull an entire channel and searching the list of episodes.
4.3 - HTTP form POST Add support for POST request to the API (application/x-www-form-urlencoded).
OpenSubsonic version : 1
OpenSubsonic extension name formPost
(As returned by getOpenSubsonicExtensions
)
Version 1 This extension requires that the server support passing API arguments via POST with the arguments respecting the application/x-www-form-urlencoded
format.
See: API reference
application/x-www-form-urlencoded
: the keys and values are encoded in key-value tuples separated by ‘&’, with a ‘=’ between the key and the value. Non-alphanumeric characters in both keys and values are
URL encoded .
4.4 - Index based Queue Add’s support for specifying and querying the play queue with index.
OpenSubsonic version : 1
OpenSubsonic extension name indexBasedQueue
(As returned by getOpenSubsonicExtensions
)
When a server supports this extension, it provides two new endpoints: savePlayQueueByIndex
and getPlayQueueByIndex
.
Version 1 You can now save a play queue using an index instead of the current song ID, allowing for duplicate items in the queue.
Similarly, the queue can be retrieved with the current song index.
4.5 - Song Lyrics Add support for synchronized lyrics, multiple languages, and retrieval by song ID.
OpenSubsonic version : 1
OpenSubsonic extension name songLyrics
(As returned by getOpenSubsonicExtensions
)
Version 1 This extension requires the following endpoints:
4.6 - Template extension A template extension.
OpenSubsonic version : 1
OpenSubsonic extension name : template
(As returned by getOpenSubsonicExtensions
)
This is a template extension that allows servers to do marvelous stuff and clients to use that stuff.
Version 1 You can now bake cakes and brownies via the API!
This extension requires the following endpoints:
Version 2 You can now bake a lot of stuff via the API!
This extension requires the following endpoints:
4.7 - Transcode Offset Add support for start offset for transcoding.
OpenSubsonic version : 1
OpenSubsonic extension name : transcodeOffset
(As returned by getOpenSubsonicExtensions
)
When a server support this extension this means that it support the timeOffset
parameter of the stream
endpoint for music.
Version 1 You can now start transcoding at any position in the media, allowing seeking when transcoding on the clients!
This extension requires the support of the timeOffset
parameter of the stream
endpoint for music.
5 - Endpoints Low level endpoints documentation.
5.1 - addChatMessage Adds a message to the chat log.
http://your-server/rest/addChatMessage
Since 1.2.0
Adds a message to the chat log.
Parameters Parameter Req. OpenS. Default Comment message
Yes The chat message.
Example http://your-server/rest/addChatMessage.view?message=hello&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.2 - changePassword Changes the password of an existing user on the server.
http://your-server/rest/changePassword
Since 1.1.0
Changes the password of an existing user on the server, using the following parameters. You can only change your own password unless you have admin privileges.
Parameters Parameter Req. OpenS. Default Comment username
Yes The name of the user which should change its password. password
Yes The new password of the new user, either in clear text of hex-encoded (see above).
Example http://your-server/rest/changePassword.view?username=demo&password=password&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.3 - createBookmark Creates or updates a bookmark.
http://your-server/rest/createBookmark
Since 1.9.0
Creates or updates a bookmark (a position within a media file). Bookmarks are personal and not visible to other users.
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of the media file to bookmark. If a bookmark already exists for this file it will be overwritten. position
Yes The position (in milliseconds) within the media file. comment
No A user-defined comment.
Example http://your-server/rest/createBookmark.view?id=123&position=12&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.4 - createInternetRadioStation Adds a new internet radio station.
http://your-server/rest/createInternetRadioStation
Since 1.16.0
Adds a new internet radio station. Only users with admin privileges are allowed to call this method.
Parameters Parameter Req. OpenS. Default Comment streamUrl
Yes The stream URL for the station. name
Yes The user-defined name for the station. homepageUrl
No The home page URL for the station.
Example http://your-server/rest/createInternetRadioStation.view?streamUrl=url&name=radio&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.5 - createPlaylist Creates (or updates) a playlist.
http://your-server/rest/createPlaylist
Since 1.2.0
Creates (or updates) a playlist.
Parameters Parameter Req. OpenS. Default Comment playlistId
Yes (if updating)The playlist ID. name
Yes (if creating)The human-readable name of the playlist. songId
No ID of a song in the playlist. Use one songId
parameter for each song in the playlist.
Example http://your-server/rest/createPlaylist.view?name=abc&songId=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested playlist
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"playlist" : {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"playlist" : {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
Field Type Req. OpenS. Details playlist
playlist
Yes The created playlist
An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.6 - createPodcastChannel Adds a new Podcast channel.
http://your-server/rest/createPodcastChannel
Since 1.9.0
Adds a new Podcast channel. Note: The user must be authorized for Podcast administration (see Settings > Users > User is allowed to administrate Podcasts).
Parameters Parameter Req. OpenS. Default Comment url
Yes The URL of the Podcast to add.
Example http://your-server/rest/createPodcastChannel.view?url=url&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.7 - createShare Creates a public URL that can be used by anyone to stream music or video from the server.
http://your-server/rest/createShare
Since 1.6.0
Creates a public URL that can be used by anyone to stream music or video from the server. The URL is short and suitable for posting on Facebook, Twitter etc. Note: The user must be authorized to share (see Settings > Users > User is allowed to share files with anyone).
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of a song, album or video to share. Use one id
parameter for each entry to share. description
No A user-defined description that will be displayed to people visiting the shared media. expires
No The time at which the share expires. Given as milliseconds since 1970.
Example http://your-server/rest/createShare.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested shares
element on success. Which in turns contains a single share
element for the newly created share
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"shares" : {
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"shares" : {
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
}
}
Field Type Req. OpenS. Details shares
shares
Yes The created share
5.8 - createUser Creates a new user on the server.
http://your-server/rest/createUser
Since 1.1.0
Creates a new user on the server, using the following parameters:
Parameters Parameter Req. OpenS. Default Comment username
Yes The name of the new user. password
Yes The password of the new user, either in clear text of hex-encoded (see above). email
Yes The email address of the new user. ldapAuthenticated
No false Whether the user is authenicated in LDAP. adminRole
No false Whether the user is administrator. settingsRole
No true Whether the user is allowed to change personal settings and password. streamRole
No true Whether the user is allowed to play files. jukeboxRole
No false Whether the user is allowed to play files in jukebox mode. downloadRole
No false Whether the user is allowed to download files. uploadRole
No false Whether the user is allowed to upload files. playlistRole
No false Whether the user is allowed to create and delete playlists. Since 1.8.0, changing this role has no effect. coverArtRole
No false Whether the user is allowed to change cover art and tags. commentRole
No false Whether the user is allowed to create and edit comments and ratings. podcastRole
No false Whether the user is allowed to administrate Podcasts. shareRole
No false (Since 1.8.0 ) Whether the user is allowed to share files with anyone. videoConversionRole
No false (Since 1.15.0 ) Whether the user is allowed to start video conversions. musicFolderId
No All folders (Since 1.12.0 ) IDs of the music folders the user is allowed access to. Include the parameter once for each folder.
Example http://your-server/rest/createUser.view?username=test&password=test&email=test@test.com&name=radio&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.9 - deleteBookmark Creates or updates a bookmark.
http://your-server/rest/deleteBookmark
Since 1.9.0
Creates or updates a bookmark (a position within a media file). Bookmarks are personal and not visible to other users.
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of the media file for which to delete the bookmark. Other users’ bookmarks are not affected.
Example http://your-server/rest/deleteBookmark.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.10 - deleteInternetRadioStation Deletes an existing internet radio station.
http://your-server/rest/deleteInternetRadioStation
Since 1.16.0
Deletes an existing internet radio station. Only users with admin privileges are allowed to call this method.
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID for the station.
Example http://your-server/rest/deleteInternetRadioStation.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.11 - deletePlaylist Deletes a saved playlist.
http://your-server/rest/deletePlaylist
Since 1.2.0
Deletes a saved playlist.
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of the playlist to delete, as obtained by getPlaylists
.
Example http://your-server/rest/deletePlaylist.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.12 - deletePodcastChannel Deletes a Podcast channel.
http://your-server/rest/deletePodcastChannel
Since 1.9.0
Deletes a Podcast channel. Note: The user must be authorized for Podcast administration (see Settings > Users > User is allowed to administrate Podcasts).
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID of the Podcast channel to delete.
Example http://your-server/rest/deletePodcastChannel.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" :"ok" ,
"version" :"1.16.1" ,
}
}
5.13 - deletePodcastEpisode Deletes a Podcast episode.
http://your-server/rest/deletePodcastEpisode
Since 1.9.0
Deletes a Podcast episode. Note: The user must be authorized for Podcast administration (see Settings > Users > User is allowed to administrate Podcasts).
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID of the Podcast episode to delete.
Example http://your-server/rest/deletePodcastEpisode.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.14 - deleteShare Deletes an existing share.
http://your-server/rest/deleteShare
Since 1.6.0
Deletes an existing share.
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of the share to delete.
Example http://your-server/rest/deleteShare.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.15 - deleteUser Deletes an existing user on the server.
http://your-server/rest/deleteUser
Since 1.3.0
Deletes an existing user on the server, using the following parameters:
Parameters Parameter Req. OpenS. Default Comment username
Yes The name of the user to delete.
Example http://your-server/rest/deleteUser.view?username=test&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.16 - download Downloads a given media file.
http://your-server/rest/download
Since 1.0.0
Downloads a given media file. Similar to stream , but this method returns the original media data without transcoding or downsampling.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the file to stream. Obtained by calls to getMusicDirectory.
Example http://your-server/rest/download.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns binary data on success, or an XML document on error (in which case the HTTP content type will start with βtext/xmlβ).
5.17 - downloadPodcastEpisode Request the server to start downloading a given Podcast episode.
http://your-server/rest/downloadPodcastEpisode
Since 1.9.0
Request the server to start downloading a given Podcast episode. Note: The user must be authorized for Podcast administration (see Settings > Users > User is allowed to administrate Podcasts).
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID of the Podcast episode to download.
Example http://your-server/rest/downloadPodcastEpisode.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.18 - getAlbum Returns details for an album.
http://your-server/rest/getAlbum
Since 1.8.0
Returns details for an album, including a list of songs. This method organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment id
Yes The album ID.
Example http://your-server/rest/getAlbum.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested AlbumID3WithSongs
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"album" : {
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"song" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"album" : {
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"song" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
}
}
5.19 - getAlbumInfo Returns album info.
http://your-server/rest/getAlbumInfo
Since 1.14.0
Returns album notes, image URLs etc, using data from last.fm .
Parameters Parameter Req. OpenS. Default Comment id
Yes The album ID or song ID.
Example http://your-server/rest/getAlbumInfo.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested albumInfo
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"albumInfo" : {
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"albumInfo" : {
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
}
}
Field Type Req. OpenS. Details albumInfo
albumInfo
Yes The album info
5.20 - getAlbumInfo2 Returns album info.
http://your-server/rest/getAlbumInfo2
Since 1.14.0
Similar to getAlbumInfo
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment id
Yes The album ID or song ID.
Example http://your-server/rest/getAlbumInfo2.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested albumInfo
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"albumInfo" : {
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"albumInfo" : {
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
}
}
Field Type Req. OpenS. Details albumInfo
albumInfo
Yes The album info
5.21 - getAlbumList Returns a list of random, newest, highest rated etc. albums.
http://your-server/rest/getAlbumList
Since 1.2.0
Returns a list of random, newest, highest rated etc. albums. Similar to the album lists on the home page of the Subsonic web interface.
Parameters Parameter Req. OpenS. Default Comment type
Yes The list type. Must be one of the following: random
, newest
, highest
, frequent
, recent
. Since 1.8.0 you can also use alphabeticalByName
or alphabeticalByArtist
to page through all albums alphabetically, and starred
to retrieve starred albums. Since 1.10.1 you can use byYear
and byGenre
to list albums in a given year range or genre. size
No 10 The number of albums to return. Max 500. offset
No 0 The list offset. Useful if you for example want to page through the list of newest albums. fromYear
Yes (if type
is byYear
)The first year in the range. If fromYear > toYear
a reverse chronological list is returned. toYear
Yes (if type
is byYear
)The last year in the range. genre
Yes (if type
is byGenre
)The name of the genre, e.g., “Rock”. musicFolderId
No (Since 1.11.0 ) Only return albums in the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getAlbumList.view?type=random&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested albumList
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"albumList" : {
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"parent" : "100000019" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"isDir" : true ,
"coverArt" : "al-200000012" ,
"songCount" : 9 ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"albumList" : {
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"parent" : "100000019" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"isDir" : true ,
"coverArt" : "al-200000012" ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
}
}
Field Type Req. OpenS. Details albumList
albumList
Yes The album list
5.22 - getAlbumList2 Returns a list of random, newest, highest rated etc. albums.
http://your-server/rest/getAlbumList2
Since 1.8.0
Similar to getAlbumList
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment type
Yes The list type. Must be one of the following: random
, newest
, highest
, frequent
, recent
. Since 1.8.0 you can also use alphabeticalByName
or alphabeticalByArtist
to page through all albums alphabetically, and starred
to retrieve starred albums. Since 1.10.1 you can use byYear
and byGenre
to list albums in a given year range or genre. size
No 10 The number of albums to return. Max 500. offset
No 0 The list offset. Useful if you for example want to page through the list of newest albums. fromYear
Yes (if type
is byYear
)The first year in the range. If fromYear > toYear
a reverse chronological list is returned. toYear
Yes (if type
is byYear
)The last year in the range. genre
Yes (if type
is byGenre
)The name of the genre, e.g., “Rock”. musicFolderId
No (Since 1.11.0 ) Only return albums in the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getAlbumList2.view?type=random&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested albumList2
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"albumList2" : {
"album" : [
{
"id" : "200000021" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"coverArt" : "al-200000012" ,
"songCount" : 9 ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"albumList2" : {
"album" : [
{
"id" : "200000021" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"coverArt" : "al-200000012" ,
"songCount" : 9 ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
}
}
Field Type Req. OpenS. Details albumList2
albumList2
Yes The album list
5.23 - getArtist Returns details for an artist.
http://your-server/rest/getArtist
Since 1.8.0
Returns details for an artist, including a list of albums. This method organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment id
Yes The artist ID.
Example http://your-server/rest/getArtist.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested artist
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"artist" : {
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z" ,
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"sortName" : "Mello (2)" ,
"roles" : [
"artist" ,
"albumartist" ,
"composer"
],
"album" : [
{
"id" : "200000002" ,
"parent" : "100000002" ,
"album" : "Colorsmoke EP" ,
"title" : "Colorsmoke EP" ,
"name" : "Colorsmoke EP" ,
"isDir" : true ,
"coverArt" : "al-200000002" ,
"songCount" : 12 ,
"created" : "2021-02-23T04:24:48+00:00" ,
"duration" : 4568 ,
"playCount" : 1 ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"year" : 2007 ,
"genre" : "Electronic" ,
"userRating" : 5 ,
"averageRating" : 3 ,
"starred" : "2021-02-22T05:51:53Z"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"artist" : {
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z" ,
"album" : [
{
"id" : "200000002" ,
"parent" : "100000002" ,
"album" : "Colorsmoke EP" ,
"title" : "Colorsmoke EP" ,
"name" : "Colorsmoke EP" ,
"isDir" : true ,
"coverArt" : "al-200000002" ,
"songCount" : 12 ,
"created" : "2021-02-23T04:24:48+00:00" ,
"duration" : 4568 ,
"playCount" : 1 ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"year" : 2007 ,
"genre" : "Electronic" ,
"userRating" : 5 ,
"averageRating" : 3 ,
"starred" : "2021-02-22T05:51:53Z"
}
]
}
}
}
Field Type Req. OpenS. Details artist
artist
Yes The artist
5.24 - getArtistInfo Returns artist info.
http://your-server/rest/getArtistInfo
Since 1.11.0
Returns artist info with biography, image URLs and similar artists, using data from last.fm .
Parameters Parameter Req. OpenS. Default Comment id
Yes The artist, album or song ID. count
No 20 Max number of similar artists to return. includeNotPresent
No false Whether to return artists that are not present in the media library.
Example http://your-server/rest/getArtistInfo.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested artistInfo
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"artistInfo" : {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"artistInfo" : {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
}
}
Field Type Req. OpenS. Details artistInfo
artistInfo
Yes The album info
5.25 - getArtistInfo2 Returns artist info.
http://your-server/rest/getArtistInfo2
Since 1.11.0
Similar to getArtistInfo
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment id
Yes The artist, album or song ID. count
No 20 Max number of similar artists to return. includeNotPresent
No false Whether to return artists that are not present in the media library.
Example http://your-server/rest/getArtistInfo2.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested artistInfo2
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"artistInfo2" : {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"artistInfo2" : {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
}
}
Field Type Req. OpenS. Details artistInfo2
artistInfo2
Yes The album info
5.26 - getArtists Returns all artists.
http://your-server/rest/getArtists
Since 1.8.0
Similar to getIndexes
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment musicFolderId
No If specified, only return artists in the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getArtists.view?&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested artists
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"artists" : {
"ignoredArticles" : "The An A Die Das Ein Eine Les Le La" ,
"index" : [
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
},
{
"name" : "I" ,
"artist" : [
{
"id" : "100000013" ,
"name" : "IOK-1" ,
"coverArt" : "ar-100000013" ,
"albumCount" : 1
}
]
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"artists" : {
"ignoredArticles" : "The An A Die Das Ein Eine Les Le La" ,
"index" : [
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
},
{
"name" : "I" ,
"artist" : [
{
"id" : "100000013" ,
"name" : "IOK-1" ,
"coverArt" : "ar-100000013" ,
"albumCount" : 1
}
]
}
]
}
}
}
Field Type Req. OpenS. Details artists
artists
Yes The artist list
5.27 - getAvatar Returns the avatar (personal image) for a user.
http://your-server/rest/getAvatar
Since 1.8.0
Returns the avatar (personal image) for a user.
Parameters Parameter Req. OpenS. Default Comment username
Yes The user in question..
Example http://your-server/rest/getAvatar.view?username=test&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns the avatar image in binary form on success, or an XML document on error (in which case the HTTP content type will start with βtext/xmlβ).
5.28 - getBookmarks Returns all bookmarks for this user.
http://your-server/rest/getBookmarks
Since 1.9.0
Returns all bookmarks for this user. A bookmark is a position within a certain media file.
Parameters Takes no extra parameters.
Example http://your-server/rest/getBookmarks.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested bookmarks
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"bookmarks" : {
"bookmark" : [
{
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
},
{
"entry" : {
"id" : "2b42782333450d02b177823e729664af" ,
"parent" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"isDir" : false ,
"title" : "Ill with the Skills" ,
"album" : "First Words" ,
"artist" : "The Polish Ambassador" ,
"track" : 17 ,
"year" : 2014 ,
"coverArt" : "mf-2b42782333450d02b177823e729664af_641edeb3" ,
"size" : 6219581 ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : 255 ,
"bitRate" : 194 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Polish Ambassador/First Words/17 - Ill with the Skills.mp3" ,
"playCount" : 1 ,
"played" : "2023-03-15T15:23:37Z" ,
"created" : "2023-03-25T11:44:51Z" ,
"albumId" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"artistId" : "64e1f796b283545d329cdf6a31a31dbe" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 7000
},
"position" : 7000 ,
"username" : "demo" ,
"comment" : "playSub bookmark" ,
"created" : "2023-03-25T11:44:51Z" ,
"changed" : "2023-03-25T11:44:51Z"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"bookmarks" : {
"bookmark" : [
{
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
},
{
"entry" : {
"id" : "2b42782333450d02b177823e729664af" ,
"parent" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"isDir" : false ,
"title" : "Ill with the Skills" ,
"album" : "First Words" ,
"artist" : "The Polish Ambassador" ,
"track" : 17 ,
"year" : 2014 ,
"coverArt" : "mf-2b42782333450d02b177823e729664af_641edeb3" ,
"size" : 6219581 ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : 255 ,
"bitRate" : 194 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Polish Ambassador/First Words/17 - Ill with the Skills.mp3" ,
"playCount" : 1 ,
"played" : "2023-03-15T15:23:37Z" ,
"created" : "2023-03-25T11:44:51Z" ,
"albumId" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"artistId" : "64e1f796b283545d329cdf6a31a31dbe" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 7000
},
"position" : 7000 ,
"username" : "demo" ,
"comment" : "playSub bookmark" ,
"created" : "2023-03-25T11:44:51Z" ,
"changed" : "2023-03-25T11:44:51Z"
}
]
}
}
}
Field Type Req. OpenS. Details bookmarks
bookmarks
Yes The bookmarks
5.29 - getCaptions Returns captions (subtitles) for a video.
http://your-server/rest/getCaptions
Since 1.14.0
Returns captions (subtitles) for a video. Use getVideoInfo
to get a list of available captions.
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID of the video. format
No Preferred captions format (“srt” or “vtt”).
Example http://your-server/rest/getCaptions.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns the raw video captions.
5.30 - getChatMessages Returns the current visible (non-expired) chat messages.
http://your-server/rest/getChatMessages
Since 1.2.0
Returns the current visible (non-expired) chat messages.
Parameters Parameter Req. OpenS. Default Comment since
No Only return messages newer than this time (in millis since Jan 1 1970).
Example http://your-server/rest/getChatMessages.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested chatMessages
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"chatMessages" : {
"chatMessage" : [
{
"username" : "admin" ,
"time" : 1678935707000 ,
"message" : "Api Script Testing"
},
{
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"chatMessages" : {
"chatMessage" : [
{
"username" : "admin" ,
"time" : 1678935707000 ,
"message" : "Api Script Testing"
},
{
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
]
}
}
}
Field Type Req. OpenS. Details chatMessages
chatMessages
Yes The message list
5.31 - getCoverArt Returns a cover art image.
http://your-server/rest/getCoverArt
Since 1.0.0
Returns a cover art image.
Parameters Parameter Req. OpenS. Default Comment id
Yes The coverArt ID. Returned by most entities likes Child
or AlbumID3
size
No If specified, scale image to this size.
Example http://your-server/rest/getCoverArt.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns binary data on success, or an XML document on error (in which case the HTTP content type will start with βtext/xmlβ).
5.32 - getGenres Returns all genres.
http://your-server/rest/getGenres
Since 1.9.0
Returns all genres.
Parameters Takes no extra parameters.
Example http://your-server/rest/getGenres.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested genres
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"genres" : {
"genre" : [
{
"songCount" : 1 ,
"albumCount" : 1 ,
"value" : "Punk"
},
{
"songCount" : 4 ,
"albumCount" : 1 ,
"value" : "Dark Ambient"
},
{
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Electronica"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Dance"
},
{
"songCount" : 12 ,
"albumCount" : 1 ,
"value" : "Electronic"
},
{
"songCount" : 20 ,
"albumCount" : 1 ,
"value" : "Hip-Hop"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"genres" : {
"genre" : [
{
"songCount" : 1 ,
"albumCount" : 1 ,
"value" : "Punk"
},
{
"songCount" : 4 ,
"albumCount" : 1 ,
"value" : "Dark Ambient"
},
{
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Electronica"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Dance"
},
{
"songCount" : 12 ,
"albumCount" : 1 ,
"value" : "Electronic"
},
{
"songCount" : 20 ,
"albumCount" : 1 ,
"value" : "Hip-Hop"
}
]
}
}
}
Field Type Req. OpenS. Details genres
genres
Yes The genre list
5.33 - getIndexes Returns an indexed structure of all artists.
http://your-server/rest/getIndexes
Since 1.0.0
Returns an indexed structure of all artists.
Parameters Parameter Req. OpenS. Default Comment musicFolderId
No If specified, only return artists in the music folder with the given ID. See getMusicFolders
. ifModifiedSince
No If specified, only return a result if the artist collection has changed since the given time (in milliseconds since 1 Jan 1970).
Example http://your-server/rest/getIndexes.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested indexes
element on success.
Example :
OpenSubsonic
OpenSubsonic (XML)
Subsonic (JSON)
Subsonic (XML) {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"indexes" : {
"shortcut" : [
{
"id" : "11" ,
"name" : "Audio books"
},
{
"id" : "10" ,
"name" : "Podcasts"
}
],
"index" : [
{
"artist" : [
{
"id" : "1" ,
"name" : "ABBA"
},
{
"id" : "2" ,
"name" : "Alanis Morisette"
},
{
"id" : "3" ,
"name" : "Alphaville" ,
"starred" : "2013-11-02T12:30:00"
}
],
"name" : "A"
},
{
"artist" : {
"name" : "Bob Dylan" ,
"id" : "4"
},
"name" : "B"
}
],
"child" : [
{
"id" : "111" ,
"parent" : "11" ,
"title" : "Dancing Queen" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "24" ,
"size" : "8421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "146" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Dancing Queen.mp3"
},
{
"id" : "112" ,
"parent" : "11" ,
"title" : "Money, Money, Money" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "25" ,
"size" : "4910028" ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"transcodedContentType" : "audio/mpeg" ,
"transcodedSuffix" : "mp3" ,
"duration" : "208" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Money, Money, Money.mp3"
}
],
"lastModified" : "237462836472342" ,
"ignoredArticles" : "The El La Los Las Le Les"
}
}
}
<subsonic-response status= "ok" version= "1.16.1" type= "AwesomeServerName" serverVersion= "0.1.3 (tag)" openSubsonic= "true" >
<indexes lastModified= "237462836472342" ignoredArticles= "The El La Los Las Le Les" >
<shortcut id= "11" name= "Audio books" />
<shortcut id= "10" name= "Podcasts" />
<index name= "A" >
<artist id= "1" name= "ABBA" />
<artist id= "2" name= "Alanis Morisette" />
<artist id= "3" name= "Alphaville" starred= "2013-11-02T12:30:00" />
</index>
<index name= "B" >
<artist name= "Bob Dylan" id= "4" />
</index>
<child id= "111" parent= "11" title= "Dancing Queen" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "24" size= "8421341" contentType= "audio/mpeg" suffix= "mp3" duration= "146" bitRate= "128" path= "ABBA/Arrival/Dancing Queen.mp3" />
<child id= "112" parent= "11" title= "Money, Money, Money" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "25" size= "4910028" contentType= "audio/flac" suffix= "flac" transcodedContentType= "audio/mpeg" transcodedSuffix= "mp3" duration= "208" bitRate= "128" path= "ABBA/Arrival/Money, Money, Money.mp3" />
</indexes>
</subsonic-response>
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"indexes" : {
"shortcut" : [
{
"id" : "11" ,
"name" : "Audio books"
},
{
"id" : "10" ,
"name" : "Podcasts"
}
],
"index" : [
{
"artist" : [
{
"id" : "1" ,
"name" : "ABBA"
},
{
"id" : "2" ,
"name" : "Alanis Morisette"
},
{
"id" : "3" ,
"name" : "Alphaville" ,
"starred" : "2013-11-02T12:30:00"
}
],
"name" : "A"
},
{
"artist" : {
"name" : "Bob Dylan" ,
"id" : "4"
},
"name" : "B"
}
],
"child" : [
{
"id" : "111" ,
"parent" : "11" ,
"title" : "Dancing Queen" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "24" ,
"size" : "8421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "146" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Dancing Queen.mp3"
},
{
"id" : "112" ,
"parent" : "11" ,
"title" : "Money, Money, Money" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "25" ,
"size" : "4910028" ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"transcodedContentType" : "audio/mpeg" ,
"transcodedSuffix" : "mp3" ,
"duration" : "208" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Money, Money, Money.mp3"
}
],
"lastModified" : "237462836472342" ,
"ignoredArticles" : "The El La Los Las Le Les"
}
}
}
<subsonic-response status= "ok" version= "1.16.1" type= "AwesomeServerName" >
<indexes lastModified= "237462836472342" ignoredArticles= "The El La Los Las Le Les" >
<shortcut id= "11" name= "Audio books" />
<shortcut id= "10" name= "Podcasts" />
<index name= "A" >
<artist id= "1" name= "ABBA" />
<artist id= "2" name= "Alanis Morisette" />
<artist id= "3" name= "Alphaville" starred= "2013-11-02T12:30:00" />
</index>
<index name= "B" >
<artist name= "Bob Dylan" id= "4" />
</index>
<child id= "111" parent= "11" title= "Dancing Queen" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "24" size= "8421341" contentType= "audio/mpeg" suffix= "mp3" duration= "146" bitRate= "128" path= "ABBA/Arrival/Dancing Queen.mp3" />
<child id= "112" parent= "11" title= "Money, Money, Money" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "25" size= "4910028" contentType= "audio/flac" suffix= "flac" transcodedContentType= "audio/mpeg" transcodedSuffix= "mp3" duration= "208" bitRate= "128" path= "ABBA/Arrival/Money, Money, Money.mp3" />
</indexes>
</subsonic-response>
Field Type Req. OpenS. Details indexes
indexes
Yes The indexed artist list
5.34 - getInternetRadioStations Returns all internet radio stations.
http://your-server/rest/getInternetRadioStations
Since 1.9.0
Returns all internet radio stations. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/getInternetRadioStations.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested internetRadioStations
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"internetRadioStations" : {
"internetRadioStation" : [
{
"id" : "1" ,
"name" : "HBR1.com - Dream Factory" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/ambient.aac" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "3" ,
"name" : "4ZZZ Community Radio" ,
"streamUrl" : "https://stream.4zzz.org.au:9200/4zzz" ,
"homepageUrl" : "https://4zzzfm.org.au"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"internetRadioStations" : {
"internetRadioStation" : [
{
"id" : "1" ,
"name" : "HBR1.com - Dream Factory" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/ambient.aac" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "3" ,
"name" : "4ZZZ Community Radio" ,
"streamUrl" : "https://stream.4zzz.org.au:9200/4zzz" ,
"homepageUrl" : "https://4zzzfm.org.au"
}
]
}
}
}
5.35 - getLicense Get details about the software license.
http://your-server/rest/getLicense
Since 1.0.0
Get details about the software license.
Parameters Takes no extra parameters.
Example http://your-server/rest/getLicense.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested license
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"license" : {
"valid" : true ,
"email" : "demo@demo.org" ,
"licenseExpires" : "2017-04-11T10:42:50.842Z" ,
"trialExpires" : "2017-04-11T10:42:50.842Z"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"license" : {
"valid" : true ,
"email" : "demo@demo.org" ,
"licenseExpires" : "2017-04-11T10:42:50.842Z" ,
"trialExpires" : "2017-04-11T10:42:50.842Z"
}
}
}
Field Type Req. OpenS. Details license
license
Yes The status of the license
5.36 - getLyrics Searches for and returns lyrics for a given song.
http://your-server/rest/getLyrics
Since 1.2.0
Searches for and returns lyrics for a given song.
Parameters Parameter Req. OpenS. Default Comment artist
No The artist name. title
No The song title.
Example http://your-server/rest/getLyrics.view?artist=toto&title=tata&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested lyrics
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"lyrics" : {
"artist" : "Metallica" ,
"title" : "Blitzkrieg" ,
"value" : "Let us have peace, let us have life\n\nLet us escape the cruel night\n\nLet us have time, let the sun shine\n\nLet us beware the deadly sign\n\n\n\nThe day is coming\n\nArmageddon's near\n\nInferno's coming\n\nCan we survive the blitzkrieg?\n\nThe blitzkrieg\n\nThe blitzkrieg\n\n\n\nSave us from fate, save us from hate\n\nSave ourselves before it's too late\n\nCome to our need, hear our plea\n\nSave ourselves before the earth bleeds\n\n\n\nThe day is dawning\n\nThe time is near\n\nAliens calling\n\nCan we survive the blitzkrieg?"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"lyrics" : {
"artist" : "Metallica" ,
"title" : "Blitzkrieg" ,
"value" : "Let us have peace, let us have life\n\nLet us escape the cruel night\n\nLet us have time, let the sun shine\n\nLet us beware the deadly sign\n\n\n\nThe day is coming\n\nArmageddon's near\n\nInferno's coming\n\nCan we survive the blitzkrieg?\n\nThe blitzkrieg\n\nThe blitzkrieg\n\n\n\nSave us from fate, save us from hate\n\nSave ourselves before it's too late\n\nCome to our need, hear our plea\n\nSave ourselves before the earth bleeds\n\n\n\nThe day is dawning\n\nThe time is near\n\nAliens calling\n\nCan we survive the blitzkrieg?"
}
}
}
Field Type Req. OpenS. Details lyrics
lyrics
Yes The lyrics
5.37 - getLyricsBySongId Add support for synchronized lyrics, multiple languages, and retrieval by song ID.
OpenSubsonic version : 1
OpenSubsonic extension name songLyrics
(As returned by getOpenSubsonicExtensions
)
Retrieves all structured lyrics from the server for a given song.
The lyrics can come from embedded tags (SYLT
/USLT
), LRC file/text file, or any other external source.
http://your-server/rest/getLyricsBySongId
Parameters Parameter Req. OpenS. Default Comment id
Yes Yes The track ID.
Special notes about the lang field Ideally, the server will return lang
as an ISO 639 (2/3) code.
However, tagged files and external lyrics can come with any value as a potential language code, so clients should take care when displaying lang
.
Furthermore, there is special behavior for the value xxx
.
While not an ISO code, it is commonly used by taggers and other parsing software.
Clients should treat xxx
as not having a specified language (equivalent to the und
code).
Example http://your-server/rest/getLyricsBySongId.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested lyricsList
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"lyricsList" : {
"structuredLyrics" : [
{
"displayArtist" : "Muse" ,
"displayTitle" : "Hysteria" ,
"lang" : "eng" ,
"offset" : -100 ,
"synced" : true ,
"line" : [
{
"start" : 0 ,
"value" : "It's bugging me"
},
{
"start" : 2000 ,
"value" : "Grating me"
},
{
"start" : 3001 ,
"value" : "And twisting me around..."
}
]
},
{
"displayArtist" : "Muse" ,
"displayTitle" : "Hysteria" ,
"lang" : "und" ,
"offset" : 100 ,
"synced" : false ,
"line" : [
{
"value" : "It's bugging me"
},
{
"value" : "Grating me"
},
{
"value" : "And twisting me around..."
}
]
}
]
}
}
}
<subsonic-response status= "ok" version= "1.16.1" type= "AwesomeServerName" serverVersion= "0.1.3 (tag)" openSubsonic= "true" >
<lyricsList>
<structuredLyrics displayArtist= "Muse" displayTitle= "Hysteria" lang= "en" offset= "-100" synced= "true" >
<line start= "0" > It's bugging me</line>
<line start= "2000" > Grating me</line>
<line start= "3001" > And twisting me around...</line>
</structuredLyrics>
<structuredLyrics displayArtist= "Muse" displayTitle= "Hysteria" lang= "en" offset= "100" synced= "false" >
<line> It's bugging me</line>
<line> Grating me</line>
<line> And twisting me around...</line>
</structuredLyrics>
</lyricsList>
</subsonic-response>
Field Type Req. OpenS. Details lyricsList
lyricsList
Yes Yes List of structured lyrics
5.38 - getMusicDirectory Returns a listing of all files in a music directory.
http://your-server/rest/getMusicDirectory
Since 1.0.0
Returns a listing of all files in a music directory. Typically used to get list of albums for an artist, or list of songs for an album.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the music folder. Obtained by calls to getIndexes or getMusicDirectory.
Example http://your-server/rest/getMusicDirectory.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested directory
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"directory" : {
"id" : "1" ,
"name" : "music" ,
"child" : [
{
"id" : "100000016" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "CARNΓN" ,
"artist" : "CARNΓN" ,
"coverArt" : "ar-100000016"
},
{
"id" : "100000027" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "Chi.Otic" ,
"artist" : "Chi.Otic" ,
"coverArt" : "ar-100000027"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"directory" : {
"id" : "1" ,
"name" : "music" ,
"child" : [
{
"id" : "100000016" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "CARNΓN" ,
"artist" : "CARNΓN" ,
"coverArt" : "ar-100000016"
},
{
"id" : "100000027" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "Chi.Otic" ,
"artist" : "Chi.Otic" ,
"coverArt" : "ar-100000027"
}
]
}
}
}
Field Type Req. OpenS. Details directory
directory
Yes The directory content
5.39 - getMusicFolders Returns all configured top-level music folders.
http://your-server/rest/getMusicFolders
Since 1.0.0
Returns all configured top-level music folders. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/getMusicFolders.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested musicFolders
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"musicFolders" : {
"musicFolder" : [
{
"id" : 1 ,
"name" : "music"
},
{
"id" : 4 ,
"name" : "upload"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"musicFolders" : {
"musicFolder" : [
{
"id" : 1 ,
"name" : "music"
},
{
"id" : 4 ,
"name" : "upload"
}
]
}
}
}
Field Type Req. OpenS. Details musicFolders
musicFolders
Yes The directory content
5.40 - getNewestPodcasts Returns the most recently published Podcast episodes.
http://your-server/rest/getNewestPodcasts
Since 1.13.0
Returns the most recently published Podcast episodes.
Parameters Parameter Req. OpenS. Default Comment count
No 20 The maximum number of episodes to return.
Example http://your-server/rest/getNewestPodcasts.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested newestPodcasts
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"newestPodcasts" : {
"episode" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"newestPodcasts" : {
"episode" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
]
}
}
}
5.41 - getNowPlaying Returns what is currently being played by all users.
http://your-server/rest/getNowPlaying
Since 1.0.0
Returns what is currently being played by all users. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/getNowPlaying.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested nowPlaying
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"nowPlaying" : {
"entry" : [
{
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"nowPlaying" : {
"entry" : [
{
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
]
}
}
}
Field Type Req. OpenS. Details nowPlaying
nowPlaying
Yes The now playing content
5.42 - getOpenSubsonicExtensions List the OpenSubsonic extensions supported by this server.
http://your-server/rest/getOpenSubsonicExtensions
OpenSubsonic version 1
List the OpenSubsonic extensions supported by this server.
Parameters Takes no extra parameters.
Note : Unlike all other APIs getOpenSubsonicExtensions
must be publicly accessible.
Example http://your-server/rest/getOpenSubsonicExtensions.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested openSubsonicExtensions
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"openSubsonicExtensions" : [
{
"name" : "template" ,
"versions" : [
1 ,
2
]
},
{
"name" : "transcodeOffset" ,
"versions" : [
1
]
}
]
}
}
Field Type Req. OpenS. Details openSubsonicExtensions
An array of openSubsonicExtension
Yes The list of supported extensions
OpenSubsonic This is a new endpoint.5.43 - getPlaylist Returns a listing of files in a saved playlist.
http://your-server/rest/getPlaylist
Since 1.0.0
Returns a listing of files in a saved playlist.
Parameters Parameter Req. OpenS. Default Comment id
yes ID of the playlist to return, as obtained by getPlaylists
.
Example http://your-server/rest/getPlaylist.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested playlist
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"playlist" : {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"playlist" : {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
Field Type Req. OpenS. Details playlist
playlist
Yes The created playlist
5.44 - getPlaylists Returns all playlists a user is allowed to play.
http://your-server/rest/getPlaylists
Since 1.0.0
Returns all playlists a user is allowed to play.
Parameters Parameter Req. OpenS. Default Comment username
no (Since 1.8.0 ) If specified, return playlists for this user rather than for the authenticated user. The authenticated user must have admin role if this parameter is used.
Example http://your-server/rest/getPlaylists.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested playlists
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"playlists" : {
"playlist" : [
{
"id" : "800000003" ,
"name" : "random - admin - private (admin)" ,
"owner" : "admin" ,
"public" : false ,
"created" : "2021-02-23T04:35:38+00:00" ,
"changed" : "2021-02-23T04:35:38+00:00" ,
"songCount" : 43 ,
"duration" : 17875
},
{
"id" : "800000002" ,
"name" : "random - admin - public (admin)" ,
"owner" : "admin" ,
"public" : true ,
"created" : "2021-02-23T04:34:56+00:00" ,
"changed" : "2021-02-23T04:34:56+00:00" ,
"songCount" : 43 ,
"duration" : 17786
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"playlists" : {
"playlist" : [
{
"id" : "800000003" ,
"name" : "random - admin - private (admin)" ,
"owner" : "admin" ,
"public" : false ,
"created" : "2021-02-23T04:35:38+00:00" ,
"changed" : "2021-02-23T04:35:38+00:00" ,
"songCount" : 43 ,
"duration" : 17875
},
{
"id" : "800000002" ,
"name" : "random - admin - public (admin)" ,
"owner" : "admin" ,
"public" : true ,
"created" : "2021-02-23T04:34:56+00:00" ,
"changed" : "2021-02-23T04:34:56+00:00" ,
"songCount" : 43 ,
"duration" : 17786
}
]
}
}
}
Field Type Req. OpenS. Details playlists
playlists
Yes The playlists
5.45 - getPlayQueue Returns the state of the play queue for this user.
http://your-server/rest/getPlayQueue
Since 1.12.0
Returns the state of the play queue for this user (as set by savePlayQueue
). This includes the tracks in the play queue, the currently playing track, and the position within this track. Typically used to allow a user to move between different clients/apps while retaining the same play queue (for instance when listening to an audio book).
Parameters Takes no extra parameters.
Example http://your-server/rest/getPlayQueue.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested playQueue
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"playQueue" : {
"current" : "1234" ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"playQueue" : {
"current" : "1234" ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
}
}
Field Type Req. OpenS. Details playQueue
playQueue
Yes The play queue
5.46 - getPlayQueueByIndex Returns the state of the play queue for this user.
http://your-server/rest/getPlayQueueByIndex
Since 1.12.0
Returns the state of the play queue for this user (as set by savePlayQueue
or savePlayQueueByIndex
). This includes the tracks in the play queue, the currently playing track index (0-based), and the position within this track. Typically used to allow a user to move between different clients/apps while retaining the same play queue (for instance when listening to an audio book).
Parameters Takes no extra parameters.
Example http://your-server/rest/getPlayQueueByIndex.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested playQueue
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"playQueueByIndex" : {
"currentIndex" : 1 ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
}
}
5.47 - getPodcastEpisode Returns details for a podcast episode.
OpenSubsonic version : 1
OpenSubsonic extension name getPodcastEpisode
(As returned by getOpenSubsonicExtensions
)
http://your-server/rest/getPodcastEpisode
Returns details for a podcast episode.
Parameters Parameter Req. OpenS. Default Comment id
Yes Yes The podcast episode ID.
Example http://your-server/rest/getPodcastEpisode.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested podcastEpisode
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"podcastEpisode" : {
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
}
}
Field Type Req. OpenS. Details podcastEspisode
podcastEpisode
Yes The podcast episode
5.48 - getPodcasts Returns all Podcast channels the server subscribes to, and (optionally) their episodes.
http://your-server/rest/getPodcasts
Since 1.6.0
Returns all Podcast channels the server subscribes to, and (optionally) their episodes. This method can also be used to return details for only one channel - refer to the id
parameter. A typical use case for this method would be to first retrieve all channels without episodes, and then retrieve all episodes for the single channel the user selects.
Parameters Parameter Req. OpenS. Default Comment includeEpisodes
No true (Since 1.9.0 ) Whether to include Podcast episodes in the returned result. id
No (Since 1.9.0 ) If specified, only return the Podcast channel with this ID.
Example http://your-server/rest/getPodcasts.view?title=tata&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested podcasts
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"podcasts" : {
"channel" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
},
{
"id" : "3" ,
"url" : "https://example.com/404" ,
"status" : "error" ,
"errorMessage" : "Not Found"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"channel" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
},
{
"id" : "3" ,
"url" : "https://example.com/404" ,
"status" : "error" ,
"errorMessage" : "Not Found"
}
]
}
}
}
Field Type Req. OpenS. Details podcasts
podcasts
Yes The podacsts
5.49 - getRandomSongs Returns random songs matching the given criteria.
http://your-server/rest/getRandomSongs
Since 1.2.0
Returns random songs matching the given criteria.
Parameters Parameter Req. OpenS. Default Comment size
No 10 The maximum number of songs to return. Max 500. genre
No Only returns songs belonging to this genre. fromYear
No Only return songs published after or in this year. toYear
No Only return songs published before or in this year. musicFolderId
No Only return songs in the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getRandomSongs.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested randomSongs
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"randomSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"randomSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
Field Type Req. OpenS. Details randomSongs
songs
Yes The random songs list
5.50 - getScanStatus Returns the current status for media library scanning.
http://your-server/rest/getScanStatus
Since 1.15.0
Returns the current status for media library scanning. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/getScanStatus.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested scanStatus
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"scanStatus" : {
"scanning" : true ,
"count" : 1
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"scanStatus" : {
"scanning" : true ,
"count" : 0
}
}
}
Field Type Req. OpenS. Details scanStatus
scanStatus
Yes The status of the scan
5.51 - getShares Returns information about shared media this user is allowed to manage.
http://your-server/rest/getShares
Since 1.6.0
Returns information about shared media this user is allowed to manage. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/getShares.view?&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested shares
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"shares" : {
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"shares" : {
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
}
}
Field Type Req. OpenS. Details shares
shares
Yes The shares
5.52 - getSimilarSongs Returns a random collection of songs from the given artist and similar artists.
http://your-server/rest/getSimilarSongs
Since 1.11.0
Returns a random collection of songs from the given artist and similar artists, using data from last.fm . Typically used for artist radio features.
Parameters Parameter Req. OpenS. Default Comment id
Yes The artist, album or song ID. count
No 50 Max number of songs to return.
Example http://your-server/rest/getSimilarSongs.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested similarSongs
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"similarSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"similarSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
Field Type Req. OpenS. Details similarSongs
similarSongs
Yes The similar songs list
5.53 - getSimilarSongs2 Returns a random collection of songs from the given artist and similar artists.
http://your-server/rest/getSimilarSongs2
Since 1.11.0
Similar to getSimilarSongs
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment id
Yes The artist ID. count
No 50 Max number of songs to return.
Example http://your-server/rest/getSimilarSongs2.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested similarSongs2
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"similarSongs2" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"similarSongs2" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
Field Type Req. OpenS. Details similarSongs2
similarSongs2
Yes The similar songs list
5.54 - getSong Returns details for a song.
http://your-server/rest/getSong
Since 1.8.0
Returns details for a song.
Parameters Parameter Req. OpenS. Default Comment id
Yes The song ID.
Example http://your-server/rest/getSong.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested song
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"song" : {
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"mediaType" : "song" ,
"isVideo" : false ,
"bpm" : 134 ,
"comment" : "This is a song comment" ,
"sortName" : "Polar expedition" ,
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"genres" : [
{
"name" : "Hip-Hop"
},
{
"name" : "East coast"
}
],
"artists" : [
{
"id" : "ar-1" ,
"name" : "Artist 1"
},
{
"id" : "ar-2" ,
"name" : "Artist 2"
}
],
"displayArtist" : "Artist 1 feat. Artist 2" ,
"albumArtists" : [
{
"id" : "ar-6" ,
"name" : "Artist 6"
},
{
"id" : "ar-7" ,
"name" : "Artist 7"
}
],
"displayAlbumArtist" : "Artist 6 & Artist 7" ,
"contributors" : [
{
"role" : "composer" ,
"artist" : {
"id" : "ar-3" ,
"name" : "Artist 3"
}
},
{
"role" : "composer" ,
"artist" : {
"id" : "ar-4" ,
"name" : "Artist 4"
}
},
{
"role" : "lyricist" ,
"artist" : {
"id" : "ar-5" ,
"name" : "Artist 5"
}
},
{
"role" : "performer" ,
"subRole" : "Bass" ,
"artist" : {
"id" : "ar-5" ,
"name" : "Artist 5"
}
}
],
"displayComposer" : "Artist 3, Artist 4" ,
"moods" : [
"slow" ,
"cool"
],
"replayGain" : {
"trackGain" : 0.1 ,
"albumGain" : 1.1 ,
"trackPeak" : 9.2 ,
"albumPeak" : 9 ,
"baseGain" : 0
}
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"song" : {
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
}
}
Field Type Req. OpenS. Details song
Child
Yes The song
5.55 - getSongsByGenre Returns songs in a given genre.
http://your-server/rest/getSongsByGenre
Since 1.9.0
Returns songs in a given genre.
Parameters Parameter Req. OpenS. Default Comment genre
Yes The genre, as returned by getGenres
. count
No 10 The maximum number of songs to return. Max 500. offset
No 0 The offset. Useful if you want to page through the songs in a genre. musicFolderId
No (Since 1.12.0 ) Only return albums in the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getSongsByGenre.view?genre=Electronic&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested songsByGenre
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"songsByGenre" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"songsByGenre" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
}
}
Field Type Req. OpenS. Details songsByGenre
songs
Yes The songs list
5.56 - getStarred Returns starred songs, albums and artists.
http://your-server/rest/getStarred
Since 1.8.0
Returns starred songs, albums and artists.
Parameters Parameter Req. OpenS. Default Comment musicFolderId
No (Since 1.12.0 ) Only return results from the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getStarred.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested starred
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"starred" : {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"starred" : {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
Field Type Req. OpenS. Details starred
starred
Yes The song
5.57 - getStarred2 Returns starred songs, albums and artists.
http://your-server/rest/getStarred2
Since 1.8.0
Similar to getStarred
, but organizes music according to ID3 tags.
Parameters Parameter Req. OpenS. Default Comment musicFolderId
No (Since 1.12.0 ) Only return results from the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/getStarred2.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested starred2
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"starred2" : {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"starred2" : {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
Field Type Req. OpenS. Details starred2
starred2
Yes The song
5.58 - getTopSongs Returns top songs for the given artist.
http://your-server/rest/getTopSongs
Since 1.13.0
Returns top songs for the given artist, using data from last.fm .
Parameters Parameter Req. OpenS. Default Comment artist
Yes The artist name. count
No 50 Max number of songs to return.
Example http://your-server/rest/getTopSongs.view?artist=toto&u=demo&p=demo&v=1.13.0&c=AwesomeServerName&f=json
Result A subsonic-response
element with a nested topSongs
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"topSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"topSongs" : {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
}
}
Field Type Req. OpenS. Details topSongs
topSongs
Yes The top songs list
5.59 - getUser Get details about a given user, including which authorization roles and folder access it has.
http://your-server/rest/getUser
Since 1.3.0
Get details about a given user, including which authorization roles and folder access it has. Can be used to enable/disable certain features in the client, such as jukebox control.
Parameters Parameter Req. OpenS. Default Comment username
Yes The name of the user to retrieve. You can only retrieve your own user unless you have admin privileges.
Example http://your-server/rest/getUser.view?username=tata&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested user
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"user" : {
"folder" : [
1 ,
3
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"user" : {
"folder" : [
1 ,
3
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
}
}
Field Type Req. OpenS. Details user
user
Yes The user
5.60 - getUsers Get details about all users, including which authorization roles and folder access they have.
http://your-server/rest/getUsers
Since 1.8.0
Get details about all users, including which authorization roles and folder access they have. Only users with admin privileges are allowed to call this method.
Parameters Takes no extra parameters.
Example http://your-server/rest/getUsers.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested users
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"users" : {
"user" : [
{
"folder" : [
1 ,
3
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"users" : {
"user" : [
{
"folder" : [
1 ,
3
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
]
}
}
}
Field Type Req. OpenS. Details users
users
Yes The users
5.61 - getVideoInfo Returns details for a video.
http://your-server/rest/getVideoInfo
Since 1.14.0
Returns details for a video, including information about available audio tracks, subtitles (captions) and conversions.
Parameters Parameter Req. OpenS. Default Comment id
Yes The video ID.
Example http://your-server/rest/getVideoInfo.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested videoInfo
element on success.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details videoInfo
videoInfo
Yes The song
5.62 - getVideos Returns all video files.
http://your-server/rest/getVideos
Since 1.8.0
Returns all video files.
Parameters Takes no extra parameters.
Example http://your-server/rest/getVideos.view?&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested videos
element on success.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details videos
videos
Yes The videos
5.63 - hls Downloads a given media file.
http://your-server/rest/hls.m3u8
Since 1.8.0
Creates an HLS (HTTP Live Streaming ) playlist used for streaming video or audio. HLS is a streaming protocol implemented by Apple and works by breaking the overall stream into a sequence of small HTTP-based file downloads. It’s supported by iOS and newer versions of Android. This method also supports adaptive bitrate streaming , see the bitRate
parameter.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the media file to stream. bitRate
No If specified, the server will attempt to limit the bitrate to this value, in kilobits per second. If this parameter is specified more than once, the server will create a variant playlist , suitable for adaptive bitrate streaming. The playlist will support streaming at all the specified bitrates. The server will automatically choose video dimensions that are suitable for the given bitrates. Since 1.9.0 you may explicitly request a certain width (480) and height (360) like so: bitRate=1000@480x360
audioTrack
No The ID of the audio track to use. SeegetVideoInfo
for how to get the list of available audio tracks for a video.
Example http://your-server/rest/hls.m3u8?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns an M3U8 playlist on success (content type “application/vnd.apple.mpegurl”), or an XML document on error (in which case the HTTP content type will start with “text/xml”).
5.64 - jukeboxControl Controls the jukebox, i.e., playback directly on the server’s audio hardware.
http://your-server/rest/jukeboxControl
Since 1.2.0
Controls the jukebox, i.e., playback directly on the server’s audio hardware. Note: The user must be authorized to control the jukebox (see Settings > Users > User is allowed to play files in jukebox mode).
Parameters Parameter Req. OpenS. Default Comment action
Yes The operation to perform. Must be one of: get
, status
(since 1.7.0 ), set
(since 1.7.0 ), start
, stop
, skip
, add
, clear
, remove
, shuffle
, setGain
index
No Used by skip
and remove
. Zero-based index of the song to skip to or remove. offset
No (Since 1.7.0 ) Used by skip
. Start playing this many seconds into the track. id
No Used by add
and set
. ID of song to add to the jukebox playlist. Use multiple id
parameters to add many songs in the same request. (set
is similar to a clear
followed by a add
, but will not change the currently playing track.) gain
No Used by setGain
to control the playback volume. A float value between 0.0 and 1.0.
Example http://your-server/rest/jukeboxControl.view?action=get&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested :
Example :
OpenSubsonic (Status)
OpenSubsonic (Playlist)
Subsonic (Status)
Subsonic (Playlist) {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"jukeboxStatus" : {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"jukeboxPlaylist" : {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"jukeboxStatus" : {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"jukeboxPlaylist" : {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
}
}
5.65 - ping Used to test connectivity with the server.
http://your-server/rest/ping
Since 1.0.0
Test connectivity with the server.
Parameters Takes no extra parameters.
Example http://your-server/rest/ping.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.66 - refreshPodcasts Requests the server to check for new Podcast episodes.
http://your-server/rest/refreshPodcasts
Since 1.9.0
Requests the server to check for new Podcast episodes. Note: The user must be authorized for Podcast administration (see Settings > Users > User is allowed to administrate Podcasts).
Parameters Takes no extra parameters.
Example http://your-server/rest/refreshPodcasts.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.67 - savePlayQueue Saves the state of the play queue for this user.
http://your-server/rest/savePlayQueue
Since 1.12.0
Saves the state of the play queue for this user. This includes the tracks in the play queue, the currently playing track, and the position within this track. Typically used to allow a user to move between different clients/apps while retaining the same play queue (for instance when listening to an audio book).
Parameters Parameter Req. OpenS. Default Comment id
No ID of a song in the play queue. Use one id
parameter for each song in the play queue. current
No The ID of the current playing song. position
No The position in milliseconds within the currently playing song.
Example http://your-server/rest/savePlayQueue.view?id=123¤t=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
OpenSubsonic Note id
is optional. Send a call without any parameters to clear the currently saved queue.5.68 - savePlayQueueByIndex Saves the state of the play queue for this user.
http://your-server/rest/savePlayQueueByIndex
Since 1.12.0
Saves the state of the play queue for this user. This includes the tracks in the play queue, the currently playing track, and the position within this track. Typically used to allow a user to move between different clients/apps while retaining the same play queue (for instance when listening to an audio book).
Uses an index instead, as this allows for uniquely identifying play queues which may have multiple copies of the same track.
Parameters Parameter Req. OpenS. Default Comment id
No ID of a song in the play queue. Use one id
parameter for each song in the play queue. currentIndex
No The 0-based index of the current playing track. This must be between 0 and length of the queue - 1 (inclusive) position
No The position in milliseconds within the currently playing song.
Example http://your-server/rest/savePlayQueueByIndex.view?id=123¤tIndex=1&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
OpenSubsonic Note id
is optional. Send a call without any parameters to clear the currently saved queue.
In this case, currentIndex
must not be set.
If currentIndex
is not between 0 and length of the queue - 1 (inclusive), the server must respond with error code 10.
5.69 - scrobble Registers the local playback of one or more media files.
http://your-server/rest/scrobble
Since 1.5.0
Registers the local playback of one or more media files. Typically used when playing media that is cached on the client. This operation includes the following:
“Scrobbles” the media files on last.fm if the user has configured his/her last.fm credentials on the server. Updates the play count and last played timestamp for the media files. (Since 1.11.0 ) Makes the media files appear in the “Now playing” page in the web app, and appear in the list of songs returned by getNowPlaying
(Since 1.11.0 ) Since 1.8.0 you may specify multiple id
(and optionally time
) parameters to scrobble multiple files.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the file to scrobble. time
No (Since 1.8.0 ) The time (in milliseconds since 1 Jan 1970) at which the song was listened to. submission
No True Whether this is a “submission” or a “now playing” notification.
Example http://your-server/rest/scrobble.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.70 - search Returns a listing of files matching the given search criteria. Supports paging through the result.
http://your-server/rest/search
Since 1.0.0
Deprecated since 1.4.0 , use search2
instead.
Returns a listing of files matching the given search criteria. Supports paging through the result.
Parameters Parameter Req. OpenS. Default Comment artist
No Artist to search for. album
No Album to searh for. title
No Song title to search for. any
No Searches all fields. count
No 20 Maximum number of results to return. offset
No 0 Search result offset. Used for paging. newerThan
No Only return matches that are newer than this. Given as milliseconds since 1970.
Example http://your-server/rest/search.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested searchResult
element on success.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details searchResult
searchResult
Yes The result
5.71 - search2 Returns a listing of files matching the given search criteria. Supports paging through the result.
http://your-server/rest/search2
Since 1.4.0
Returns albums, artists and songs matching the given search criteria. Supports paging through the result.
Parameters Parameter Req. OpenS. Default Comment query
Yes Search query. artistCount
No 20 Maximum number of artists to return. artistOffset
No 0 Search result offset for artists. Used for paging. albumCount
No 20 Maximum number of albums to return. albumOffset
No 0 Search result offset for albums. Used for paging. songCount
No 20 Maximum number of songs to return. songOffset
No 0 Search result offset for songs. Used for paging. musicFolderId
No (Since 1.12.0 ) Only return results from the music folder with the given ID. See getMusicFolders
.
Example http://your-server/rest/search2.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested searchResult2
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"searchResult2" : {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"albumCount" : 1 ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"searchResult2" : {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"albumCount" : 1 ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
Field Type Req. OpenS. Details searchResult2
searchResult2
Yes The result
5.72 - search3 Returns albums, artists and songs matching the given search criteria. Supports paging through the result.
http://your-server/rest/search3
Since 1.8.0
Returns albums, artists and songs matching the given search criteria. Supports paging through the result.
Music is organized according to ID3 tags.
Parameters Parameter Requ. OpenS. Default Comment query
Yes See below* Search query. artistCount
No 20 Maximum number of artists to return. artistOffset
No 0 Search result offset for artists. Used for paging. albumCount
No 20 Maximum number of albums to return. albumOffset
No 0 Search result offset for albums. Used for paging. songCount
No 20 Maximum number of songs to return. songOffset
No 0 Search result offset for songs. Used for paging. musicFolderId
No (Since 1.12.0 ) Only return results from music folder with the given ID. See getMusicFolders
.
OpenSubsonic Servers must support an empty query and return all the data to allow clients to properly access all the media information for offline sync.Example http://your-server/rest/search3.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json&query=""&artistCount=1&albumCount=1&songCount=1
Result A subsonic-response
with a nested searchResult3
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"searchResult3" : {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"played" : "2023-03-28T00:45:13Z" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"userRating" : 4 ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"searchResult3" : {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"played" : "2023-03-28T00:45:13Z" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"userRating" : 4 ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
}
}
Field Type Req. OpenS. Details searchResult3
searchResult3
Yes The result of the search
5.73 - setRating Sets the rating for a music file.
http://your-server/rest/setRating
Since 1.6.0
Sets the rating for a music file.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the file (song) or folder (album/artist) to rate. rating
Yes The rating between 1 and 5 (inclusive), or 0 to remove the rating.
Example http://your-server/rest/setRating.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.74 - star Attaches a star to a song, album or artist.
http://your-server/rest/star
Since 1.8.0
Attaches a star to a song, album or artist.
Parameters Parameter Req. OpenS. Default Comment id
No The ID of the file (song) or folder (album/artist) to star. Multiple parameters allowed. albumId
No The ID of an album to star. Use this rather than id
if the client accesses the media collection according to ID3 tags rather than file structure. Multiple parameters allowed. artistId
No The ID of an artist to star. Use this rather than id
if the client accesses the media collection according to ID3 tags rather than file structure. Multiple parameters allowed.
Example http://your-server/rest/star.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.75 - startScan Initiates a rescan of the media libraries.
http://your-server/rest/startScan
Since 1.15.0
Initiates a rescan of the media libraries. Takes no extra parameters.
Parameters Takes no extra parameters.
Example http://your-server/rest/startScan.view?u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested scanStatus
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
"scanStatus" : {
"scanning" : true ,
"count" : 1
}
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"scanStatus" : {
"scanning" : true ,
"count" : 0
}
}
}
Field Type Req. OpenS. Details scanStatus
scanStatus
Yes The status of the scan
5.76 - stream Streams a given media file.
http://your-server/rest/stream
Since 1.0.0
Streams a given media file.
Parameters Parameter Req. OpenS. Default Comment id
Yes A string which uniquely identifies the file to stream. Obtained by calls to getMusicDirectory. maxBitRate
No (Since 1.2.0 ) If specified, the server will attempt to limit the bitrate to this value, in kilobits per second. If set to zero, no limit is imposed. format
No (Since 1.6.0 ) Specifies the preferred target format (e.g., “mp3” or “flv”) in case there are multiple applicable transcodings. Starting with 1.9.0 you can use the special value “raw” to disable transcoding. timeOffset
No No / Yes By default only applicable to video streaming. If specified, start streaming at the given offset (in seconds) into the media. The Transcode Offet
extension enables the parameter to music too. size
No (Since 1.6.0 ) Only applicable to video streaming. Requested video size specified as WxH, for instance “640x480”. estimateContentLength
No false (Since 1.8.0 ). If set to “true”, the Content-Length HTTP header will be set to an estimated value for transcoded or downsampled media. converted
No false (Since 1.14.0 ) Only applicable to video streaming. Servers can optimize videos for streaming by converting them to MP4. If a conversion exists for the video in question, then setting this parameter to “true” will cause the converted video to be returned instead of the original.
Example http://your-server/rest/stream.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result Returns binary data on success, or an XML document on error (in which case the HTTP content type will start with “text/xml”).
OpenSubsonic OpenSubsonic servers must not count access to this endpoint as a play and increase playcount. Clients can use the Scrobble
endpoint to indicate that a media is played ensuring proper data in all cases.
If the server support the Transcode Offet
extension, then it must accept the timeOffset
parameter for music too.
5.77 - tokenInfo Returns information about an API key.
OpenSubsonic version : 1
OpenSubsonic extension name apiKeyAuthentication
(As returned by getOpenSubsonicExtensions
)
Returns data about an API key.
http://your-server/rest/tokenInfo
Parameters None
Example http://your-server/rest/tokenInfo.view?apiKey=1234&v=1.13.0&c=AwesomeClientName&f=json
Result A subsonic-response
element with a nested tokenInfo
on success, or error 44 on invalid token.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true ,
"tokenInfo" : {
"username" : "token username"
}
}
}
<subsonic-response status= "ok" version= "1.16.1" type= "AwesomeServerName" serverVersion= "0.1.3 (tag)" openSubsonic= "true" >
<tokenInfo username= "token username" ></tokenInfo>
</subsonic-response>
Field Type Req. OpenS. Details tokenInfo
tokenInfo
Yes Yes Information about the token
5.78 - unstar Attaches a star to a song, album or artist.
http://your-server/rest/unstar
Since 1.8.0
Removes a star to a song, album or artist.
Parameters Parameter Req. OpenS. Default Comment id
No The ID of the file (song) or folder (album/artist) to unstar. Multiple parameters allowed. albumId
No The ID of an album to unstar. Use this rather than id
if the client accesses the media collection according to ID3 tags rather than file structure. Multiple parameters allowed. artistId
No The ID of an artist to unstar. Use this rather than id
if the client accesses the media collection according to ID3 tags rather than file structure. Multiple parameters allowed.
Example http://your-server/rest/unstar.view?id=123&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.79 - updateInternetRadioStation Updates an existing internet radio station.
http://your-server/rest/updateInternetRadioStation
Since 1.16.0
Updates an existing internet radio station. Only users with admin privileges are allowed to call this method.
Parameters Parameter Req. OpenS. Default Comment id
Yes The ID of the station. streamUrl
Yes The stream URL for the station. name
Yes The user-defined name for the station. homepageUrl
No The home page URL for the station.
Example http://your-server/rest/updateInternetRadioStation.view?id=123&streamUrl=url&name=test&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.80 - updatePlaylist Updates a playlist. Only the owner of a playlist is allowed to update it.
http://your-server/rest/updatePlaylist
Since 1.8.0
Updates a playlist. Only the owner of a playlist is allowed to update it.
Parameters Parameter Req. OpenS. Default Comment playlistId
Yes The playlist ID. name
No The human-readable name of the playlist. comment
No The playlist comment. public
No true
if the playlist should be visible to all users, false
otherwise.songIdToAdd
No Add this song with this ID to the playlist. Multiple parameters allowed. songIndexToRemove
No Remove the song at this position in the playlist. Multiple parameters allowed.
Example http://your-server/rest/updatePlaylist.view?playlistId=123&name=test&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.81 - updateShare Updates the description and/or expiration date for an existing share.
http://your-server/rest/updateShare
Since 1.6.0
Updates the description and/or expiration date for an existing share.
Parameters Parameter Req. OpenS. Default Comment id
Yes ID of the share to update. description
No A user-defined description that will be displayed to people visiting the shared media. expires
No The time at which the share expires. Given as milliseconds since 1970, or zero to remove the expiration.
Example http://your-server/rest/updateShare.view?id=123&description=test&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
5.82 - updateUser Modifies an existing user on the server.
http://your-server/rest/updateUser
Since 1.10.1
Modifies an existing user on the server.
Parameters Parameter Req. OpenS. Default Comment username
Yes The name of the user. password
No The password of the user, either in clear text of hex-encoded (see above). email
No The email address of the user. ldapAuthenticated
No Whether the user is authenicated in LDAP. adminRole
No Whether the user is administrator. settingsRole
No Whether the user is allowed to change personal settings and password. streamRole
No Whether the user is allowed to play files. jukeboxRole
No Whether the user is allowed to play files in jukebox mode. downloadRole
No Whether the user is allowed to download files. uploadRole
No Whether the user is allowed to upload files. coverArtRole
No Whether the user is allowed to change cover art and tags. commentRole
No Whether the user is allowed to create and edit comments and ratings. podcastRole
No Whether the user is allowed to administrate Podcasts. shareRole
No Whether the user is allowed to share files with anyone. videoConversionRole
No false (Since 1.15.0 ) Whether the user is allowed to start video conversions. musicFolderId
No (Since 1.12.0 ) IDs of the music folders the user is allowed access to. Include the parameter once for each folder. maxBitRate
No (Since 1.13.0 ) The maximum bit rate (in Kbps) for the user. Audio streams of higher bit rates are automatically downsampled to this bit rate. Legal values: 0 (no limit), 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320.
Example http://your-server/rest/updateUser.view?username=test&password=test&email=test@test.com&u=demo&p=demo&v=1.13.0&c=AwesomeClientName&f=json
Result An empty subsonic-response
element on success.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
6 - Responses Endpoints responses documentation.
6.1 - AlbumID3 An album from ID3 tags.
Example :
OpenSubsonic
Subsonic {
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"version" : "Deluxe Edition" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8 ,
"played" : "2023-03-28T00:45:13Z" ,
"userRating" : 4 ,
"recordLabels" : [
{
"name" : "Sony"
}
],
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"genres" : [
{
"name" : "Hip-Hop"
},
{
"name" : "East coast"
}
],
"artists" : [
{
"id" : "ar-1" ,
"name" : "Artist 1"
},
{
"id" : "ar-2" ,
"name" : "Artist 2"
}
],
"displayArtist" : "Artist 1 feat. Artist 2" ,
"releaseTypes" : [
"Album" ,
"Remixes"
],
"moods" : [
"slow" ,
"cool"
],
"sortName" : "lagerfeuer (8-bit)" ,
"originalReleaseDate" : {
"year" : 2001 ,
"month" : 3 ,
"day" : 10
},
"releaseDate" : {
"year" : 2001 ,
"month" : 3 ,
"day" : 10
},
"isCompilation" : false ,
"explicitStatus" : "explicit" ,
"discTitles" : [
{
"disc" : 0 ,
"title" : "Disc 0 title"
},
{
"disc" : 2 ,
"title" : "Disc 1 title"
}
]
}
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8
}
Field Type Req. OpenS. Details id
string
Yes The id of the album name
string
Yes The album name. version
string
No Yes The album version name (Remastered, Anniversary Box Set, …). artist
string
No Artist name. artistId
string
No The id of the artist coverArt
string
No A covertArt id. songCount
int
Yes Number of songs duration
int
Yes Total duration of the album in seconds playCount
long
No Number of play of the album created
string
Yes Date the album was added. [ISO 8601] starred
string
No Date the album was starred. [ISO 8601] year
int
No The album year genre
string
No The album genre played
string
No Yes Date the album was last played. [ISO 8601] userRating
int
No Yes The user rating of the album. [1-5] recordLabels
Array of RecordLabel
No Yes The labels producing the album. musicBrainzId
string
No Yes The album MusicBrainzID. genres
Array of ItemGenre
No Yes The list of all genres of the album. artists
Array of ArtistID3
No Yes The list of all album artists of the album. (Note: Only the required ArtistID3
fields should be returned by default) displayArtist
string
No Yes The single value display artist. releaseTypes
Array of string
No Yes The types of this album release. (Album, Compilation, EP, Remix, …). moods
Array of string
No Yes The list of all moods of the album. sortName
string
No Yes The album sort name. originalReleaseDate
ItemDate
No Yes Date the album was originally released. releaseDate
ItemDate
No Yes Date the specific edition of the album was released. Note: for files using ID3 tags, releaseDate should generally be read from the TDRL tag. Servers that use a different source for this field should document the behavior. isCompilation
boolean
No Yes True if the album is a compilation. explicitStatus
string
No Yes Returns “explicit” if at least one song is explicit, “clean” if no song is explicit and at least one is “clean” else “”. discTitles
Array of DiscTitle
No Yes The list of all disc titles of the album.
OpenSubsonic New fields are added:
version
played
userRating
recordLabels
musicBrainzId
genres
artists
displayArtist
releaseType
moods
sortName
originalReleaseDate
isCompilation
discTitles
explicitStatus
Note : All OpenSubsonic added fields are optionals . But if a server support a field it must return it with an empty / default value when not present in it’s database so that clients knows what the server supports.
Note : Even if some added fields may looks duplicated, it’s important to still return the legacy data for compatibility reasons.
6.2 - AlbumID3WithSongs
Example :
OpenSubsonic
Subsonic {
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"version" : "Deluxe Edition" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8 ,
"played" : "2023-03-28T00:45:13Z" ,
"userRating" : 4 ,
"recordLabels" : [
{
"name" : "Sony"
}
],
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"genres" : [
{
"name" : "Hip-Hop"
},
{
"name" : "East coast"
}
],
"artists" : [
{
"id" : "ar-1" ,
"name" : "Artist 1"
},
{
"id" : "ar-2" ,
"name" : "Artist 2"
}
],
"displayArtist" : "Artist 1 feat. Artist 2" ,
"releaseTypes" : [
"Album" ,
"Remixes"
],
"moods" : [
"slow" ,
"cool"
],
"sortName" : "lagerfeuer (8-bit)" ,
"originalReleaseDate" : {
"year" : 2001 ,
"month" : 3 ,
"day" : 10
},
"releaseDate" : {
"year" : 2001 ,
"month" : 3 ,
"day" : 10
},
"isCompilation" : false ,
"explicitStatus" : "explicit" ,
"discTitles" : [
{
"disc" : 0 ,
"title" : "Disc 0 title"
},
{
"disc" : 2 ,
"title" : "Disc 1 title"
}
],
"song" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"explicitStatus" : "explicit" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"explicitStatus" : "clean" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"song" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
Field Type Req. OpenS. Details id
string
Yes The id of the album name
string
Yes The album name. version
string
No Yes The album version name (Remastered, Anniversary Box Set, …). artist
string
No Artist name. artistId
string
No The id of the artist coverArt
string
No A covertArt id. songCount
int
Yes Number of songs duration
int
Yes Total duration of the album in seconds playCount
long
No Number of play of the album created
string
Yes Date the album was added. [ISO 8601] starred
string
No Date the album was starred. [ISO 8601] year
int
No The album year genre
string
No The album genre played
string
No Yes Date the album was last played. [ISO 8601] userRating
int
No Yes The user rating of the album. [1-5] recordLabels
Array of RecordLabel
No Yes The labels producing the album. musicBrainzId
string
No Yes The album MusicBrainzID. genres
Array of ItemGenre
No Yes The list of all genres of the album. artists
Array of ArtistID3
No Yes The list of all album artists of the album. displayArtist
string
No Yes The single value display artist. releaseTypes
Array of string
No Yes The types of this album release. (Album, Compilation, EP, Remix, …). moods
Array of string
No Yes The list of all moods of the album. sortName
string
No Yes The album sort name. originalReleaseDate
ItemDate
No Yes Date the album was originally released. releaseDate
ItemDate
No Yes Date the specific edition of the album was released. Note: for files using ID3 tags, releaseDate should generally be read from the TDRL tag. Servers that use a different source for this field should document the behavior. isCompilation
boolean
No Yes True if the album is a compilation. explicitStatus
string
No Yes Returns “explicit” if at least one song is explicit, “clean” if no song is explicit and at least one is “clean” else “”. discTitles
Array of DiscTitle
No Yes The list of all disc titles of the album. song
Array of Child
No The list of songs
OpenSubsonic New fields are added:
version
played
userRating
recordLabels
musicBrainzId
genres
artists
displayArtist
releaseType
moods
sortName
originalReleaseDate
isCompilation
discTitles
explicitStatus
Note : All OpenSubsonic added fields are optionals . But if a server support a field it must return it with an empty / default value when not present in it’s database so that clients knows what the server supports.
Note : Even if some added fields may looks duplicated, it’s important to still return the legacy data for compatibility reasons.
6.3 - albumInfo Album info.
Example :
OpenSubsonic
Subsonic {
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
{
"notes" : "Download the full release here (creative commons). These cripsy beats are ripe with thumping funk and techno influences, sample wizardry and daring shuffles. Composed with the help of unique sound plugins which were especially programmed to measure Comfort Fitβs needs and wishes, we think the chances arenβt bad that youβll fall for the unique sound signature, bounce and elegance of this unusual Hip Hop production. Ltj bukem / Good looking Rec., UK: \"Really love this music.\" Velanche / XLR8R, UK: \"Awesome job he's done... overall production is dope.\" Kwesi / BBE Music, UK: \"Wooooooowwwww... WHAT THE FUCK! THIS IS WHAT" ,
"musicBrainzId" : "6e1d48f7-717c-416e-af35-5d2454a13af2" ,
"smallImageUrl" : "http://localhost:8989/play/art/0f8c3cbd6b0b22c3b5402141351ac812/album/21/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/41b16680dc1b3aaf5dfba24ddb6a1712/album/21/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e6fd8d4e0d35c4436e56991892bfb27b/album/21/thumb174.jpg"
}
Field Type Req. OpenS. Details notes
string
No Album notes musicBrainzId
string
No Album musicBrainzId lastFmUrl
string
No Album lastFmUrl smallImageUrl
string
No Album smallImageUrl mediumImageUrl
string
No Album mediumImageUrl largeImageUrl
string
No Album largeImageUrl
6.4 - albumList Album list.
Example :
OpenSubsonic
Subsonic {
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"parent" : "100000019" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"isDir" : true ,
"coverArt" : "al-200000012" ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
{
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"parent" : "100000019" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"isDir" : true ,
"coverArt" : "al-200000012" ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
Field Type Req. OpenS. Details album
Array of Child
No Artist albums
6.5 - albumList2 Album list.
Example :
OpenSubsonic
Subsonic {
"album" : [
{
"id" : "200000021" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"coverArt" : "al-200000012" ,
"songCount" : 9 ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
{
"album" : [
{
"id" : "200000021" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
},
{
"id" : "200000012" ,
"album" : "Buried in Nausea" ,
"title" : "Buried in Nausea" ,
"name" : "Buried in Nausea" ,
"coverArt" : "al-200000012" ,
"songCount" : 9 ,
"created" : "2021-02-24T01:44:21+00:00" ,
"duration" : 1879 ,
"playCount" : 0 ,
"artistId" : "100000019" ,
"artist" : "Various Artists" ,
"year" : 2012 ,
"genre" : "Punk"
}
]
}
Field Type Req. OpenS. Details album
Array of AlbumID3
No Artist albums
6.6 - artist Artist details.
Example :
OpenSubsonic
Subsonic {
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
Field Type Req. OpenS. Details id
string
Yes Artist id name
string
Yes Artist name artistImageUrl
string
No Artist image url starred
string
No Artist starred date [ISO 8601] userRating
int
No Artist rating [1-5] averageRating
number
No Artist average rating [1.0-5.0]
6.7 - ArtistID3 An artist from ID3 tags.
Example :
OpenSubsonic
Subsonic {
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z" ,
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"sortName" : "Mello (2)" ,
"roles" : [
"artist" ,
"albumartist" ,
"composer"
]
}
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z"
}
Field Type Req. OpenS. Details id
string
Yes The id of the artist name
string
Yes The artist name. coverArt
string
No A covertArt id. artistImageUrl
string
No An url to an external image source. albumCount
int
No Artist album count. starred
string
No Date the artist was starred. [ISO 8601] musicBrainzId
string
No Yes The artist MusicBrainzID. sortName
string
No Yes The artist sort name. roles
Array of string
No Yes The list of all roles this artist has in the library.
OpenSubsonic New fields are added:
musicBrainzId
sortName
roles
Note : All OpenSubsonic added fields are optionals . But if a server support a field it must return it with an empty / default value when not present in it’s database so that clients knows what the server supports.
Note : Even if some added fields may looks duplicated, it’s important to still return the legacy data for compatibility reasons.
6.8 - artistInfo Artist info.
Example :
OpenSubsonic
Subsonic {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
{
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
Field Type Req. OpenS. Details biography
string
No Artist biography musicBrainzId
string
No Artist musicBrainzId lastFmUrl
string
No Artist lastFmUrl smallImageUrl
string
No Artist smallImageUrl mediumImageUrl
string
No Artist mediumImageUrl largeImageUrl
string
No Artist largeImageUrl similarArtist
Array of artist
No Similar Artists
6.9 - artistInfo2 Artist info.
Example :
OpenSubsonic
Subsonic {
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
{
"biography" : "Empty biography" ,
"musicBrainzId" : "1" ,
"smallImageUrl" : "http://localhost:8989/play/art/f20070e8e11611cc53542a38801d60fa/artist/2/thumb34.jpg" ,
"mediumImageUrl" : "http://localhost:8989/play/art/2b9b6c057cd4bf21089ce7572e7792b6/artist/2/thumb64.jpg" ,
"largeImageUrl" : "http://localhost:8989/play/art/e18287c23a75e263b64c31b3d64c1944/artist/2/thumb174.jpg"
}
Field Type Req. OpenS. Details biography
string
No Artist biography musicBrainzId
string
No Artist musicBrainzId lastFmUrl
string
No Artist lastFmUrl smallImageUrl
string
No Artist smallImageUrl mediumImageUrl
string
No Artist mediumImageUrl largeImageUrl
string
No Artist largeImageUrl similarArtist
Array of ArtistID3
No Similar Artists
6.10 - ArtistsID3 A list of indexed Artists.
Example :
OpenSubsonic
Subsonic {
"ignoredArticles" : "The An A Die Das Ein Eine Les Le La" ,
"index" : [
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
},
{
"name" : "I" ,
"artist" : [
{
"id" : "100000013" ,
"name" : "IOK-1" ,
"coverArt" : "ar-100000013" ,
"albumCount" : 1
}
]
}
]
}
{
"ignoredArticles" : "The An A Die Das Ein Eine Les Le La" ,
"index" : [
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
},
{
"name" : "I" ,
"artist" : [
{
"id" : "100000013" ,
"name" : "IOK-1" ,
"coverArt" : "ar-100000013" ,
"albumCount" : 1
}
]
}
]
}
Field Type Req. OpenS. Details ignoredArticles
string
Yes List of ignored articles space separated index
Array of IndexID3
No Index list
6.11 - ArtistWithAlbumsID3
Example :
OpenSubsonic
Subsonic {
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z" ,
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"sortName" : "Mello (2)" ,
"roles" : [
"artist" ,
"albumartist" ,
"composer"
],
"album" : [
{
"id" : "200000002" ,
"parent" : "100000002" ,
"album" : "Colorsmoke EP" ,
"title" : "Colorsmoke EP" ,
"name" : "Colorsmoke EP" ,
"isDir" : true ,
"coverArt" : "al-200000002" ,
"songCount" : 12 ,
"created" : "2021-02-23T04:24:48+00:00" ,
"duration" : 4568 ,
"playCount" : 1 ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"year" : 2007 ,
"genre" : "Electronic" ,
"userRating" : 5 ,
"averageRating" : 3 ,
"starred" : "2021-02-22T05:51:53Z"
}
]
}
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z" ,
"album" : [
{
"id" : "200000002" ,
"parent" : "100000002" ,
"album" : "Colorsmoke EP" ,
"title" : "Colorsmoke EP" ,
"name" : "Colorsmoke EP" ,
"isDir" : true ,
"coverArt" : "al-200000002" ,
"songCount" : 12 ,
"created" : "2021-02-23T04:24:48+00:00" ,
"duration" : 4568 ,
"playCount" : 1 ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"year" : 2007 ,
"genre" : "Electronic" ,
"userRating" : 5 ,
"averageRating" : 3 ,
"starred" : "2021-02-22T05:51:53Z"
}
]
}
Field Type Req. OpenS. Details id
string
Yes The id of the artist name
string
Yes The artist name. coverArt
string
No A covertArt id. artistImageUrl
string
No An url to an external image source. albumCount
int
Yes Artist album count. starred
string
No Date the artist was starred. [ISO 8601] album
Array of AlbumID3
No Artist albums musicBrainzId
string
No Yes The artist MusicBrainzID. sortName
string
No Yes The artist sort name. roles
Array of string
No Yes The list of all roles this artist has in the library.
OpenSubsonic New fields are added:
musicBrainzId
sortName
roles
Note : All OpenSubsonic added fields are optionals . But if a server support a field it must return it with an empty / default value when not present in it’s database so that clients knows what the server supports.
Note : Even if some added fields may looks duplicated, it’s important to still return the legacy data for compatibility reasons.
6.12 - bookmark A bookmark.
Example :
OpenSubsonic
Subsonic {
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
}
{
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
}
Field Type Req. OpenS. Details position
long
Yes Bookmark position in seconds username
string
Yes Username comment
string
No Bookmark comment created
string
Yes Bookmark creation date [ISO 8601] changed
string
Yes Bookmark last updated date [ISO 8601] entry
Child
Yes The bookmark file
6.13 - bookmarks Bookmarks list.
Example :
OpenSubsonic
Subsonic {
"bookmark" : [
{
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
},
{
"entry" : {
"id" : "2b42782333450d02b177823e729664af" ,
"parent" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"isDir" : false ,
"title" : "Ill with the Skills" ,
"album" : "First Words" ,
"artist" : "The Polish Ambassador" ,
"track" : 17 ,
"year" : 2014 ,
"coverArt" : "mf-2b42782333450d02b177823e729664af_641edeb3" ,
"size" : 6219581 ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : 255 ,
"bitRate" : 194 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Polish Ambassador/First Words/17 - Ill with the Skills.mp3" ,
"playCount" : 1 ,
"played" : "2023-03-15T15:23:37Z" ,
"created" : "2023-03-25T11:44:51Z" ,
"albumId" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"artistId" : "64e1f796b283545d329cdf6a31a31dbe" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 7000
},
"position" : 7000 ,
"username" : "demo" ,
"comment" : "playSub bookmark" ,
"created" : "2023-03-25T11:44:51Z" ,
"changed" : "2023-03-25T11:44:51Z"
}
]
}
{
"bookmark" : [
{
"entry" : {
"id" : "113bf5989ad15ce2cf1834ba9622983f" ,
"parent" : "b87a936c682c49d4494c7ccb08c22d23" ,
"isDir" : false ,
"title" : "Stay Out Here" ,
"album" : "Shaking The Habitual" ,
"artist" : "The Knife" ,
"track" : 11 ,
"year" : 2013 ,
"genre" : "Electronic" ,
"coverArt" : "al-b87a936c682c49d4494c7ccb08c22d23_0" ,
"size" : 21096309 ,
"contentType" : "audio/mp4" ,
"suffix" : "m4a" ,
"duration" : 642 ,
"bitRate" : 257 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Knife/Shaking The Habitual/11 - Stay Out Here.m4a" ,
"created" : "2023-03-13T16:30:35Z" ,
"albumId" : "b87a936c682c49d4494c7ccb08c22d23" ,
"artistId" : "b29e9a9d780cb0e133f3add5662771b9" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 129000
},
"position" : 129000 ,
"username" : "demo" ,
"comment" : "" ,
"created" : "2023-03-13T16:30:35Z" ,
"changed" : "2023-03-13T16:30:35Z"
},
{
"entry" : {
"id" : "2b42782333450d02b177823e729664af" ,
"parent" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"isDir" : false ,
"title" : "Ill with the Skills" ,
"album" : "First Words" ,
"artist" : "The Polish Ambassador" ,
"track" : 17 ,
"year" : 2014 ,
"coverArt" : "mf-2b42782333450d02b177823e729664af_641edeb3" ,
"size" : 6219581 ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : 255 ,
"bitRate" : 194 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The Polish Ambassador/First Words/17 - Ill with the Skills.mp3" ,
"playCount" : 1 ,
"played" : "2023-03-15T15:23:37Z" ,
"created" : "2023-03-25T11:44:51Z" ,
"albumId" : "dc8d8889a6fe08d8da7698c7ee1de61c" ,
"artistId" : "64e1f796b283545d329cdf6a31a31dbe" ,
"type" : "music" ,
"isVideo" : false ,
"bookmarkPosition" : 7000
},
"position" : 7000 ,
"username" : "demo" ,
"comment" : "playSub bookmark" ,
"created" : "2023-03-25T11:44:51Z" ,
"changed" : "2023-03-25T11:44:51Z"
}
]
}
Field Type Req. OpenS. Details bookmark
Array of bookmark
No List of bookmark
6.14 - chatMessage A chatMessage.
Example :
OpenSubsonic
Subsonic {
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
{
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
Field Type Req. OpenS. Details username
string
Yes Username time
long
Yes Time in millis since Jan 1 1970 message
string
Yes The message
6.15 - chatMessages Chat messages list.
Example :
OpenSubsonic
Subsonic {
"chatMessage" : [
{
"username" : "admin" ,
"time" : 1678935707000 ,
"message" : "Api Script Testing"
},
{
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
]
}
{
"chatMessage" : [
{
"username" : "admin" ,
"time" : 1678935707000 ,
"message" : "Api Script Testing"
},
{
"username" : "user" ,
"time" : 1678935699000 ,
"message" : "Api Script Testing"
}
]
}
Field Type Req. OpenS. Details chatMessage
Array of chatMessage
No List of chatMessage
6.16 - Child A media.
Example :
OpenSubsonic
Subsonic {
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"mediaType" : "song" ,
"isVideo" : false ,
"bpm" : 134 ,
"comment" : "This is a song comment" ,
"sortName" : "Polar expedition" ,
"musicBrainzId" : "189002e7-3285-4e2e-92a3-7f6c30d407a2" ,
"isrc" : [
"USSM18300073" ,
"DELV42300297" ,
"DEE868300011" ,
"DEE868300007"
],
"genres" : [
{
"name" : "Hip-Hop"
},
{
"name" : "East coast"
}
],
"artists" : [
{
"id" : "ar-1" ,
"name" : "Artist 1"
},
{
"id" : "ar-2" ,
"name" : "Artist 2"
}
],
"displayArtist" : "Artist 1 feat. Artist 2" ,
"albumArtists" : [
{
"id" : "ar-6" ,
"name" : "Artist 6"
},
{
"id" : "ar-7" ,
"name" : "Artist 7"
}
],
"displayAlbumArtist" : "Artist 6 & Artist 7" ,
"contributors" : [
{
"role" : "composer" ,
"artist" : {
"id" : "ar-3" ,
"name" : "Artist 3"
}
},
{
"role" : "composer" ,
"artist" : {
"id" : "ar-4" ,
"name" : "Artist 4"
}
},
{
"role" : "lyricist" ,
"artist" : {
"id" : "ar-5" ,
"name" : "Artist 5"
}
},
{
"role" : "performer" ,
"subRole" : "Bass" ,
"artist" : {
"id" : "ar-5" ,
"name" : "Artist 5"
}
}
],
"displayComposer" : "Artist 3, Artist 4" ,
"moods" : [
"slow" ,
"cool"
],
"explicitStatus" : "explicit" ,
"replayGain" : {
"trackGain" : 0.1 ,
"albumGain" : 1.1 ,
"trackPeak" : 9.2 ,
"albumPeak" : 9 ,
"baseGain" : 0
}
}
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
Field Type Req. OpenS. Details id
string
Yes The id of the media parent
string
No The id of the parent (folder/album) isDir
boolean
Yes The media is a directory title
string
Yes The media name. album
string
No The album name. artist
string
No The artist name. track
int
No The track number. year
int
No The media year. genre
string
No The media genre coverArt
string
No A covertArt id. size
long
No A file size of the media. contentType
string
No The mimeType of the media. suffix
string
No The file suffix of the media. transcodedContentType
string
No The transcoded mediaType if transcoding should happen. transcodedSuffix
string
No The file suffix of the transcoded media. duration
int
No The duration of the media in seconds. bitRate
int
No The bitrate of the media. bitDepth
int
No Yes The bit depth of the media. samplingRate
int
No Yes The sampling rate of the media. channelCount
int
No Yes The number of channels of the media. path
string
No The full path of the media. isVideo
boolean
No Media is a video userRating
int
No The user rating of the media [1-5] averageRating
number
No The average rating of the media [1.0-5.0] playCount
long
No The play count. discNumber
int
No The disc number. created
string
No Date the media was created. [ISO 8601] starred
string
No Date the media was starred. [ISO 8601] albumId
string
No The corresponding album id artistId
string
No The corresponding artist id type
string
No The generic type of media [music/podcast/audiobook/video] mediaType
string
No Yes The actual media type [song/album/artist] Note : If you support musicBrainzId
you must support this field to ensure clients knows what the ID refers to. bookmarkPosition
long
No The bookmark position in seconds originalWidth
int
No The video original Width originalHeight
int
No The video original Height played
string
No Yes Date the album was last played. [ISO 8601] bpm
int
No Yes The BPM of the song. comment
string
No Yes The comment tag of the song. sortName
string
No Yes The song sort name. musicBrainzId
string
No Yes The track MusicBrainzID. isrc
Array of string
No Yes The track ISRC(s). genres
Array of ItemGenre
No Yes The list of all genres of the song. artists
Array of ArtistID3
No Yes The list of all song artists of the song. (Note: Only the required ArtistID3
fields should be returned by default) displayArtist
string
No Yes The single value display artist. albumArtists
Array of ArtistID3
No Yes The list of all album artists of the song. (Note: Only the required ArtistID3
fields should be returned by default) displayAlbumArtist
string
No Yes The single value display album artist. contributors
Array of Contributor
No Yes The list of all contributor artists of the song. displayComposer
string
No Yes The single value display composer. moods
Array of string
No Yes The list of all moods of the song. replayGain
ReplayGain
No Yes The replaygain data of the song. explicitStatus
string
No Yes Returns “explicit”, “clean” or “”. (For songs extracted from tags “ITUNESADVISORY”: 1 = explicit, 2 = clean, MP4 “rtng”: 1 or 4 = explicit, 2 = clean. See albumID3
for albums)
OpenSubsonic New fields are added:
played
bpm
comment
sortName
musicBrainzId
isrc
genres
artists
displayArtist
albumArtists
displayAlbumArtist
contributors
displayComposer
moods
replayGain
explicitStatus
Note : All OpenSubsonic added fields are optionals . But if a server support a field it must return it with an empty / default value when not present in it’s database so that clients knows what the server supports.
Note : Even if some added fields may looks duplicated, it’s important to still return the legacy data for compatibility reasons.
6.17 - Contributor A contributor artist for a song or an album.
Example :
OpenSubsonic
Subsonic {
"role" : "performer" ,
"subRole" : "Bass" ,
"artist" : {
"id" : "ar-1" ,
"name" : "Artist 1"
}
}
Field Type Req. OpenS. Details role
string
Yes Yes The contributor role. subRole
string
No Yes The subRole for roles that may require it. Ex: The instrument for the performer role (TMCL/performer tags). Note: For consistency between different tag formats, the TIPL sub roles should be directly exposed in the role field. artist
ArtistID3
Yes Yes The artist taking on the role. (Note: Only the required ArtistID3
fields should be returned by default)
OpenSubsonic This is a new OpenSubsonic response type.6.18 - directory Directory.
Example :
OpenSubsonic
Subsonic {
"id" : "1" ,
"name" : "music" ,
"child" : [
{
"id" : "100000016" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "CARNΓN" ,
"artist" : "CARNΓN" ,
"coverArt" : "ar-100000016"
},
{
"id" : "100000027" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "Chi.Otic" ,
"artist" : "Chi.Otic" ,
"coverArt" : "ar-100000027"
}
]
}
{
"id" : "1" ,
"name" : "music" ,
"child" : [
{
"id" : "100000016" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "CARNΓN" ,
"artist" : "CARNΓN" ,
"coverArt" : "ar-100000016"
},
{
"id" : "100000027" ,
"parent" : "1" ,
"isDir" : true ,
"title" : "Chi.Otic" ,
"artist" : "Chi.Otic" ,
"coverArt" : "ar-100000027"
}
]
}
Field Type Req. OpenS. Details id
string
Yes The id parent
string
No Parent item name
string
Yes The directory name starred
string
No Starred date [ISO 8601] userRating
int
No The user rating [1-5] averageRating
number
No The average rating [1.0-5.0] playCount
long
No The play count child
Array of Child
No The directory content
6.19 - DiscTitle A disc title for an album.
Example :
OpenSubsonic
Subsonic {
"disc" : 0 ,
"title" : "The disc title"
}
Field Type Req. OpenS. Details disc
int
Yes Yes The disc numer. title
string
Yes Yes The name of the disc.
OpenSubsonic This is a new OpenSubsonic response type.6.20 - error Error.
Example :
OpenSubsonic
Subsonic {
"code" : 42 ,
"message" : "Authentication mechanism not supported. Use API keys" ,
"helpUrl" : "https://example.org/users/apiKey"
}
{
"code" : 40 ,
"message" : "Wrong username or password"
}
Field Type Req. OpenS. Details code
int
Yes The error code message
string
No The optional error message helpUrl
string
No Yes A URL (documentation, configuration, etc) which may provide additional context for the error)
The following error codes are defined:
Code Description 0 A generic error. 10 Required parameter is missing. 20 Incompatible Subsonic REST protocol version. Client must upgrade. 30 Incompatible Subsonic REST protocol version. Server must upgrade. 40 Wrong username or password. 41 Token authentication not supported for LDAP users. 42 Provided authentication mechanism not supported. 43 Multiple conflicting authentication mechanisms provided. 44 Invalid API key. 50 User is not authorized for the given operation. 60 The trial period for the Subsonic server is over. Please upgrade to Subsonic Premium. Visit subsonic.org for details. 70 The requested data was not found.
6.21 - genre A genre.
Example :
OpenSubsonic
Subsonic {
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
}
{
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
}
Field Type Req. OpenS. Details value
string
Yes Genre name songCount
int
Yes Genre song count albumCount
int
Yes Genre album count
6.22 - genres Genres list.
Example :
OpenSubsonic
Subsonic {
"genre" : [
{
"songCount" : 1 ,
"albumCount" : 1 ,
"value" : "Punk"
},
{
"songCount" : 4 ,
"albumCount" : 1 ,
"value" : "Dark Ambient"
},
{
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Electronica"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Dance"
},
{
"songCount" : 12 ,
"albumCount" : 1 ,
"value" : "Electronic"
},
{
"songCount" : 20 ,
"albumCount" : 1 ,
"value" : "Hip-Hop"
}
]
}
{
"genre" : [
{
"songCount" : 1 ,
"albumCount" : 1 ,
"value" : "Punk"
},
{
"songCount" : 4 ,
"albumCount" : 1 ,
"value" : "Dark Ambient"
},
{
"songCount" : 6 ,
"albumCount" : 1 ,
"value" : "Noise"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Electronica"
},
{
"songCount" : 11 ,
"albumCount" : 1 ,
"value" : "Dance"
},
{
"songCount" : 12 ,
"albumCount" : 1 ,
"value" : "Electronic"
},
{
"songCount" : 20 ,
"albumCount" : 1 ,
"value" : "Hip-Hop"
}
]
}
Field Type Req. OpenS. Details genre
Array of genre
No List of genre
6.23 - Index An indexed artist list.
Example :
OpenSubsonic
Subsonic {
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
}
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
}
Field Type Req. OpenS. Details name
string
Yes Index name artist
Array of Artist
No Artist list
6.24 - indexes Artist list.
Example :
OpenSubsonic (JSON)
OpenSubsonic (XML)
Subsonic (JSON)
Subsonic (XML) {
"shortcut" : [
{
"id" : "11" ,
"name" : "Audio books"
},
{
"id" : "10" ,
"name" : "Podcasts"
}
],
"index" : [
{
"artist" : [
{
"id" : "1" ,
"name" : "ABBA"
},
{
"id" : "2" ,
"name" : "Alanis Morisette"
},
{
"id" : "3" ,
"name" : "Alphaville" ,
"starred" : "2013-11-02T12:30:00"
}
],
"name" : "A"
},
{
"artist" : {
"name" : "Bob Dylan" ,
"id" : "4"
},
"name" : "B"
}
],
"child" : [
{
"id" : "111" ,
"parent" : "11" ,
"title" : "Dancing Queen" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "24" ,
"size" : "8421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "146" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Dancing Queen.mp3"
},
{
"id" : "112" ,
"parent" : "11" ,
"title" : "Money, Money, Money" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "25" ,
"size" : "4910028" ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"transcodedContentType" : "audio/mpeg" ,
"transcodedSuffix" : "mp3" ,
"duration" : "208" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Money, Money, Money.mp3"
}
],
"lastModified" : "237462836472342" ,
"ignoredArticles" : "The El La Los Las Le Les"
}
<indexes lastModified= "237462836472342" ignoredArticles= "The El La Los Las Le Les" >
<shortcut id= "11" name= "Audio books" />
<shortcut id= "10" name= "Podcasts" />
<index name= "A" >
<artist id= "1" name= "ABBA" />
<artist id= "2" name= "Alanis Morisette" />
<artist id= "3" name= "Alphaville" starred= "2013-11-02T12:30:00" />
</index>
<index name= "B" >
<artist name= "Bob Dylan" id= "4" />
</index>
<child id= "111" parent= "11" title= "Dancing Queen" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "24" size= "8421341" contentType= "audio/mpeg" suffix= "mp3" duration= "146" bitRate= "128" path= "ABBA/Arrival/Dancing Queen.mp3" />
<child id= "112" parent= "11" title= "Money, Money, Money" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "25" size= "4910028" contentType= "audio/flac" suffix= "flac" transcodedContentType= "audio/mpeg" transcodedSuffix= "mp3" duration= "208" bitRate= "128" path= "ABBA/Arrival/Money, Money, Money.mp3" />
</indexes>
{
"shortcut" : [
{
"id" : "11" ,
"name" : "Audio books"
},
{
"id" : "10" ,
"name" : "Podcasts"
}
],
"index" : [
{
"artist" : [
{
"id" : "1" ,
"name" : "ABBA"
},
{
"id" : "2" ,
"name" : "Alanis Morisette"
},
{
"id" : "3" ,
"name" : "Alphaville" ,
"starred" : "2013-11-02T12:30:00"
}
],
"name" : "A"
},
{
"artist" : {
"name" : "Bob Dylan" ,
"id" : "4"
},
"name" : "B"
}
],
"child" : [
{
"id" : "111" ,
"parent" : "11" ,
"title" : "Dancing Queen" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "24" ,
"size" : "8421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "146" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Dancing Queen.mp3"
},
{
"id" : "112" ,
"parent" : "11" ,
"title" : "Money, Money, Money" ,
"isDir" : "false" ,
"album" : "Arrival" ,
"artist" : "ABBA" ,
"track" : "7" ,
"year" : "1978" ,
"genre" : "Pop" ,
"coverArt" : "25" ,
"size" : "4910028" ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"transcodedContentType" : "audio/mpeg" ,
"transcodedSuffix" : "mp3" ,
"duration" : "208" ,
"bitRate" : "128" ,
"path" : "ABBA/Arrival/Money, Money, Money.mp3"
}
],
"lastModified" : "237462836472342" ,
"ignoredArticles" : "The El La Los Las Le Les"
}
<indexes lastModified= "237462836472342" ignoredArticles= "The El La Los Las Le Les" >
<shortcut id= "11" name= "Audio books" />
<shortcut id= "10" name= "Podcasts" />
<index name= "A" >
<artist id= "1" name= "ABBA" />
<artist id= "2" name= "Alanis Morisette" />
<artist id= "3" name= "Alphaville" starred= "2013-11-02T12:30:00" />
</index>
<index name= "B" >
<artist name= "Bob Dylan" id= "4" />
</index>
<child id= "111" parent= "11" title= "Dancing Queen" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "24" size= "8421341" contentType= "audio/mpeg" suffix= "mp3" duration= "146" bitRate= "128" path= "ABBA/Arrival/Dancing Queen.mp3" />
<child id= "112" parent= "11" title= "Money, Money, Money" isDir= "false" album= "Arrival" artist= "ABBA" track= "7" year= "1978" genre= "Pop" coverArt= "25" size= "4910028" contentType= "audio/flac" suffix= "flac" transcodedContentType= "audio/mpeg" transcodedSuffix= "mp3" duration= "208" bitRate= "128" path= "ABBA/Arrival/Money, Money, Money.mp3" />
</indexes>
Field Type Req. OpenS. Details ignoredArticles
string
Yes The ignored articles lastModified
long
Yes Last time the index was modified in milliseconds after January 1, 1970 UTC shortcut
Array of Artist
No Shortcut child
Array of Child
No Array of children index
Array of Index
No Indexed artists
6.25 - IndexID3 An indexed artist list by ID3 tags.
Example :
OpenSubsonic
Subsonic {
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
}
{
"name" : "C" ,
"artist" : [
{
"id" : "100000016" ,
"name" : "CARNΓN" ,
"coverArt" : "ar-100000016" ,
"albumCount" : 1
},
{
"id" : "100000027" ,
"name" : "Chi.Otic" ,
"coverArt" : "ar-100000027" ,
"albumCount" : 0
}
]
}
Field Type Req. OpenS. Details name
string
Yes Index name artist
Array of Artist
No Artist list
6.26 - internetRadioStation An internetRadioStation.
Example :
OpenSubsonic
Subsonic {
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
}
{
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
}
Field Type Req. OpenS. Details id
string
Yes The Id name
string
Yes The name streamUrl
string
Yes The radio url homePageUrl
string
No Genre name
6.27 - internetRadioStations internetRadioStations.
Example :
OpenSubsonic
Subsonic {
"internetRadioStation" : [
{
"id" : "1" ,
"name" : "HBR1.com - Dream Factory" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/ambient.aac" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "3" ,
"name" : "4ZZZ Community Radio" ,
"streamUrl" : "https://stream.4zzz.org.au:9200/4zzz" ,
"homepageUrl" : "https://4zzzfm.org.au"
}
]
}
{
"internetRadioStation" : [
{
"id" : "1" ,
"name" : "HBR1.com - Dream Factory" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/ambient.aac" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "2" ,
"name" : "HBR1.com - I.D.M. Tranceponder" ,
"streamUrl" : "http://ubuntu.hbr1.com:19800/trance.ogg" ,
"homepageUrl" : "http://www.hbr1.com/"
},
{
"id" : "3" ,
"name" : "4ZZZ Community Radio" ,
"streamUrl" : "https://stream.4zzz.org.au:9200/4zzz" ,
"homepageUrl" : "https://4zzzfm.org.au"
}
]
}
Field Type Req. OpenS. Details internetRadioStation
Array of internetRadioStation
No A list of internetRadioStation
6.28 - ItemDate A date for a media item that may be just a year, or year-month, or full date.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"year" : 2020 ,
"month" : 1 ,
"day" : 1
}
<!-- XML name is the name of the property on the parent object-->
<originalReleaseDate year= "2020" month= "1" day= "1" />
Field Type Req. OpenS. Details year
integer
No Yes The year month
integer
No Yes The month (1-12) day
integer
No Yes The day (1-31)
OpenSubsonic This is a new OpenSubsonic response type.6.29 - ItemGenre A genre returned in list of genres for an item.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details name
string
Yes Yes Genre name
OpenSubsonic This is a new OpenSubsonic response type.6.30 - jukeboxPlaylist jukeboxPlaylist.
Example :
OpenSubsonic
Subsonic {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
{
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
Field Type Req. OpenS. Details currentIndex
int
Yes The current index of the song being played playing
boolean
Yes Whether the queue is currently playing gain
float
Yes Volume, in a range of [0.0, 1.0] position
int
No The current position of the track in seconds entry
Array of Child
No The songs currently enqueued in the jukebox
6.31 - jukeboxStatus jukeboxStatus.
Example :
OpenSubsonic
Subsonic {
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67
}
{
"currentIndex" : 7 ,
"playing" : true ,
"gain" : 0.9 ,
"position" : 67
}
Field Type Req. OpenS. Details currentIndex
int
Yes The current index of the song being played playing
boolean
Yes Whether the queue is currently playing gain
float
Yes Volume, in a range of [0.0, 1.0] position
int
No The current position of the track in seconds
6.32 - license getLicense result.
Example :
OpenSubsonic
Subsonic {
"valid" : true ,
"email" : "demo@demo.org" ,
"licenseExpires" : "2017-04-11T10:42:50.842Z" ,
"trialExpires" : "2017-04-11T10:42:50.842Z"
}
{
"valid" : true ,
"email" : "demo@demo.org" ,
"licenseExpires" : "2017-04-11T10:42:50.842Z" ,
"trialExpires" : "2017-04-11T10:42:50.842Z"
}
Field Type Req. OpenS. Details valid
boolean
Yes The status of the license email
string
No User email licenseExpires
string
No End of license date. [ISO 8601] trialExpires
string
No End of trial date. [ISO 8601]
6.33 - line One line of a song lyric.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"start" : 0 ,
"value" : "It's bugging me"
}
<line start= "0" > It's bugging me</line>
Field Type Req. OpenS. Details value
string
Yes Yes The actual text of this line start
number
No Yes The start time of the lyrics, relative to the start time of the track, in milliseconds. If this is not part of synced lyrics, start must be omitted
OpenSubsonic This is a new OpenSubsonic response type.6.34 - lyrics Lyrics.
Example :
OpenSubsonic
Subsonic {
"artist" : "Metallica" ,
"title" : "Blitzkrieg" ,
"value" : "Let us have peace, let us have life\n\nLet us escape the cruel night\n\nLet us have time, let the sun shine\n\nLet us beware the deadly sign\n\n\n\nThe day is coming\n\nArmageddon's near\n\nInferno's coming\n\nCan we survive the blitzkrieg?\n\nThe blitzkrieg\n\nThe blitzkrieg\n\n\n\nSave us from fate, save us from hate\n\nSave ourselves before it's too late\n\nCome to our need, hear our plea\n\nSave ourselves before the earth bleeds\n\n\n\nThe day is dawning\n\nThe time is near\n\nAliens calling\n\nCan we survive the blitzkrieg?"
}
{
"artist" : "Metallica" ,
"title" : "Blitzkrieg" ,
"value" : "Let us have peace, let us have life\n\nLet us escape the cruel night\n\nLet us have time, let the sun shine\n\nLet us beware the deadly sign\n\n\n\nThe day is coming\n\nArmageddon's near\n\nInferno's coming\n\nCan we survive the blitzkrieg?\n\nThe blitzkrieg\n\nThe blitzkrieg\n\n\n\nSave us from fate, save us from hate\n\nSave ourselves before it's too late\n\nCome to our need, hear our plea\n\nSave ourselves before the earth bleeds\n\n\n\nThe day is dawning\n\nThe time is near\n\nAliens calling\n\nCan we survive the blitzkrieg?"
}
Field Type Req. OpenS. Details value
string
Yes The lyrics artist
string
No The artist name title
string
No The song title
6.35 - lyricsList List of structured lyrics.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"structuredLyrics" : [
{
"displayArtist" : "Muse" ,
"displayTitle" : "Hysteria" ,
"lang" : "eng" ,
"offset" : -100 ,
"synced" : true ,
"line" : [
{
"start" : 0 ,
"value" : "It's bugging me"
},
{
"start" : 2000 ,
"value" : "Grating me"
},
{
"start" : 3001 ,
"value" : "And twisting me around..."
}
]
},
{
"displayArtist" : "Muse" ,
"displayTitle" : "Hysteria" ,
"lang" : "xxx" ,
"offset" : 100 ,
"synced" : false ,
"line" : [
{
"value" : "It's bugging me"
},
{
"value" : "Grating me"
},
{
"value" : "And twisting me around..."
}
]
}
]
}
<lyricsList>
<structuredLyrics displayArtist= "Muse" displayTitle= "Hysteria" lang= "eng" offset= "-100" synced= "true" >
<line start= "0" > It's bugging me</line>
<line start= "2000" > Grating me</line>
<line start= "3001" > And twisting me around...</line>
</structuredLyrics>
<structuredLyrics displayArtist= "Muse" displayTitle= "Hysteria" lang= "xxx" offset= "100" synced= "false" >
<line> It's bugging me</line>
<line> Grating me</line>
<line> And twisting me around...</line>
</structuredLyrics>
</lyricsList>
Field Type Req. OpenS. Details structuredLyrics
Array of structuredLyrics
No Yes Structured lyrics. There can be multiple lyrics of the same type with the same language
OpenSubsonic This is a new OpenSubsonic response type.6.36 - musicFolder MusicFolder.
Example :
OpenSubsonic
Subsonic {
"id" : 4 ,
"name" : "upload"
}
{
"id" : 4 ,
"name" : "upload"
}
Field Type Req. OpenS. Details id
int
Yes The id name
string
No The folder name
6.37 - musicFolders MusicFolders.
Example :
OpenSubsonic
Subsonic {
"musicFolder" : [
{
"id" : 1 ,
"name" : "music"
},
{
"id" : 4 ,
"name" : "upload"
}
]
}
{
"musicFolder" : [
{
"id" : 1 ,
"name" : "music"
},
{
"id" : 4 ,
"name" : "upload"
}
]
}
Field Type Req. OpenS. Details musicFolder
Array of musicFolder
No The folders
6.38 - NewestPodcasts NewestPodcasts.
Example :
OpenSubsonic
Subsonic {
"episode" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
]
}
{
"episode" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
]
}
6.39 - nowPlaying nowPlaying.
Example :
OpenSubsonic
Subsonic {
"entry" : [
{
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
]
}
{
"entry" : [
{
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
]
}
Field Type Req. OpenS. Details entry
Array of NowPlayingEntry
Yes A list of NowPlayingEntry
6.40 - NowPlayingEntry NowPlayingEntry.
Example :
OpenSubsonic
Subsonic {
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
{
"id" : "300115266" ,
"parent" : "200147046" ,
"title" : "Take the Home" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200147046" ,
"album" : "How I Learned to Love Our Robot Overlords" ,
"artistId" : "100002619" ,
"artist" : "Raggedy Angry" ,
"coverArt" : "300115266" ,
"duration" : 227 ,
"bitRate" : 222 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 3 ,
"track" : 7 ,
"year" : 2010 ,
"genre" : "Industrial" ,
"size" : 6341039 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Raggedy Angry/(2010) How I Learned to Love Our Robot Overlords/1-07 - Take the Home.mp3" ,
"username" : "user" ,
"minutesAgo" : 0 ,
"playerId" : 0
}
OpenSubsonic NowPlayingEntry
extends
Child
(See
Child
documentation for the corresponding fields)
Field Type Req. OpenS. Details username
string
Yes The username minutesAgo
integer
Yes Last update playerId
integer
Yes Player Id playerName
string
No Player name
6.41 - OpenSubsonicExtension A supported OpenSubsonic API extension.
Example :
OpenSubsonic
Subsonic {
"name" : "template" ,
"versions" : [
1 ,
2
]
}
Field Type Req. OpenS. Details name
String
Yes Yes The name of the extension. versions
Array of int
Yes Yes The list of supported versions of the this extension.
OpenSubsonic This is a new response type.6.42 - playlist Playlist.
Example :
OpenSubsonic
Subsonic {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304
}
{
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304
}
Field Type Req. OpenS. Details id
string
Yes Id of the playlist name
string
Yes Name of the playlist comment
string
No A commnet owner
string
No Owner of the playlist public
boolean
No Is the playlist public songCount
int
Yes number of songs duration
int
Yes Playlist duration in seconds created
string
Yes Creation date [ISO 8601] changed
string
Yes Last changed date [ISO 8601] coverArt
string
No A cover Art Id allowedUser
Array of string
No A list of allowed usernames
6.43 - playlists Playlists.
Example :
OpenSubsonic
Subsonic {
"playlist" : [
{
"id" : "800000003" ,
"name" : "random - admin - private (admin)" ,
"owner" : "admin" ,
"public" : false ,
"created" : "2021-02-23T04:35:38+00:00" ,
"changed" : "2021-02-23T04:35:38+00:00" ,
"songCount" : 43 ,
"duration" : 17875
},
{
"id" : "800000002" ,
"name" : "random - admin - public (admin)" ,
"owner" : "admin" ,
"public" : true ,
"created" : "2021-02-23T04:34:56+00:00" ,
"changed" : "2021-02-23T04:34:56+00:00" ,
"songCount" : 43 ,
"duration" : 17786
}
]
}
{
"playlist" : [
{
"id" : "800000003" ,
"name" : "random - admin - private (admin)" ,
"owner" : "admin" ,
"public" : false ,
"created" : "2021-02-23T04:35:38+00:00" ,
"changed" : "2021-02-23T04:35:38+00:00" ,
"songCount" : 43 ,
"duration" : 17875
},
{
"id" : "800000002" ,
"name" : "random - admin - public (admin)" ,
"owner" : "admin" ,
"public" : true ,
"created" : "2021-02-23T04:34:56+00:00" ,
"changed" : "2021-02-23T04:34:56+00:00" ,
"songCount" : 43 ,
"duration" : 17786
}
]
}
Field Type Req. OpenS. Details playlist
Array of playlist
No A list of playlist
6.44 - playlistWithSongs Playlist with songs.
Example :
OpenSubsonic
Subsonic {
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
{
"id" : "800000075" ,
"name" : "testcreate" ,
"owner" : "user" ,
"public" : true ,
"created" : "2023-03-16T03:18:41+00:00" ,
"changed" : "2023-03-16T03:18:41+00:00" ,
"songCount" : 1 ,
"duration" : 304 ,
"entry" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
}
]
}
Field Type Req. OpenS. Details id
string
Yes Id of the playlist name
string
Yes Name of the playlist comment
string
No A commnet owner
string
No Owner of the playlist public
boolean
No Is the playlist public songCount
int
Yes number of songs duration
int
Yes Playlist duration in seconds created
string
Yes Creation date [ISO 8601] changed
string
Yes Last changed date [ISO 8601] coverArt
string
No A cover Art Id allowedUser
Array of string
No A list of allowed usernames entry
Array of Child
No The list of songs
6.45 - PlayQueue NowPlayingEntry.
Example :
OpenSubsonic
Subsonic {
"current" : "1234" ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
{
"current" : "1234" ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
OpenSubsonic Errata: In the original spec, current
is required to be an int
.
However, as child
ids are strings, this is updated to note that the id should be a string to be consistent.Field Type Req. OpenS. Details current
string
No ID of currently playing track position
long
No Position in milliseconds of currently playing track username
string
Yes The user this queue belongs to changed
string
Yes Date modified [ISO 8601] changedBy
string
Yes Name of client app entry
Array of Child
No The list of songs in the queue
6.46 - PlayQueueByIndex NowPlayingEntry, with index-based positioning.
Example :
OpenSubsonic
Subsonic {
"currentIndex" : 0 ,
"position" : 1000 ,
"username" : "user" ,
"changed" : "2023-03-10T02:19:35.784818075Z" ,
"changedBy" : "example client" ,
"entry" : [
{
"id" : "1234" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "1234" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
}
]
}
OpenSubsonic Errata: In the original spec, current
is required to be an int
.
However, as child
ids are strings, this is updated to note that the id should be a string to be consistent.Field Type Req. OpenS. Details currentIndex
long
No The 0-based index of the current playing track position
long
No Position in milliseconds of currently playing track username
string
Yes The user this queue belongs to changed
string
Yes Date modified [ISO 8601] changedBy
string
Yes Name of client app entry
Array of Child
No The list of songs in the queue
6.47 - PodcastChannel A Podcast channel.
Example :
OpenSubsonic
Subsonic {
"channel" : {
"id" : "1" ,
"url" : "http://downloads.bbc.co.uk/podcasts/fivelive/drkarl/rss.xml" ,
"title" : "Dr Karl and the Naked Scientist" ,
"description" : "Dr Chris Smith aka The Naked Scientist with the latest news from the world of science and Dr Karl answers listeners' science questions." ,
"coverArt" : "pod-1" ,
"originalImageUrl" : "http://downloads.bbc.co.uk/podcasts/fivelive/drkarl/drkarl.jpg" ,
"status" : "completed" ,
"episode" : [
{
"id" : "34" ,
"streamId" : "523" ,
"channelId" : "1" ,
"title" : "Scorpions have re-evolved eyes" ,
"description" : "This week Dr Chris fills us in on the UK's largest free science festival, plus all this week's big scientific discoveries." ,
"publishDate" : "2011-02-03T14:46:43" ,
"status" : "completed" ,
"parent" : "11" ,
"isDir" : "false" ,
"year" : "2011" ,
"genre" : "Podcast" ,
"coverArt" : "24" ,
"size" : "78421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "3146" ,
"bitRate" : "128" ,
"path" : "Podcast/drkarl/20110203.mp3"
}
]
}
}
{
"channel" : {
"id" : "1" ,
"url" : "http://downloads.bbc.co.uk/podcasts/fivelive/drkarl/rss.xml" ,
"title" : "Dr Karl and the Naked Scientist" ,
"description" : "Dr Chris Smith aka The Naked Scientist with the latest news from the world of science and Dr Karl answers listeners' science questions." ,
"coverArt" : "pod-1" ,
"originalImageUrl" : "http://downloads.bbc.co.uk/podcasts/fivelive/drkarl/drkarl.jpg" ,
"status" : "completed" ,
"episode" : [
{
"id" : "34" ,
"streamId" : "523" ,
"channelId" : "1" ,
"title" : "Scorpions have re-evolved eyes" ,
"description" : "This week Dr Chris fills us in on the UK's largest free science festival, plus all this week's big scientific discoveries." ,
"publishDate" : "2011-02-03T14:46:43" ,
"status" : "completed" ,
"parent" : "11" ,
"isDir" : "false" ,
"year" : "2011" ,
"genre" : "Podcast" ,
"coverArt" : "24" ,
"size" : "78421341" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "3146" ,
"bitRate" : "128" ,
"path" : "Podcast/drkarl/20110203.mp3"
}
]
}
}
Field Type Req. OpenS. Details id
string
Yes The channel ID url
string
Yes Podcast channel URL title
string
No The channel title description
string
No The channel description coverArt
string
No ID used for retrieving cover art originalImageUrl
string
No URL for original image of podcast channel status
PodcastStatus Yes Channel status errorMessage
string
No An error message episode
An array of PodcastEpisode No Podcast episodes with this channel
6.48 - PodcastEpisode A Podcast episode.
Example :
OpenSubsonic
Subsonic {
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
}
OpenSubsonic PodcastEntry
extends
Child
(See
Child
documentation for the corresponding fields)
Field Type Req. OpenS. Details streamId
string
No ID used for streaming podcast channelId
string
Yes ID of the podcast channel description
string
No Episode description status
PodcastStatus Yes Podcast status publishDate
string
No Date the episode was published [ISO 8601]
6.49 - podcasts Podcasts.
Example :
OpenSubsonic
Subsonic {
"channel" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
},
{
"id" : "3" ,
"url" : "https://example.com/404" ,
"status" : "error" ,
"errorMessage" : "Not Found"
}
]
}
{
"channel" : [
{
"id" : "7390" ,
"parent" : "7389" ,
"isDir" : "false" ,
"title" : "Jonas Gahr StΓΈre" ,
"album" : "NRK β Hallo P3" ,
"artist" : "Podcast" ,
"year" : "2015" ,
"coverArt" : "7389" ,
"size" : "41808585" ,
"contentType" : "audio/mpeg" ,
"suffix" : "mp3" ,
"duration" : "2619" ,
"bitRate" : "128" ,
"isVideo" : "false" ,
"created" : "2015-09-07T20:07:31.000Z" ,
"artistId" : "453" ,
"type" : "podcast" ,
"streamId" : "7410" ,
"channelId" : "17" ,
"description" : "Jonas Gahr StΓΈre fra Arbeiderpartiet er med i dagens partilederutspΓΈrring i Hallo P3!" ,
"status" : "completed" ,
"publishDate" : "2015-09-07T15:29:00.000Z"
},
{
"id" : "3" ,
"url" : "https://example.com/404" ,
"status" : "error" ,
"errorMessage" : "notFound"
}
]
}
Field Type Req. OpenS. Details channel
An array of PodcastChannel No Podcast channel(s)
6.50 - PodcastStatus An enumeration of possible podcast statuses.
A podcast status is a string type taking one of the following values:
new
downloading
completed
error
deleted
skipped
6.51 - RecordLabel A record label for an album.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details name
string
Yes Yes The record label name.
OpenSubsonic This is a new OpenSubsonic response type.6.52 - ReplayGain The replay gain data of a song.
Example :
OpenSubsonic
Subsonic {
"trackGain" : 0.1 ,
"albumGain" : 1.1 ,
"trackPeak" : 9.2 ,
"albumPeak" : 0 ,
"baseGain" : 0 ,
"fallbackGain" : -8.1
}
Field Type Req. OpenS. Details trackGain
number
No Yes The track replay gain value. (In Db) albumGain
number
No Yes The album replay gain value. (In Db) trackPeak
number
No Yes The track peak value. (Must be positive) albumPeak
number
No Yes The album peak value. (Must be positive) baseGain
number
No Yes The base gain value. (In Db) (Ogg Opus Output Gain for example) fallbackGain
number
No Yes An optional fallback gain that clients should apply when the corresponding gain value is missing. (Can be computed from the tracks or exposed as an user setting.)
Note : If the data is not present the field must be ommited in the answer. (But the replayGain field on Child
must always be present)
OpenSubsonic This is a new OpenSubsonic response type.6.53 - scanStatus Scan status information.
Example :
OpenSubsonic
Subsonic {
"scanning" : false ,
"count" : 0
}
{
"scanning" : false ,
"count" : 0
}
Field Type Req. OpenS. Details scanning
boolean
Yes The status of the scan count
int
No Scanned item count
6.54 - searchResult searchResult.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details
6.55 - searchResult2 searchResult2.
Example :
OpenSubsonic
Subsonic {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
{
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
Field Type Req. OpenS. Details artist
Array of Artist
No Starred artists album
Array of Child
No Starred albums song
Array of Child
No Starred songs
6.56 - searchResult3 search3 result.
Example :
OpenSubsonic
Subsonic {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"played" : "2023-03-28T00:45:13Z" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"userRating" : 4 ,
"songCount" : 8 ,
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
{
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8 ,
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"played" : "2023-03-26T22:27:46Z" ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
Field Type Req. OpenS. Details artist
Array of ArtistID3
No Matching artists album
Array of AlbumID3
No Matching albums song
Array of Child
No Matching songs
6.57 - share Share.
Example :
OpenSubsonic
Subsonic {
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
Field Type Req. OpenS. Details id
string
Yes The share Id url
string
Yes The share url description
string
No A description username
string
Yes The username created
string
Yes Creation date [ISO 8601] expires
string
No Share expiration [ISO 8601] lastVisited
string
No Last visit [ISO 8601] visitCount
int
Yes Visit count entry
Array of Child
No A list of share
6.58 - shares Shares.
Example :
OpenSubsonic
Subsonic {
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
{
"share" : [
{
"id" : "12" ,
"url" : "http://localhost:8989/share.php?id=12&secret=fXlKyEv3" ,
"description" : "Forget and Remember (Comfort Fit)" ,
"username" : "user" ,
"created" : "2023-03-16T04:13:09+00:00" ,
"visitCount" : 0 ,
"entry" : [
{
"id" : "300000116" ,
"parent" : "200000021" ,
"title" : "Can I Help U?" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000116" ,
"duration" : 103 ,
"bitRate" : 216 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 1 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 2811819 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/1 - Can I Help U?.mp3"
},
{
"id" : "300000121" ,
"parent" : "200000021" ,
"title" : "Planetary Picknick" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000021" ,
"album" : "Forget and Remember" ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"coverArt" : "300000121" ,
"duration" : 358 ,
"bitRate" : 238 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 2 ,
"year" : 2005 ,
"genre" : "Hip-Hop" ,
"size" : 10715592 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "user/Comfort Fit/Forget And Remember/2 - Planetary Picknick.mp3"
}
]
}
]
}
Field Type Req. OpenS. Details share
Array of share
No A list of share
6.59 - similarSongs SimilarSongs list.
Example :
OpenSubsonic
Subsonic {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
{
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
Field Type Req. OpenS. Details song
Array of Child
No List of songs
6.60 - similarSongs2 SimilarSongs2 list.
Example :
OpenSubsonic
Subsonic {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
{
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
Field Type Req. OpenS. Details song
Array of Child
No List of songs
6.61 - song song.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details
6.62 - songs Songs list.
Example :
OpenSubsonic
Subsonic {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
{
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
Field Type Req. OpenS. Details song
Array of Child
No List of songs
6.63 - starred starred.
Example :
OpenSubsonic
Subsonic {
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
{
"artist" : [
{
"id" : "100000002" ,
"name" : "Synthetic" ,
"coverArt" : "ar-100000002" ,
"starred" : "2021-02-22T05:54:18Z"
}
],
"album" : [
{
"id" : "200000021" ,
"parent" : "100000036" ,
"album" : "Forget and Remember" ,
"title" : "Forget and Remember" ,
"name" : "Forget and Remember" ,
"isDir" : true ,
"coverArt" : "al-200000021" ,
"songCount" : 20 ,
"created" : "2021-07-22T02:09:31+00:00" ,
"duration" : 4248 ,
"playCount" : 0 ,
"artistId" : "100000036" ,
"artist" : "Comfort Fit" ,
"year" : 2005 ,
"genre" : "Hip-Hop"
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
Field Type Req. OpenS. Details artist
Array of Artist
No Starred artists album
Array of Child
No Starred albums song
Array of Child
No Starred songs
6.64 - starred2 starred2.
Example :
OpenSubsonic
Subsonic {
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
{
"artist" : [
{
"id" : "37ec820ca7193e17040c98f7da7c4b51" ,
"name" : "2 Mello" ,
"coverArt" : "ar-37ec820ca7193e17040c98f7da7c4b51_0" ,
"albumCount" : 1 ,
"userRating" : 5 ,
"artistImageUrl" : "https://demo.org/image.jpg" ,
"starred" : "2017-04-11T10:42:50.842Z"
}
],
"album" : [
{
"id" : "ad0f112b6dcf83de5e9cae85d07f0d35" ,
"name" : "8-bit lagerfeuer" ,
"artist" : "pornophonique" ,
"year" : 2007 ,
"coverArt" : "al-ad0f112b6dcf83de5e9cae85d07f0d35_640a93a8" ,
"starred" : "2023-03-22T01:51:06Z" ,
"duration" : 1954 ,
"playCount" : 97 ,
"genre" : "Hip-Hop" ,
"created" : "2023-03-10T02:19:35.784818075Z" ,
"artistId" : "91c3901ac465b9efc439e4be4270c2b6" ,
"songCount" : 8
}
],
"song" : [
{
"id" : "082f435a363c32c57d5edb6a678a28d4" ,
"parent" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"isDir" : false ,
"title" : "\"polar expedition\"" ,
"album" : "Live at The Casbah - 2005-04-29" ,
"artist" : "The New Deal" ,
"track" : 4 ,
"year" : 2005 ,
"coverArt" : "mf-082f435a363c32c57d5edb6a678a28d4_6410b3ce" ,
"size" : 19866778 ,
"contentType" : "audio/flac" ,
"suffix" : "flac" ,
"starred" : "2023-03-27T09:45:27Z" ,
"duration" : 178 ,
"bitRate" : 880 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"path" : "The New Deal/Live at The Casbah - 2005-04-29/04 - \"polar expedition\".flac" ,
"playCount" : 8 ,
"discNumber" : 1 ,
"created" : "2023-03-14T17:51:22.112827504Z" ,
"albumId" : "e8a0685e3f3ec6f251649af2b58b8617" ,
"artistId" : "97e0398acf63f9fb930d7d4ce209a52b" ,
"type" : "music" ,
"isVideo" : false
}
]
}
Field Type Req. OpenS. Details artist
Array of artist
No Starred artists album
Array of Child
No Starred albums song
Array of Child
No Starred songs
6.65 - structuredLyrics Structured lyrics.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"displayArtist" : "Muse" ,
"displayTitle" : "Hysteria" ,
"lang" : "xxx" ,
"offset" : -100 ,
"synced" : true ,
"line" : [
{
"start" : 0 ,
"value" : "It's bugging me"
},
{
"start" : 2000 ,
"value" : "Grating me"
},
{
"start" : 3001 ,
"value" : "And twisting me around..."
}
]
}
<structuredLyrics displayArtist= "Muse" displayTitle= "Hysteria" lang= "xxx" offset= "-100" synced= "true" >
<line start= "0" > It's bugging me</line>
<line start= "2000" > Grating me</line>
<line start= "3001" > And twisting me around...</line>
</structuredLyrics>
Field Type Req. OpenS. Details lang
string
Yes Yes The lyrics language (ideally ISO 639). If the language is unknown (e.g. lrc file), the server must return und
(ISO standard) or xxx
(common value for taggers) synced
boolean
Yes Yes True if the lyrics are synced, false otherwise line
Array of line
Yes Yes The actual lyrics. Ordered by start time (synced) or appearance order (unsynced) displayArtist
string
No Yes The artist name to display. This could be the localized name, or any other value displayTitle
string
No Yes The title to display. This could be the song title (localized), or any other value offset
number
No Yes The offset to apply to all lyrics, in milliseconds. Positive means lyrics appear sooner, negative means later. If not included, the offset must be assumed to be 0
OpenSubsonic This is a new OpenSubsonic response type.6.66 - subsonic-response Common answer wrapper.
Example :
OpenSubsonic
Subsonic {
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1" ,
"type" : "AwesomeServerName" ,
"serverVersion" : "0.1.3 (tag)" ,
"openSubsonic" : true
}
}
{
"subsonic-response" : {
"status" : "ok" ,
"version" : "1.16.1"
}
}
Field Type Req. OpenS. Details status
string
Yes The command result. ok
or failed
version
string
Yes The server supported Subsonic API version. type
string
Yes Yes The server actual name. [Ex: Navidrome
or gonic
] serverVersion
string
Yes Yes The server actual version. [Ex: 1.2.3 (beta)
] openSubsonic
boolean
Yes Yes Must return true if the server support OpenSubsonic API v1 error
error
No The error details when status
is failed
OpenSubsonic New fields are added:
type
containing the server type/name (Ex: Navidrome or gonic). Mandatory to help clients adapt to actual Subsonic API support.serverVersion
containing the server version (Ex: 1.2.3) this is different from the version
field that expose the Subsonic API version. Mandatory for clients to be able to detect servers updates and check again supported OpenSubsonic extensions.openSubsonic
must return true if the server support OpenSubsonic API v16.67 - tokenInfo Information about an API key.
Example :
OpenSubsonic JSON
OpenSubsonic XML
Subsonic {
"tokenInfo" : {
"username" : "token username"
}
}
<tokenInfo username= "token username" ></tokenInfo>
Field Type Req. OpenS. Details username
string Yes Yes Username associated with token
6.68 - topSongs TopSongs list.
Example :
OpenSubsonic
Subsonic {
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
{
"song" : [
{
"id" : "300000060" ,
"parent" : "200000002" ,
"title" : "BrownSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000060" ,
"duration" : 304 ,
"bitRate" : 20 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"userRating" : 5 ,
"averageRating" : 5 ,
"track" : 4 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 792375 ,
"discNumber" : 1 ,
"suffix" : "wma" ,
"contentType" : "audio/x-ms-wma" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007/04-Synthetic_-_BrownSmokeYSBM20k22khS.wma"
},
{
"id" : "300000055" ,
"parent" : "200000002" ,
"title" : "Red&GreenSmoke" ,
"isDir" : false ,
"isVideo" : false ,
"type" : "music" ,
"albumId" : "200000002" ,
"album" : "Colorsmoke EP" ,
"artistId" : "100000002" ,
"artist" : "Synthetic" ,
"coverArt" : "300000055" ,
"duration" : 400 ,
"bitRate" : 64 ,
"bitDepth" : 16 ,
"samplingRate" : 44100 ,
"channelCount" : 2 ,
"track" : 5 ,
"year" : 2007 ,
"genre" : "Electronic" ,
"size" : 3209886 ,
"discNumber" : 1 ,
"suffix" : "mp3" ,
"contentType" : "audio/mpeg" ,
"path" : "Synthetic/Synthetic_-_Colorsmoke_EP-20k217-2007(1)/05-Synthetic_-_RedGreenSmokePM20k22khS_64kb.mp3"
}
]
}
Field Type Req. OpenS. Details song
Array of Child
No List of songs
6.69 - user user.
Example :
OpenSubsonic
Subsonic {
"folder" : [
"1" ,
"3"
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
{
"folder" : [
"1" ,
"3"
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
Field Type Req. OpenS. Details username
string
Yes Username scrobblingEnabled
boolean
Yes Whether scrobling is enabled for the user maxBitRate
int
No adminRole
boolean
Yes Whether the user is an admin settingsRole
boolean
Yes Whether the user is can edit settings downloadRole
boolean
Yes Whether the user can download uploadRole
boolean
Yes Whether the user can upload playlistRole
boolean
Yes Whether the user can create playlists coverArtRole
boolean
Yes Whether the user can get cover art commentRole
boolean
Yes Whether the user can create comments podcastRole
boolean
Yes Whether the user can create/refresh podcasts streamRole
boolean
Yes Whether the user can stream jukeboxRole
boolean
Yes Whether the user can control the jukebox shareRole
boolean
Yes Whether the user can create a stream videoConversionRole
boolean
Yes Whether the user can convert videos avatarLastChanged
string
No Last time the avatar was changed [ISO 8601] folder
Array of int
No Folder ID(s)
6.70 - users users.
Example :
OpenSubsonic
Subsonic {
"user" : [
{
"folder" : [
"1" ,
"3"
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
]
}
{
"user" : [
{
"folder" : [
"1" ,
"3"
],
"username" : "sindre" ,
"email" : "sindre@activeobjects.no" ,
"scrobblingEnabled" : "true" ,
"adminRole" : "false" ,
"settingsRole" : "true" ,
"downloadRole" : "true" ,
"uploadRole" : "false" ,
"playlistRole" : "true" ,
"coverArtRole" : "true" ,
"commentRole" : "true" ,
"podcastRole" : "true" ,
"streamRole" : "true" ,
"jukeboxRole" : "true" ,
"shareRole" : "false"
}
]
}
Field Type Req. OpenS. Details user
Array of user
No Array of users
6.71 - videoInfo videoInfo.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details
6.72 - videos videos.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details
7 - OpenSubsonic API versions OpenSubsonic API versions.
Versions This table shows the supported extensions by OpenSubsonic versions:
Note : Since extensions are optional, more extensions can be added over time to the same OpenSubsonic API version.
See : OpenSubsonic changes
for the global list of OpenSubsonic changes.
8 - Subsonic API versions Subsonic API versions.
Versions This table shows the REST API version implemented in different Subsonic versions:
Note that a Subsonic-compatible server is backward compatible with a REST client if and only if the major version is the same, and the minor version of the client is less than or equal to the server’s. For example, if the server has REST API version 2.2, it supports client versions 2.0, 2.1 and 2.2, but not versions 1.x, 2.3+ or 3.x. The third part of the version number is not used to determine compatibility.
OpenSubsonic OpenSubsonic servers should support at least 1.14.0 . It is not required to support version 1.16.1 , but this is still highly recommended.9 - OpenAPI schema OpenAPI schema documentation and development guidelines.
Can be found here Only relevant to OpenSubsonic servers.
WIP This work is still ongoing, there are some inconsistencies between the docs and the schema. Users should still check the actual docs and servers results until work on it is completely finished.List of known differences compared to official documentation Some undocumented typo fixes Added minimum: 0 to integer types where it’s implied (count, offset, unix timestamp, position) Requires the use of format=json
parameter . xml response formats are not supported as of the time of writing this document.All extensions are added to the schema and tagged as “Extension”,
and have an additional 404 return type as well that described as “Not
Implemented” Excluded examples. They need to be carefully added incrementally to see how they are merged in Swagger/Redoc docs. Parameters only existing via Extensions are always added and marked in their description field HTTP form POST extensions have an additional response “405 - Method
Not Allowed” as an additional way to indicate when they are not
supported.
- HTTP form POST extension support might be stricter than what’s
allowed (global params - auth and format params - only allowed as query
params, endpoint specific params are the only ones allowed in request
body) Building By default the schema is in parts to for easier maintainability. You can build it with the command below.
This will output the schema to content/en/docs/Openapi/openapi.json
and also validate the output for correctness. The end result can be used as-is.
Preservation of previous versions When a version change happens in the spec, the previous versions’ built openapi.json
should be placed into content/en/docs/Openapi/openapi-x.x.x.json
for archiving purposes.
Usage Ideally this should be used as a reference and for automatic client/server code generation.
Client Code Generation Python Typescript Kotlin Dart C# Server Code Generation π§ Not Tested
Development When the documentation is changed the OpenAPI schema MUST BE updated in openapi
folder and vice-versa.
Folder Structure endpoints
- matches paths
section in openapi.json
, files inside should be added to said section.
endpoints/{endpoint}.json/{endpoint}/
- supporting schemas for en endpoint, should be added to components/schemas
section in openapi.json
responses
- matches components/responses
section in openapi.json
and files inside should be added to said section.
schemas
- matches components/schemas
section in openapi.json
and files inside should be added to said section.
Schema validation during development The fragmented files are not validated in dev environments, so one of 2 ways are recommended when editing.
Edit/add files. Keep building the output to static/openapi.json
and keep it open to catch errors.
Add new endpoints/schemas to openapi/openapi.json
directly. Move them to different files when you are done with them.
In the future $schema
tag could be added to each of them to make in-editor validation work but that requires the relevant parts of OpenAPI schema to be served from somewhere in a broken up form - you can add "$schema": "https://schemas.sourcemeta.com/openapi/v3.0/schema.json"
but you can’t add "$schema": "https://schemas.sourcemeta.com/openapi/v3.0/schema.json#definitions/Schema"
9.1 - OpenAPI OpenSubsonic Swagger UI Reference for the OpenSubsonic API
9.2 - OpenAPI OpenSubsonic Redoc UI Reference for the OpenSubsonic API