API5.0 JSON Methods
Let's go through come calls and examples that you can do for each JSON method.
With the exception of Binary methods, all responses will return a HTTP 200 response.
Also remember that Binary data methods will not return JSON; just the file/data you have requested.
Binary methods will also return:
- HTTP 400 responses for a bad or incomplete request
- HTTP 404 responses where the requests data was not found
Auth Methods
Auth methods are used for authenticating or checking the status of your session in an Ampache server
handshake
This is the function that handles verifying a new handshake Takes a timestamp, auth key, and username.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'auth' | string | $passphrase (Timestamp . Password SHA hash) OR (API Key) | NO |
| 'user' | string | $username (Required if login/password authentication) | YES |
| 'timestamp' | integer | UNIXTIME() The timestamp used in seed of password hash (Required if login/password authentication) | YES |
| 'version' | string | $version (API Version that the application understands) | YES |
- return object
"auth": "",
"api": "",
"session_expire": "",
"update": "",
"add": "",
"clean": "",
"songs": 0,
"albums": 0,
"artists": 0,
"genres": 0,
"playlists": 0,
"users": 0,
"catalogs": 0,
"videos": 0,
"podcasts": 0,
"podcast_episodes": 0,
"shares": 0,
"licenses": 0,
"live_streams": 0,
"labels": 0
- throws object
"error": ""
ping
This can be called without being authenticated, it is useful for determining if what the status of the server is, and what version it is running/compatible with
| Input | Type | Description | Optional |
|---|---|---|---|
| 'auth' | string | (Session ID) returns version information and extends the session if passed | YES |
| 'version' | string | $version (API Version that the application understands) | YES |
- return object
"session_expire": "",
"server": "",
"version": "",
"compatible": "",
"auth": "",
"api": "",
"update": "",
"add": "",
"clean": "",
"songs": 0,
"albums": 0,
"artists": 0,
"genres": 0,
"playlists": 0,
"users": 0,
"catalogs": 0,
"videos": 0,
"podcasts": 0,
"podcast_episodes": 0,
"shares": 0,
"licenses": 0,
"live_streams": 0,
"labels": 0
- throws array
"server": "",
"version": "",
"compatible": ""
goodbye
Destroy a session using the auth parameter.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'auth' | string | (Session ID) destroys the session if it exists | NO |
- return object
"success": ""
- throws object
"error": ""
Non-Data Methods
These methods take no parameters beyond your auth key to return information
system_update
Check Ampache for updates and run the update if there is one.
ACCESS REQUIRED: 100 (Admin)
- return object
"success": ""
- throws object
"error": ""
system_preferences
Get your server preferences
ACCESS REQUIRED: 100 (Admin)
- return array
"preference": []
- throws object
"error": ""
users
Get ids and usernames for your site
- return array
"user": []
- throws object
"error": ""
user_preferences
Get your user preferences
- return array
"preference": []
- throws object
"error": ""
bookmarks
Get information about bookmarked media this user is allowed to manage.
- return array
"bookmark": []
- throws object
"error": ""
Data Methods
Data methods require additional information and parameters to return information
get_indexes
This takes a collection of inputs and returns ID + name for the object type
| Input | Type | Description | Optional |
|---|---|---|---|
| 'type' | string | song, album, artist, album_artist, playlist, podcast, podcast_episode, live_stream | NO |
| 'filter' | string | Value is Alpha Match for returned results, may be more than one letter/number | YES |
| 'add' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'add' date newer than the specified date | YES |
| 'update' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'update' time newer than the specified date | YES |
| 'include' | boolean | 0, 1 (include songs in a playlist or episodes in a podcast) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
| 'hide_search' | integer | 0, 1 (if true do not include searches/smartlists in the result) | YES |
- return array
"song": []|"album": []|"artist": []|"playlist": []|"podcast": []
- throws object
"error": ""
SONGS Example
ARTIST Example
ALBUM Example
PLAYLIST Example
advanced_search
Using advanced_search
Perform an advanced search given passed rules. This works in a similar way to the web/UI search pages. You can pass multiple rules as well as joins to create in depth search results
Rules must be sent in groups of 3 using an int (starting from 1) to designate which rules are combined. Use operator ('and', 'or') to choose whether to join or separate each rule when searching.
Refer to the Advanced Search page for details about creating searches.
NOTE the rules part can be confusing but essentially you can include as many 'arrays' of rules as you want. Just add 1 to the rule value to create a new group of rules.
- Mandatory Rule Values
- rule_1
- rule_1_operator
- rule_1_input
- Optional (Metadata searches only)
- rule_1_subtype
| Input | Type | Description | Optional |
|---|---|---|---|
| operator | string | and, or (whether to match one rule or all) | NO |
| rule_* | array | [rule_1, rule_1_operator, rule_1_input] | NO |
| rule_* | array | [rule_2, rule_2_operator, rule_2_input], [etc] | YES |
| type | string | song, album, artist, playlist, label, user, video | NO |
| random | boolean | 0, 1 (random order of results; default to 0) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []|"album": []|"artist": []|"playlist": []|"label": []|"user": []|"video": []
- throws object
"error": ""
SONG Example
ARTIST Example
ALBUM Example
artists
This takes a collection of inputs and returns artist objects.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'add' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'add' date newer than the specified date | YES |
| 'update' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'update' time newer than the specified date | YES |
| 'include' | string | albums, songs (include child objects in the response) | YES |
| 'album_artist' | boolean | 0, 1 (if true filter for album artists only) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"artist": []
- throws object
"error": ""
artist
This returns a single artist based on the UID of said artist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Artist, returns artist JSON | NO |
| 'include' | string | albums, songs (include child objects in the response) | YES |
- return object
"id": "",
"name": "",
"albums": [],
"albumcount": 0,
"songs": [],
"songcount": 0,
"genre": [],
"art": "",
"flag": 0,
"preciserating": 0,
"rating": 0,
"averagerating": 0,
"mbid": "",
"summary": "",
"time": 0,
"yearformed": 0,
"placeformed": ""
- throws object
"error": ""
artist_albums
This returns the albums of an artist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Artist, returns Album JSON | NO |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"album": []
- throws object
"error": ""
artist_songs
This returns the songs of the specified artist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Artist, returns Song JSON | NO |
| 'top50' | boolean | 0, 1 (if true filter to the artist top 50) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
albums
This returns albums based on the provided search filters
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'add' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'add' date newer than the specified date | YES |
| 'update' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'update' time newer than the specified date | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
| 'include' | string | albums, songs (include child objects in the response) | YES |
- return array
"album": []
- throws object
"error": ""
album
This returns a single album based on the UID provided
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Album, returns album JSON | NO |
| 'include' | string | songs (include child objects in the response) | YES |
- return object
"id": "",
"name": "",
"artist": {},
"time": 0,
"year": 0,
"tracks": [],
"songcount": 0,
"diskcount": 0,
"type": "",
"genre": [],
"art": "",
"flag": 0,
"preciserating": 0.0,
"rating": 0.0,
"averagerating": 0.0,
"mbid": ""
- throws object
"error": ""
album_songs
This returns the songs of a specified album
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Album, returns song JSON | NO |
| 'exact' | boolean | 0, 1 (if true don't group songs from different disks) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
genres
This returns the genres (Tags) based on the specified filter
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"genre": []
- throws object
"error": ""
genre
This returns a single genre based on UID
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of genre, returns genre JSON | NO |
- return object
"id": "",
"name": "",
"albums": 0,
"artists": 0,
"songs": 0,
"videos": 0,
"playlists": 0,
"live_streams": 0
- throws object
"error": ""
genre_artists
This returns the artists associated with the genre in question as defined by the UID
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of genre, returns artist JSON | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"artist": []
- throws object
"error": ""
genre_albums
This returns the albums associated with the genre in question
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of genre, returns album JSON | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"album": []
- throws object
"error": ""
genre_songs
returns the songs for this genre
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of genre, returns song JSON | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
songs
Returns songs based on the specified filter
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'add' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'add' date newer than the specified date | YES |
| 'update' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'update' time newer than the specified date | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
song
returns a single song
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Song, returns song JSON | NO |
- return object
"id": "",
"title": "",
"name": "",
"artist": {},
"album": {},
"genre": [],
"albumartist": {},
"filename": "",
"track": 0,
"playlisttrack": 0,
"time": 0,
"year": 0,
"bitrate": 0,
"rate": 0,
"mode": "",
"mime": "",
"url": "",
"size": 0,
"mbid": "0",
"album_mbid": "",
"artist_mbid": "",
"albumartist_mbid": ",
"art": "",
"flag": 0,
"preciserating": 0.0,
"rating": 0.0,
"averagerating": 0.0,
"playcount": 0,
"catalog": 0,
"composer": "",
"channels": null,
"comment": "",
"publisher": "",
"language": "",
"replaygain_album_gain": 0.000000,
"replaygain_album_peak": 0.000000,
"replaygain_track_gain": 0.000000,
"replaygain_track_peak": 0.000000
- throws object
"error": ""
song_delete
Delete an existing song. (if you are allowed to)
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of song to delete | NO |
- return object
"success": ""
- throws object
"error": ""
url_to_song
This takes a url and returns the song object in question
| Input | Type | Description | Optional |
|---|---|---|---|
| 'url' | string | Full Ampache URL from server, translates back into a song JSON | NO |
- return object
"id": "",
"title": "",
"name": "",
"artist": {},
"album": {},
"genre": [],
"albumartist": {},
"filename": "",
"track": 0,
"playlisttrack": 0,
"time": 0,
"year": 0,
"bitrate": 0,
"rate": 0,
"mode": "",
"mime": "",
"url": "",
"size": 0,
"mbid": "",
"album_mbid": "",
"artist_mbid": "",
"albumartist_mbid": "",
"art": "",
"flag": 0,
"preciserating": 0.0,
"rating": 0.0,
"averagerating": 0.0,
"playcount": 0,
"catalog": 0,
"composer": "",
"channels": null,
"comment": "",
"publisher": "",
"language": "",
"replaygain_album_gain": 0.000000,
"replaygain_album_peak": 0.000000,
"replaygain_track_gain": 0.000000,
"replaygain_track_peak": 0.000000
- throws object
"error": ""
playlists
This returns playlists based on the specified filter
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'add' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'add' date newer than the specified date | YES |
| 'update' | set_filter | ISO 8601 Date Format (2020-09-16) Find objects with an 'update' time newer than the specified date | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
| 'hide_search' | integer | 0, 1 (if true do not include searches/smartlists in the result) | YES |
- return array
"playlist": []
- throws object
"error": ""
playlist
This returns a single playlist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of playlist, returns playlist JSON | NO |
- return array
"playlist": []
- throws object
"error": ""
playlist_songs
This returns the songs for a playlist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Playlist, returns song JSON | NO |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
playlist_create
This create a new playlist and return it
| Input | Type | Description | Optional |
|---|---|---|---|
| 'name' | string | Playlist name | NO |
| 'type' | string | public, private (Playlist type) | YES |
- return array
"playlist": []
- throws object
"error": ""
playlist_edit
This modifies name and type of a playlist Previously name and type were mandatory while filter wasn't. this has been reversed.
NOTE items and tracks must be sent together and be of equal length
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Playlist | NO |
| 'name' | string | Playlist name | YES |
| 'type' | string | public, private (Playlist type) | YES |
| 'owner' | string | Change playlist owner to the user id (-1 = System playlist) | YES |
| 'items' | string | comma-separated song_id's (replaces existing items with a new id) | YES |
| 'tracks' | string | comma-separated playlisttrack numbers matched to 'items' in order | YES |
- return object
"success": ""
- throws object
"error": ""
playlist_delete
This deletes a playlist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Playlist | NO |
- return object
"success": ""
- throws object
"error": ""
playlist_add_song
This adds a song to a playlist. setting check=1 will not add duplicates to the playlist
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Playlist | NO |
| 'song' | string | UID of song to add to playlist | NO |
| 'check' | boolean | 0, 1 Whether to check and ignore duplicates (default = 0) | YES |
- return object
"success": ""
- throws object
"error": ""
playlist_remove_song
This remove a song from a playlist. Previous versions required 'track' instead of 'song'.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Playlist | NO |
| 'song' | string | UID of song to remove from playlist | YES |
| 'track' | integer | Track number to remove from playlist | YES |
- return object
"success": ""
- throws object
"error": ""
playlist_generate
Get a list of song JSON, indexes or id's based on some simple search criteria 'recent' will search for tracks played after 'Popular Threshold' days 'forgotten' will search for tracks played before 'Popular Threshold' days 'unplayed' added in 400002 for searching unplayed tracks
| Input | Type | Description | Optional |
|---|---|---|---|
| 'mode' | string | recent, forgotten, unplayed, random (default = 'random') | YES |
| 'filter' | string | string LIKE matched to song title | YES |
| 'album' | integer | $album_id | YES |
| 'artist' | integer | $artist_id | YES |
| 'flag' | boolean | 0, 1 (get flagged songs only. default = 0) | YES |
| 'format' | string | song, index, id (default = 'song') | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []|"index": []|"id": []
- throws object
"error": ""
SONG Example
INDEX Example
ID Example
shares
This searches the shares and returns... shares
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 boolean to match the exact filter string | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"share": []
- throws object
"error": ""
share
Return shares by UID
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Share, returns song JSON | NO |
- return object
"id": "",
"name": "",
"owner": "",
"allow_stream": 0,
"allow_download": 0,
"creation_date": "",
"lastvisit_date": "",
"object_type": "",
"object_id": "",
"expire_days": 0,
"max_counter": 0,
"counter": 0,
"secret": "",
"public_url": "",
"description": ""
- throws object
"error": ""
share_create
Create a public url that can be used by anyone to stream media. Takes the file id with optional description and expires parameters.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of object you are sharing | NO |
| 'type' | string | object_type | NO |
| 'description' | string | description (will be filled for you if empty) | YES |
| 'expires' | integer | days to keep active | YES |
- return array
"share": []
- throws object
"error": ""
share_edit
Update the description and/or expiration date for an existing share. Takes the share id to update with optional description and expires parameters.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Alpha-numeric search term | NO |
| 'stream' | boolean | 0, 1 | YES |
| 'download' | boolean | 0, 1 | YES |
| 'expires' | integer | number of days before expiry | YES |
| 'description' | string | update description | YES |
- return object
"success": ""
- throws object
"error": ""
share_delete
Delete an existing share.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of Share to delete | NO |
- return object
"success": ""
- throws object
"error": ""
get_similar
Return similar artist id's or similar song ids compared to the input filter
| Input | Type | Description | Optional |
|---|---|---|---|
| 'type' | string | song, artist | NO |
| 'filter' | integer | artist id or song id | NO |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []|"artist": []
- throws object
"error": ""
search_songs
This searches the songs and returns... songs
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | NO |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"song": []
- throws object
"error": ""
videos
This returns video objects!
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Filter results to match this string | YES |
| 'exact' | boolean | 0, 1 (if true filter is exact = rather than fuzzy LIKE) | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
- return array
"video": []
- throws object
"error": ""
video
This returns a single video
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of video, returns video JSON | NO |
- return object
"id": "",
"title": "",
"mime": "",
"resolution": "",
"size": 0,
"genre": [],
"url": ""
- throws object
"error": ""
podcasts
Get information about podcasts
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Value is Alpha Match for returned results, may be more than one letter/number | YES |
| 'offset' | integer | Return results starting from this index position | YES |
| 'limit' | integer | Maximum number of results to return | YES |
| 'include' | string | episodes (include podcast_episodes in the response) | YES |
- return array
"podcast": []
- throws object
"error": ""
podcast
Get the podcast from it's id.
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of podcast, returns podcast JSON | NO |
| 'include' | string | episodes (include podcast_episodes in the response) | YES |
- return object
"id": "",
"name": "",
"description": "",
"language": "",
"copyright": "",
"feed_url": "",
"generator": "",
"website": "",
"build_date": "",
"sync_date": "",
"public_url": "",
"podcast_episode": []
- throws object
"error": ""
podcast_create
Create a podcast that can be used by anyone to stream media. Takes the url and catalog parameters.
ACCESS REQUIRED: 75 (Catalog Manager)
| Input | Type | Description | Optional |
|---|---|---|---|
| 'url' | string | rss url for podcast | NO |
| 'catalog' | string | podcast catalog | NO |
- return array
"podcast": []
- throws object
"error": ""
podcast_edit
Update the description and/or expiration date for an existing podcast. Takes the podcast id to update with optional description and expires parameters.
ACCESS REQUIRED: 50 (Content Manager)
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | Alpha-numeric search term | NO |
| 'feed' | string | feed rss xml url | YES |
| 'title' | string | title string | YES |
| 'website' | string | source website url | YES |
| 'description' | string | YES | |
| 'generator' | string | YES | |
| 'copyright' | string | YES |
- return object
"success": ""
- throws object
"error": ""
podcast_delete
Delete an existing podcast.
ACCESS REQUIRED: 75 (Catalog Manager)
| Input | Type | Description | Optional |
|---|---|---|---|
| 'filter' | string | UID of podcast to delete | NO |
- return object
"success": ""
- throws object
"error": ""