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 uYes **The username. pYes *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. tYes *(Since 1.13.0 ) The authentication token computed as md5(password + salt) . See below for details. sYes *(Since 1.13.0 ) A random string (“salt”) used as input for computing the password hash. See below for details. apiKeyYes **Yes [OS] An API key used for authentication vYes The protocol version implemented by the client, i.e., the version of the subsonic-rest-api.xsd schema used (see below). cYes A unique string identifying the client application. fNo 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 errorerrorYes The error details. codeintYes The error code. messagestringNo 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 authentication 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 messageYes 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 usernameYes The name of the user which should change its password. passwordYes 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 idYes ID of the media file to bookmark. If a bookmark already exists for this file it will be overwritten. positionYes The position (in milliseconds) within the media file. commentNo 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 streamUrlYes The stream URL for the station. nameYes The user-defined name for the station. homepageUrlNo 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 playlistIdYes (if updating)The playlist ID. nameYes (if creating)The human-readable name of the playlist. songIdNo 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 playlistplaylistYes 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 urlYes 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 idYes ID of a song, album or video to share. Use one id parameter for each entry to share. descriptionNo A user-defined description that will be displayed to people visiting the shared media. expiresNo 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 sharessharesYes 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 usernameYes The name of the new user. passwordYes The password of the new user, either in clear text of hex-encoded (see above). emailYes The email address of the new user. ldapAuthenticatedNo false Whether the user is authenticated in LDAP. adminRoleNo false Whether the user is administrator. settingsRoleNo true Whether the user is allowed to change personal settings and password. streamRoleNo true Whether the user is allowed to play files. jukeboxRoleNo false Whether the user is allowed to play files in jukebox mode. downloadRoleNo false Whether the user is allowed to download files. uploadRoleNo false Whether the user is allowed to upload files. playlistRoleNo false Whether the user is allowed to create and delete playlists. Since 1.8.0, changing this role has no effect. coverArtRoleNo false Whether the user is allowed to change cover art and tags. commentRoleNo false Whether the user is allowed to create and edit comments and ratings. podcastRoleNo false Whether the user is allowed to administrate Podcasts. shareRoleNo false (Since 1.8.0 ) Whether the user is allowed to share files with anyone. videoConversionRoleNo false (Since 1.15.0 ) Whether the user is allowed to start video conversions. musicFolderIdNo 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 idYes 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 idYes 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 idYes 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 idYes 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 idYes 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 idYes 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 usernameYes 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 idYes 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 idYes 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 idYes 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 idYes 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 albumInfoalbumInfoYes 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 idYes 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 albumInfoalbumInfoYes 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 typeYes 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. sizeNo 10 The number of albums to return. Max 500. offsetNo 0 The list offset. Useful if you for example want to page through the list of newest albums. fromYearYes (if type is byYear)The first year in the range. If fromYear > toYear a reverse chronological list is returned. toYearYes (if type is byYear)The last year in the range. genreYes (if type is byGenre)The name of the genre, e.g., “Rock”. musicFolderIdNo (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 albumListalbumListYes 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 typeYes 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. sizeNo 10 The number of albums to return. Max 500. offsetNo 0 The list offset. Useful if you for example want to page through the list of newest albums. fromYearYes (if type is byYear)The first year in the range. If fromYear > toYear a reverse chronological list is returned. toYearYes (if type is byYear)The last year in the range. genreYes (if type is byGenre)The name of the genre, e.g., “Rock”. musicFolderIdNo (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 albumList2albumList2Yes 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 idYes 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 artistartistYes 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 idYes The artist, album or song ID. countNo 20 Max number of similar artists to return. includeNotPresentNo 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 artistInfoartistInfoYes 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 idYes The artist, album or song ID. countNo 20 Max number of similar artists to return. includeNotPresentNo 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 artistInfo2artistInfo2Yes 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 musicFolderIdNo 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 artistsartistsYes 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 usernameYes 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 bookmarksbookmarksYes 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 idYes The ID of the video. formatNo 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 sinceNo 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 chatMessageschatMessagesYes 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 idYes The coverArt ID. Returned by most entities likes Child or AlbumID3 sizeNo If specified, scale image to this size.
OpenSubsonic In the original Subsonic, the id could refer to several entities: song, album or artist.
For OpenSubsonic servers, id refers to coverArt ID only.
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 genresgenresYes 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 musicFolderIdNo If specified, only return artists in the music folder with the given ID. See getMusicFolders . ifModifiedSinceNo 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 indexesindexesYes 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 licenselicenseYes 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 artistNo The artist name. titleNo 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 lyricslyricsYes 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 idYes 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 lyricsListlyricsListYes 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 idYes 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 directorydirectoryYes 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 musicFoldersmusicFoldersYes 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 countNo 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 nowPlayingnowPlayingYes 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 openSubsonicExtensionsAn 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 idyes 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 playlistplaylistYes 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 usernameno (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 playlistsplaylistsYes 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 playQueueplayQueueYes 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 idYes 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 podcastEspisodepodcastEpisodeYes 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 includeEpisodesNo true (Since 1.9.0 ) Whether to include Podcast episodes in the returned result. idNo (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 podcastspodcastsYes The podcasts
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 sizeNo 10 The maximum number of songs to return. Max 500. genreNo Only returns songs belonging to this genre. fromYearNo Only return songs published after or in this year. toYearNo Only return songs published before or in this year. musicFolderIdNo 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 randomSongssongsYes 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 scanStatusscanStatusYes 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 sharessharesYes 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 idYes The artist, album or song ID. countNo 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 similarSongssimilarSongsYes 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 idYes The artist ID. countNo 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 similarSongs2similarSongs2Yes 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 idYes 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 songChildYes 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 genreYes The genre, as returned by getGenres. countNo 10 The maximum number of songs to return. Max 500. offsetNo 0 The offset. Useful if you want to page through the songs in a genre. musicFolderIdNo (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 songsByGenresongsYes 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 musicFolderIdNo (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 starredstarredYes 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 musicFolderIdNo (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 starred2starred2Yes 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 artistYes The artist name. countNo 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 topSongstopSongsYes 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 usernameYes 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 useruserYes 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 usersusersYes 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 idYes 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 videoInfovideoInfoYes 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 videosvideosYes 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 idYes A string which uniquely identifies the media file to stream. bitRateNo 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 audioTrackNo 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 actionYes 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 indexNo Used by skip and remove. Zero-based index of the song to skip to or remove. offsetNo (Since 1.7.0 ) Used by skip. Start playing this many seconds into the track. idNo 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.) gainNo 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 idNo ID of a song in the play queue. Use one id parameter for each song in the play queue. currentYes (subsonic) / No (OpenSubsonic)* The ID of the current playing song. positionNo The position in milliseconds within the currently playing song.
Errata/OpenSubsonic * In the original Subsonic, despite the claims that current is optional, it was required and must be in the list of id.
Note : For OpenSubsonic servers, id is optional. Send a call without any parameters to clear the currently saved queue.
For OpenSubsonic servers only, current is required unless id is empty.
If position is empty, servers should treat the position as 0.
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"
}
} 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 idNo ID of a song in the play queue. Use one id parameter for each song in the play queue. currentIndexYes, unless no id is provided The 0-based index of the current playing track. This must be between 0 and length of the queue - 1 (inclusive). positionNo 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.
currentIndex is required unless no id is provided.
If position is empty, servers should treat the position as 0.
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 idYes A string which uniquely identifies the file to scrobble. timeNo (Since 1.8.0 ) The time (in milliseconds since 1 Jan 1970) at which the song was listened to. submissionNo 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 artistNo Artist to search for. albumNo Album to search for. titleNo Song title to search for. anyNo Searches all fields. countNo 20 Maximum number of results to return. offsetNo 0 Search result offset. Used for paging. newerThanNo 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 searchResultsearchResultYes 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 queryYes Search query. artistCountNo 20 Maximum number of artists to return. artistOffsetNo 0 Search result offset for artists. Used for paging. albumCountNo 20 Maximum number of albums to return. albumOffsetNo 0 Search result offset for albums. Used for paging. songCountNo 20 Maximum number of songs to return. songOffsetNo 0 Search result offset for songs. Used for paging. musicFolderIdNo (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 searchResult2searchResult2Yes 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 queryYes See below* Search query. artistCountNo 20 Maximum number of artists to return. artistOffsetNo 0 Search result offset for artists. Used for paging. albumCountNo 20 Maximum number of albums to return. albumOffsetNo 0 Search result offset for albums. Used for paging. songCountNo 20 Maximum number of songs to return. songOffsetNo 0 Search result offset for songs. Used for paging. musicFolderIdNo (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 searchResult3searchResult3Yes 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 idYes A string which uniquely identifies the file (song) or folder (album/artist) to rate. ratingYes 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 idNo The ID of the file (song) or folder (album/artist) to star. Multiple parameters allowed. albumIdNo 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. artistIdNo 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 scanStatusscanStatusYes 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 idYes A string which uniquely identifies the file to stream. Obtained by calls to getMusicDirectory. maxBitRateNo (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. formatNo (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. timeOffsetNo No / Yes By default only applicable to video streaming. If specified, start streaming at the given offset (in seconds) into the media. The Transcode Offset extension enables the parameter to music too. sizeNo (Since 1.6.0 ) Only applicable to video streaming. Requested video size specified as WxH, for instance “640x480”. estimateContentLengthNo 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. convertedNo 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 Offset 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 tokenInfotokenInfoYes 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 idNo The ID of the file (song) or folder (album/artist) to unstar. Multiple parameters allowed. albumIdNo 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. artistIdNo 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 idYes The ID of the station. streamUrlYes The stream URL for the station. nameYes The user-defined name for the station. homepageUrlNo 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 playlistIdYes The playlist ID. nameNo The human-readable name of the playlist. commentNo The playlist comment. publicNo true if the playlist should be visible to all users, false otherwise.songIdToAddNo Add this song with this ID to the playlist. Multiple parameters allowed. songIndexToRemoveNo 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 idYes ID of the share to update. descriptionNo A user-defined description that will be displayed to people visiting the shared media. expiresNo 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 usernameYes The name of the user. passwordNo The password of the user, either in clear text of hex-encoded (see above). emailNo The email address of the user. ldapAuthenticatedNo Whether the user is authenticated in LDAP. adminRoleNo Whether the user is administrator. settingsRoleNo Whether the user is allowed to change personal settings and password. streamRoleNo Whether the user is allowed to play files. jukeboxRoleNo Whether the user is allowed to play files in jukebox mode. downloadRoleNo Whether the user is allowed to download files. uploadRoleNo Whether the user is allowed to upload files. coverArtRoleNo Whether the user is allowed to change cover art and tags. commentRoleNo Whether the user is allowed to create and edit comments and ratings. podcastRoleNo Whether the user is allowed to administrate Podcasts. shareRoleNo Whether the user is allowed to share files with anyone. videoConversionRoleNo false (Since 1.15.0 ) Whether the user is allowed to start video conversions. musicFolderIdNo (Since 1.12.0 ) IDs of the music folders the user is allowed access to. Include the parameter once for each folder. maxBitRateNo (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 idstringYes The id of the album namestringYes The album name. versionstringNo Yes The album version name (Remastered, Anniversary Box Set, …). artiststringNo Artist name. artistIdstringNo The id of the artist coverArtstringNo A covertArt id. songCountintYes Number of songs durationintYes Total duration of the album in seconds playCountlongNo Number of play of the album createdstringYes Date the album was added. [ISO 8601] starredstringNo Date the album was starred. [ISO 8601] yearintNo The album year genrestringNo The album genre playedstringNo Yes Date the album was last played. [ISO 8601] userRatingintNo Yes The user rating of the album. [1-5] recordLabelsArray of RecordLabel No Yes The labels producing the album. musicBrainzIdstringNo Yes The album MusicBrainzID. genresArray of ItemGenre No Yes The list of all genres of the album. artistsArray of ArtistID3 No Yes The list of all album artists of the album. (Note: Only the required ArtistID3 fields should be returned by default) displayArtiststringNo Yes The single value display artist. releaseTypesArray of string No Yes The types of this album release. (Album, Compilation, EP, Remix, …). moodsArray of string No Yes The list of all moods of the album. sortNamestringNo Yes The album sort name. originalReleaseDateItemDateNo Yes Date the album was originally released. releaseDateItemDateNo 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. isCompilationbooleanNo Yes True if the album is a compilation. explicitStatusstringNo Yes Returns “explicit” if at least one song is explicit, “clean” if no song is explicit and at least one is “clean” else “”. discTitlesArray of DiscTitle No Yes The list of all disc titles of the album.
OpenSubsonic New fields are added:
versionplayeduserRatingrecordLabelsmusicBrainzIdgenresartistsdisplayArtistreleaseTypemoodssortNameoriginalReleaseDateisCompilationdiscTitlesexplicitStatusNote : 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 idstringYes The id of the album namestringYes The album name. versionstringNo Yes The album version name (Remastered, Anniversary Box Set, …). artiststringNo Artist name. artistIdstringNo The id of the artist coverArtstringNo A covertArt id. songCountintYes Number of songs durationintYes Total duration of the album in seconds playCountlongNo Number of play of the album createdstringYes Date the album was added. [ISO 8601] starredstringNo Date the album was starred. [ISO 8601] yearintNo The album year genrestringNo The album genre playedstringNo Yes Date the album was last played. [ISO 8601] userRatingintNo Yes The user rating of the album. [1-5] recordLabelsArray of RecordLabel No Yes The labels producing the album. musicBrainzIdstringNo Yes The album MusicBrainzID. genresArray of ItemGenre No Yes The list of all genres of the album. artistsArray of ArtistID3 No Yes The list of all album artists of the album. displayArtiststringNo Yes The single value display artist. releaseTypesArray of string No Yes The types of this album release. (Album, Compilation, EP, Remix, …). moodsArray of string No Yes The list of all moods of the album. sortNamestringNo Yes The album sort name. originalReleaseDateItemDateNo Yes Date the album was originally released. releaseDateItemDateNo 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. isCompilationbooleanNo Yes True if the album is a compilation. explicitStatusstringNo Yes Returns “explicit” if at least one song is explicit, “clean” if no song is explicit and at least one is “clean” else “”. discTitlesArray of DiscTitle No Yes The list of all disc titles of the album. songArray of Child No The list of songs
OpenSubsonic New fields are added:
versionplayeduserRatingrecordLabelsmusicBrainzIdgenresartistsdisplayArtistreleaseTypemoodssortNameoriginalReleaseDateisCompilationdiscTitlesexplicitStatusNote : 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 notesstringNo Album notes musicBrainzIdstringNo Album musicBrainzId lastFmUrlstringNo Album lastFmUrl smallImageUrlstringNo Album smallImageUrl mediumImageUrlstringNo Album mediumImageUrl largeImageUrlstringNo 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 albumArray 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 albumArray 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 idstringYes Artist id namestringYes Artist name artistImageUrlstringNo Artist image url starredstringNo Artist starred date [ISO 8601] userRatingintNo Artist rating [1-5] averageRatingnumberNo 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 idstringYes The id of the artist namestringYes The artist name. coverArtstringNo A covertArt id. artistImageUrlstringNo An url to an external image source. albumCountintNo Artist album count. starredstringNo Date the artist was starred. [ISO 8601] musicBrainzIdstringNo Yes The artist MusicBrainzID. sortNamestringNo Yes The artist sort name. rolesArray of string No Yes The list of all roles this artist has in the library.
OpenSubsonic New fields are added:
musicBrainzIdsortNamerolesNote : 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 biographystringNo Artist biography musicBrainzIdstringNo Artist musicBrainzId lastFmUrlstringNo Artist lastFmUrl smallImageUrlstringNo Artist smallImageUrl mediumImageUrlstringNo Artist mediumImageUrl largeImageUrlstringNo Artist largeImageUrl similarArtistArray 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 biographystringNo Artist biography musicBrainzIdstringNo Artist musicBrainzId lastFmUrlstringNo Artist lastFmUrl smallImageUrlstringNo Artist smallImageUrl mediumImageUrlstringNo Artist mediumImageUrl largeImageUrlstringNo Artist largeImageUrl similarArtistArray 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 ignoredArticlesstringYes List of ignored articles space separated indexArray 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 idstringYes The id of the artist namestringYes The artist name. coverArtstringNo A covertArt id. artistImageUrlstringNo An url to an external image source. albumCountintYes Artist album count. starredstringNo Date the artist was starred. [ISO 8601] albumArray of AlbumID3 No Artist albums musicBrainzIdstringNo Yes The artist MusicBrainzID. sortNamestringNo Yes The artist sort name. rolesArray of string No Yes The list of all roles this artist has in the library.
OpenSubsonic New fields are added:
musicBrainzIdsortNamerolesNote : 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 positionlongYes Bookmark position in milliseconds usernamestringYes Username commentstringNo Bookmark comment createdstringYes Bookmark creation date [ISO 8601] changedstringYes Bookmark last updated date [ISO 8601] entryChildYes 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 bookmarkArray 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 usernamestringYes Username timelongYes Time in millis since Jan 1 1970 messagestringYes 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 chatMessageArray 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 idstringYes The id of the media parentstringNo The id of the parent (folder/album) isDirbooleanYes The media is a directory titlestringYes The media name. albumstringNo The album name. artiststringNo The artist name. trackintNo The track number. yearintNo The media year. genrestringNo The media genre coverArtstringNo A covertArt id. sizelongNo A file size of the media. contentTypestringNo The mimeType of the media. suffixstringNo The file suffix of the media. transcodedContentTypestringNo The transcoded mediaType if transcoding should happen. transcodedSuffixstringNo The file suffix of the transcoded media. durationintNo The duration of the media in seconds. bitRateintNo The bitrate of the media. bitDepthintNo Yes The bit depth of the media. samplingRateintNo Yes The sampling rate of the media. channelCountintNo Yes The number of channels of the media. pathstringNo The full path of the media. isVideobooleanNo Media is a video userRatingintNo The user rating of the media [1-5] averageRatingnumberNo The average rating of the media [1.0-5.0] playCountlongNo The play count. discNumberintNo The disc number. createdstringNo Date the media was created. [ISO 8601] starredstringNo Date the media was starred. [ISO 8601] albumIdstringNo The corresponding album id artistIdstringNo The corresponding artist id typestringNo The generic type of media [music/podcast/audiobook/video] mediaTypestringNo 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. bookmarkPositionlongNo The bookmark position in seconds originalWidthintNo The video original Width originalHeightintNo The video original Height playedstringNo Yes Date the album was last played. [ISO 8601] bpmintNo Yes The BPM of the song. commentstringNo Yes The comment tag of the song. sortNamestringNo Yes The song sort name. musicBrainzIdstringNo Yes The track MusicBrainzID. isrcArray of string No Yes The track ISRC(s). genresArray of ItemGenre No Yes The list of all genres of the song. artistsArray of ArtistID3 No Yes The list of all song artists of the song. (Note: Only the required ArtistID3 fields should be returned by default) displayArtiststringNo Yes The single value display artist. albumArtistsArray of ArtistID3 No Yes The list of all album artists of the song. (Note: Only the required ArtistID3 fields should be returned by default) displayAlbumArtiststringNo Yes The single value display album artist. contributorsArray of Contributor No Yes The list of all contributor artists of the song. displayComposerstringNo Yes The single value display composer. moodsArray of string No Yes The list of all moods of the song. replayGainReplayGainNo Yes The replaygain data of the song. explicitStatusstringNo 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:
playedbpmcommentsortNamemusicBrainzIdisrcgenresartistsdisplayArtistalbumArtistsdisplayAlbumArtistcontributorsdisplayComposermoodsreplayGainexplicitStatusNote : 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 rolestringYes Yes The contributor role. subRolestringNo 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. artistArtistID3Yes 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 idstringYes The id parentstringNo Parent item namestringYes The directory name starredstringNo Starred date [ISO 8601] userRatingintNo The user rating [1-5] averageRatingnumberNo The average rating [1.0-5.0] playCountlongNo The play count childArray 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 discintYes Yes The disc number. titlestringYes 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 codeintYes The error code messagestringNo The optional error message helpUrlstringNo 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 valuestringYes Genre name songCountintYes Genre song count albumCountintYes 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 genreArray 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 namestringYes Index name artistArray 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 ignoredArticlesstringYes The ignored articles lastModifiedlongYes Last time the index was modified in milliseconds after January 1, 1970 UTC shortcutArray of Artist No Shortcut childArray of Child No Array of children indexArray 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 namestringYes Index name artistArray 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 idstringYes The Id namestringYes The name streamUrlstringYes The radio url homePageUrlstringNo 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 internetRadioStationArray 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 yearintegerNo Yes The year monthintegerNo Yes The month (1-12) dayintegerNo 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 namestringYes 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 currentIndexintYes The current index of the song being played playingbooleanYes Whether the queue is currently playing gainfloatYes Volume, in a range of [0.0, 1.0] positionintNo The current position of the track in seconds entryArray 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 currentIndexintYes The current index of the song being played playingbooleanYes Whether the queue is currently playing gainfloatYes Volume, in a range of [0.0, 1.0] positionintNo 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 validbooleanYes The status of the license emailstringNo User email licenseExpiresstringNo End of license date. [ISO 8601] trialExpiresstringNo 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 valuestringYes Yes The actual text of this line startnumberNo 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 valuestringYes The lyrics artiststringNo The artist name titlestringNo 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 structuredLyricsArray 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 idintYes The id namestringNo 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 musicFolderArray 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 entryArray 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 usernamestringYes The username minutesAgointegerYes Last update playerIdintegerYes Player Id playerNamestringNo Player name
6.41 - OpenSubsonicExtension A supported OpenSubsonic API extension.
Example :
OpenSubsonic
Subsonic {
"name" : "template" ,
"versions" : [
1 ,
2
]
} Field Type Req. OpenS. Details nameStringYes Yes The name of the extension. versionsArray 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 idstringYes Id of the playlist namestringYes Name of the playlist commentstringNo A commnet ownerstringNo Owner of the playlist publicbooleanNo Is the playlist public songCountintYes number of songs durationintYes Playlist duration in seconds createdstringYes Creation date [ISO 8601] changedstringYes Last changed date [ISO 8601] coverArtstringNo A cover Art Id allowedUserArray 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 playlistArray 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 idstringYes Id of the playlist namestringYes Name of the playlist commentstringNo A commnet ownerstringNo Owner of the playlist publicbooleanNo Is the playlist public songCountintYes number of songs durationintYes Playlist duration in seconds createdstringYes Creation date [ISO 8601] changedstringYes Last changed date [ISO 8601] coverArtstringNo A cover Art Id allowedUserArray of string No A list of allowed usernames entryArray 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 currentstringNo* ID of currently playing track positionlongNo Position in milliseconds of currently playing track usernamestringYes The user this queue belongs to changedstringYes Date modified [ISO 8601] changedBystringYes Name of client app entryArray of Child No The list of songs in the queue
OpenSubsonic * If entry exists and is non-empty, OpenSubsonic servers must ensure that current exists and is a valid id in the list of songs.
If position is omitted, clients should treat the position as 0.
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"
}
]
} Field Type Req. OpenS. Details currentIndexlongNo* The 0-based index of the current playing track positionlongNo Position in milliseconds of currently playing track usernamestringYes The user this queue belongs to changedstringYes Date modified [ISO 8601] changedBystringYes Name of client app entryArray of Child No The list of songs in the queue
OpenSubsonic * If entry exists and is non-empty, OpenSubsonic servers must ensure that currentIndex exists and is a valid index (between 0 and length of the queue - 1, inclusive).
If position is omitted, clients should treat the position as 0.
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 idstringYes The channel ID urlstringYes Podcast channel URL titlestringNo The channel title descriptionstringNo The channel description coverArtstringNo ID used for retrieving cover art originalImageUrlstringNo URL for original image of podcast channel statusPodcastStatus Yes Channel status errorMessagestringNo An error message episodeAn 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 streamIdstringNo ID used for streaming podcast channelIdstringYes ID of the podcast channel descriptionstringNo Episode description statusPodcastStatus Yes Podcast status publishDatestringNo 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 channelAn 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:
newdownloadingcompletederrordeletedskipped6.51 - RecordLabel A record label for an album.
Example :
OpenSubsonic
Subsonic Field Type Req. OpenS. Details namestringYes 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 trackGainnumberNo Yes The track replay gain value. (In Db) albumGainnumberNo Yes The album replay gain value. (In Db) trackPeaknumberNo Yes The track peak value. (Must be positive) albumPeaknumberNo Yes The album peak value. (Must be positive) baseGainnumberNo Yes The base gain value. (In Db) (Ogg Opus Output Gain for example) fallbackGainnumberNo 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 omitted 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 scanningbooleanYes The status of the scan countintNo 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 artistArray of Artist No Starred artists albumArray of Child No Starred albums songArray 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 artistArray of ArtistID3 No Matching artists albumArray of AlbumID3 No Matching albums songArray 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 idstringYes The share Id urlstringYes The share url descriptionstringNo A description usernamestringYes The username createdstringYes Creation date [ISO 8601] expiresstringNo Share expiration [ISO 8601] lastVisitedstringNo Last visit [ISO 8601] visitCountintYes Visit count entryArray 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 shareArray 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 songArray 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 songArray 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 songArray 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 artistArray of Artist No Starred artists albumArray of Child No Starred albums songArray 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 artistArray of artist No Starred artists albumArray of Child No Starred albums songArray 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 langstringYes 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) syncedbooleanYes Yes True if the lyrics are synced, false otherwise lineArray of line Yes Yes The actual lyrics. Ordered by start time (synced) or appearance order (unsynced) displayArtiststringNo Yes The artist name to display. This could be the localized name, or any other value displayTitlestringNo Yes The title to display. This could be the song title (localized), or any other value offsetnumberNo 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 statusstringYes The command result. ok or failed versionstringYes The server supported Subsonic API version. typestringYes Yes The server actual name. [Ex: Navidrome or gonic] serverVersionstringYes Yes The server actual version. [Ex: 1.2.3 (beta)] openSubsonicbooleanYes Yes Must return true if the server support OpenSubsonic API v1 errorerrorNo 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 usernamestring 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 songArray 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 usernamestringYes Username scrobblingEnabledbooleanYes Whether scrobling is enabled for the user maxBitRateintNo adminRolebooleanYes Whether the user is an admin settingsRolebooleanYes Whether the user is can edit settings downloadRolebooleanYes Whether the user can download uploadRolebooleanYes Whether the user can upload playlistRolebooleanYes Whether the user can create playlists coverArtRolebooleanYes Whether the user can get cover art commentRolebooleanYes Whether the user can create comments podcastRolebooleanYes Whether the user can create/refresh podcasts streamRolebooleanYes Whether the user can stream jukeboxRolebooleanYes Whether the user can control the jukebox shareRolebooleanYes Whether the user can create a stream videoConversionRolebooleanYes Whether the user can convert videos avatarLastChangedstringNo Last time the avatar was changed [ISO 8601] folderArray 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 userArray 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