Using the public StreamElements Song Request API

In my Florence Bot project, I wanted a way to quickly access the StreamElements Song Request API to do a few things

  • Show the current playing song with a !song command
  • Show a list of songs in the queue (!queue)
  • Show a list of songs that have already played (!history)

If you open a new tab, open the console and go to your mediarequest page, (e.g. streamelements.com/deanpcmad/mediarequest), you should see a a few different requests to api.streamelements.com

The ones we want to look for end with:

  • /playing
  • /queue/public
  • /history?limit=25

These URLs will have your account token so you’ll need to replace ACCOUNT-TOKEN in the examples below with your account token

Currently Playing

For the current playing song, you’ll need to make a GET request to

https://api.streamelements.com/kappa/v2/songrequest/ACCOUNT-TOKEN/playing

If there is something playing then the response will be something like this:

{
   "user":{
      "username":"deanpcmad",
      "providerId":"72938118"
   },
   "statistics":{
      "viewCount":49597,
      "likeCount":721,
      "dislikeCount":6
   },
   "duration":204,
   "tags":[

   ],
   "_id":"5eef5df71671fa2a60f50815",
   "voteskips":[

   ],
   "videoId":"O4nqsMk3HQc",
   "title":"Don Broco - Everybody (OFFICIAL MUSIC VIDEO)",
   "channel":"SharpTone Records",
   "source":"site"
}

Queue

For a list of songs in the queue, you’ll need to make a GET request to

https://api.streamelements.com/kappa/v2/songrequest/ACCOUNT-TOKEN/queue/public

If there is something playing then the response will be something like this:

[
   {
      "duration":245,
      "_id":"5eef5fb9231b3f748b8f0e68",
      "videoId":"eXjCcC7e1fk",
      "title":"DON BROCO - T-Shirt Song (OFFICIAL VIDEO)",
      "channel":"SharpTone Records",
      "source":"site",
      "user":{
         "username":"deanpcmad",
         "providerId":"72938118"
      }
   }
]

History

For a list of songs that have played, you’ll need to make a GET request to

https://api.streamelements.com/kappa/v2/songrequest/ACCOUNT-TOKEN/history

You can add ?limit=25 to limit the amount of songs that are returned.

If there is something playing then the response will be something like this:

{
   "limit":25,
   "offset":0,
   "total":1,
   "history":[
      {
         "_id":"5eef619abdfe520ed2afd8e5",
         "song":{
            "duration":204,
            "tags":[

            ],
            "_id":"5eef5df71671fa2a60f50815",
            "user":{
               "username":"deanpcmad",
               "providerId":"72938118"
            },
            "statistics":{
               "viewCount":49597,
               "likeCount":721,
               "dislikeCount":6
            },
            "voteskips":[

            ],
            "videoId":"O4nqsMk3HQc",
            "title":"Don Broco - Everybody (OFFICIAL MUSIC VIDEO)",
            "channel":"SharpTone Records",
            "source":"site"
         },
         "createdAt":"2020-06-21T13:33:14.219Z"
      }
   ]
}