Lyrics & Music API

This API provides deep and powerful tools for searching lyrics, artists or albums. Unlike other APIs, it can also search by lyrics and does not need a separate artist and song name entries.

get
Get lyrics

https://api.ksoft.si/lyrics/search
Searches for lyrics and returns a list of results.
Request
Response
Request
Headers
Authorization
required
string
Authentication token
Query Parameters
q
required
string
Search query.
text_only
optional
boolean
Default: false, if set to 'true' then it only searches inside the lyrcis.
limit
optional
integer
Default: 10, how many results should the endpoint return.
Response
200: OK
List of tracks
{
"total": 2915,
"took": 18,
"data": [
{
"artist": "Eddy Grant",
"artist_id": 26147,
"album": "Killer On The Rampage,Killer on the Rampage",
"album_ids": "81582,263643",
"album_year": "1982,1970",
"name": "Electric Avenue",
"lyrics": "Boy!\nBoy!\n\nNow in the street there is violence\nAnd a lots of work to be done\nNo place to hang out our washing\nAnd I can't blame all on the sun, oh no\n\n:\nWe gonna rock down to Electric Avenue\nAnd then we'll take it higher\nOh, we gonna rock down to Electric Avenue\nAnd then we'll take it higher\n\nWorkin' so hard like a soldier\nCan't afford a thing on TV\nDeep in my heart I am warrior\nCan't get food for the kid, good God\n\nWe gonna rock down to Electric Avenue\nAnd then we'll take it higher\nOh, we gonna rock down to Electric Avenue\nAnd then we'll take it higher\n\nOh no...\nOh no...\nOh no...\nOh no...\n\nWe gonna rock down to Electric Avenue\nAnd then we'll take it higher\nOh, we gonna rock down to Electric Avenue\nAnd then we'll take it higher\n\nWho is to blame in one country\nNever can get to the one\nDealin' in multiplication\nAnd they still can't feed everyone, oh no\n\nHo! Out in the street...\nOut in the street...\nOut in the daytime...\nOut in the night...\n\nOh! We gonna rock down to Electric Avenue\nAnd then we'll take it higher\nOOh no, we gonna rock down to Electric Avenue\nAnd then we'll take it higher\n\nOut in the street...\nOut in the street...\nOut in the playground...\nIn the dark side of town (HO!)\n\nWe gonna rock down to Electric Avenue\nAnd then we'll take it higher\nHey, we gonna rock down to Electric Avenue\nAnd then we'll take it higher\n\nRock it in the daytime\nRock it in the night\nRock it eeh-dum-pum-pay\nOooh, in the brixton riot",
"search_str": "Eddy Grant Electric Avenue",
"album_art": "https://api.storage.ksoft.si/album/81582/628942-2975.jpg",
"popularity": 58955,
"id": "628942",
"search_score": 32.096874
},
{
"artist": "Sharkey",
"artist_id": 138539,
"album": "Monster Maker",
"album_ids": "382649",
"album_year": "1970",
"name": "Electric Avenue",
"lyrics": "Out in the streets there's violent beasts\nHelicopter birds, Rhino Jeeps\nScuffed up shoes from tyrants feet\n(No peace when the wino speaks)\nMouth wide open\nBeats be blarin'\nBeat Street wearin'\nWe keep hearin'\nMade to be broke\nYou know the rules\nAnd you know how Monster's do\n\n \nWe gonna rock down to\nElectric Avenue\nAnd then we'll take it higher\n\n \nDrive to work like a soldier\nThe war for food\nTicket for parking\n(The meal is you)\nPropain gas\nNo name crash\nSwitch lanes fast\n(Or feel the blues)\nWith no signal, fate takes your turn\n(Grabs horns like pistols)\nMake you swerve\nBreak straight lines or skate the curb\n(Good God!)\n\n \nWe gonna rock down to\nElectric Avenue\nAnd then we'll take it higher\n\nOh no \n\n \nWe gonna rock down to\nElectric Avenue\nAnd then we'll take it higher\n\n \nBum rush bump in the line of the club\n(Bananas peel for real, slip you up)\nGlocks in the street\nShots at the bar\nReal rock stars don't play air guitar\nSessions sorrow\nLesson's borrowed\nWild for the night\nArrested tomorrow\nConception perfected\nConnection expression\nElectric injection\nExit steppin' on down to\n\n \nWe gonna rock down to\nElectric Avenue\nAnd then we'll take it higher\n\nOut in the street\nOut in the street\nOut in the playground\nIn the dark side of town\n\n \nWe gonna rock down to\nElectric Avenue\nAnd then we'll take it higher\n\nRock it in the daytime\nMonsters in the night\nMonsters in the DC sound set\nMonsters in the BX for life",
"search_str": "Sharkey Electric Avenue",
"album_art": "https://cdn.ksoft.si/images/Logo1024%20-%20W.png",
"popularity": 1,
"id": "2211482",
"search_score": 17.433353
}
]
}
404: Not Found
Empty list
{
"total": 0,
"took": 32,
"data": []
}

post
Music Recommendations

https://api.ksoft.si/music/recommendations
Retrieves music recommendations based on tracks user inputs. POST Request in JSON format only.
Request
Response
Request
Headers
Authorization
required
string
Authentication token
Body Parameters
tracks
required
array
JSON List or comma-separated list of input tracks. Content of the list depends on selected provider.
youtube_token
optional
string
Recommended. YouTube v3 API token.
limit
optional
integer
How many tracks to return. Defaults to 5. Valid range: 1-5
recommend_type
optional
string
Which data type to return. - track - returns a list of track objects - youtube_link - returns a list of youtube links - youtube_id - returns a list of YouTube IDs
provider
required
string
Format in which you'll provide tracks. Can be: - youtube - For list of YouTube links - youtube_ids - For list of YouTube video IDs - youtube_titles - For list of YouTube titles (faster) - spotify - For list of Spotify IDs (fastest)
Response
200: OK
Returns 20 recommendations based on the input. Response has been shortened.
{
"provider": "youtube_ids",
"total": 20,
"tracks": [
{
"youtube": {
"id": "dClJ5j0sm5c",
"link": "https://www.youtube.com/watch?v=dClJ5j0sm5c",
"title": "Fakear - Neptune",
"thumbnail": "https://i.ytimg.com/vi/dClJ5j0sm5c/mqdefault.jpg",
"description": "Fakear - Sauvage EP Vinyl/Stream/Download: https://Nowadays.lnk.to/Fakear-Sauvage Follow Fakear: http://www.facebook.com/fakear ..."
},
"spotify": {
"id": "5eXQ1TwlcoKp5znwG1XfWg",
"album": {
"name": "Sauvage",
"album_art": "https://i.scdn.co/image/98209f1f47fd70c7dbb4509926dafdf37398de2f",
"link": "https://open.spotify.com/album/6qmbzitgyDQXnF74bHrCPZ"
},
"artists": [
{
"name": "Fakear",
"link": "https://open.spotify.com/artist/4eFImh8D3F15dtZk0JQlpT"
}
],
"name": "Neptune",
"link": "https://open.spotify.com/track/5eXQ1TwlcoKp5znwG1XfWg"
},
"name": "Fakear - Neptune"
},
{
"youtube": {
"id": "rTckmTrpgAM",
"link": "https://www.youtube.com/watch?v=rTckmTrpgAM",
"title": "Dooz Kawa - Le Bétail",
"thumbnail": "https://i.ytimg.com/vi/rTckmTrpgAM/mqdefault.jpg",
"description": "Message Aux Anges Noirs (2012) 3rd Lab http://cd1d.com/fr/album/message-aux-anges-noirs."
},
"spotify": {
"id": "3dQCaXsHDRua98UQ4Nj76J",
"album": {
"name": "Message aux anges noirs",
"album_art": "https://i.scdn.co/image/ac7da1c5cdb07ea23b7214279bdd66ecf1064e64",
"link": "https://open.spotify.com/album/1y6AstygSoD838A5owhjsu"
},
"artists": [
{
"name": "Dooz Kawa",
"link": "https://open.spotify.com/artist/4z8LvfxawVZLoLR1KTUzQL"
}
],
"name": "Le bétail",
"link": "https://open.spotify.com/track/3dQCaXsHDRua98UQ4Nj76J"
},
"name": "Dooz Kawa - Le bétail"
},
...
]
}

get
Get artist by ID

https://api.ksoft.si/lyrics/artist/{id}/
Retrieves all albums and songs by that artist.
Request
Response
Request
Path Parameters
id
required
integer
Artist ID, you can get it from the lyrics search
Headers
Authorization
required
string
Authentication token
Response
200: OK
{
"id": 28333,
"name": "Eurythmics",
"albums": [
{
"id": 88305,
"name": "Other Songs",
"year": 1970
},
{
"id": 88287,
"name": "Ultimate Collection",
"year": 2005
},
{...}
],
"tracks": [
{
"id": 680890,
"name": "Revenge 2"
},
{
"id": 680879,
"name": "My Guy"
},
{...}
]
}
404: Not Found
{
"code": 404,
"error": true,
"message": "not found"
}

get
Get album by ID

https://api.ksoft.si/lyrics/album/{id}/
Retrieves artist name and all tracks in the album.
Request
Response
Request
Path Parameters
id
required
integer
Album ID, you can get it from the lyrics search
Headers
Authorization
required
string
Authentication token
Response
200: OK
{
"id": 88287,
"name": "Ultimate Collection",
"year": 2005,
"artist": {
"id": 28333,
"name": "Eurythmics"
},
"tracks": [
{
"id": 680840,
"name": "Was It Just Another Love Affair?"
},
{
"id": 680639,
"name": "I Saved The World Today"
},
{...}
]
}
404: Not Found
{
"code": 404,
"error": true,
"message": "not found"
}

get
Get track by ID

https://api.ksoft.si/lyrics/track/{id}/
Get info about a song.
Request
Response
Request
Path Parameters
id
required
integer
Track ID, you can get it from artist by id, album by id or lyrics search endpoints
Headers
Authorization
required
string
Authentication token
Response
200: OK
{
"name": "Would I Lie To You?",
"artist": {
"id": 28333,
"name": "Eurythmics"
},
"albums": [
{
"id": 88252,
"name": "Greatest Hits",
"year": 1991
},
{
"id": 88287,
"name": "Ultimate Collection",
"year": 2005
},
{...}
],
"lyrics": "Would I lie to you?\nWould I lie to you honey?\nNow would I say something that wasn't true?\nI'm asking you sugar\nWould I lie to you?\n\nMy friends - know what's in store.\nI won't be here anymore.\nI've packed my bags\nI've cleaned the floor.\nWatch me walkin'.\nWalkin' out the door.\n\nBelieve me - I'll make it make it\nBelieve me - I'll make it make it\n\nWould I lie to you?\nWould I lie to you honey?\nNow would I say something that wasn't true?\nI'm asking you sugar\nWould I lie to you?\n\nTell you straight - no intervention.\nTo your face - no deception.\nYou're the biggest fake.\nThat much is true.\nHad all I can take.\nNow I'm leaving you\n\nBelieve me - I'll make it make it\nBelieve me - I'll make it make it\n\nWould I lie to you?\nWould I lie to you honey?\nNow would I say something that wasn't true?\nI'm asking you sugar\nWould I lie to you?\n\nWould I lie to you?\nWould I lie to you honey?\nNow would I say something that wasn't true?\nI'm asking you sugar\nWould I lie to you?\n\nMy friends - know what's in store.\nI won't be here anymore.\nI've packed my bags\nI've cleaned the floor.\nWatch me walkin'.\nWalkin' out the door.\n\nBelieve me - I'll make it make it\nBelieve me - I'll make it make it\n\nWould I lie to you?"
}
404: Not Found
{
"code": 404,
"error": true,
"message": "not found"
}