Stations¶
A station is a collection of one or more user-supplied seeds. Artists or tracks can be used as seed. Based on the seeds Pandora decides which music to play.
Retrieve station list¶
- Method
user.getStationList
Name |
Type |
Description |
---|---|---|
includeStationArtUrl |
boolean |
Includes “artUrl” field in result (optional) |
stationArtSize |
string |
“W130H130” (optional) |
includeAdAttributes |
boolean |
(optional) |
includeStationSeeds |
boolean |
(optional) |
includeRecommendations |
boolean |
include search recommendations in the response (optional) |
includeExplanations |
boolean |
include explanation strings in the recommendations (optional) |
includeExtras |
boolean |
include “extras” lists in the recomendations (optional) |
{
"userAuthToken": "XXX",
"syncTime": XXX
}
Currently stationId and stationToken are the same.
QuickMix stations additionally include a list of station ids (quickMixStationIds) that are currently selected for the mix.
Name |
Type |
Description |
---|---|---|
stations.stationId |
string |
|
stations.stationName |
string |
|
stations.dateCreated.time |
int |
Number of milliseconds since Unix epoch |
checksum |
string |
{
"stat":"ok",
"result":{
"stations":[
{
"suppressVideoAds":true,
"isQuickMix":true,
"stationId":"3914377363925265",
"stationDetailUrl":"https://www.pandora.com/login?target=%2Fstations%2Fa61985110ea3d6c6c8d8a9c038588b26425ba2910f7abf8b",
"isShared":false,
"dateCreated":{
"date":8,
"day":4,
"hours":22,
"minutes":44,
"month":10,
"nanos":241000000,
"seconds":46,
"time":1194590686241,
"timezoneOffset":480,
"year":107
},
"stationToken":"3914377363925265",
"stationName":"QuickMix",
"stationSharingUrl":"https://www.pandora.com/login?target=%2Fshare%2Fstation%2Fa61985110ea3d6c6c8d8a9c038588b26425ba2910f7abf8b",
"requiresCleanAds":true,
"allowRename":false,
"allowAddMusic":false,
"quickMixStationIds":[
"339646069607180561",
"339644480469281041"
],
"allowDelete":false,
"allowEditDescription":false
}
],
"checksum":"99776ddd31ad798895578593e78e3691"
}
}
Check station list for modifications¶
- Method
user.getStationListChecksum
To check if the station list was modified by another client the checksum can be fetched. No parameters are required for this request.
The response contains the new checksum.
Name |
Type |
Description |
---|---|---|
checksum |
string |
{
"stat":"ok",
"result":{
"checksum":"99776ddd31ad798895578593e78e3691"
}
}
Add new station¶
New stations can be created by searching for an artist/song or using a track from a playlist.
Search¶
- Method
music.search
This is a free text search that matches artist and track names.
Name |
Type |
Description |
---|---|---|
searchText |
string |
Artist name or track title |
includeNearMatches |
bool |
(optional) |
includeGenreStations |
bool |
(optional) |
{
"searchText": "encore",
"userAuthToken": "XXX",
"syncTime": 1335869287
}
Matching songs, artists, and genre stations are returned in three separate lists.
Name |
Type |
Description |
---|---|---|
songs.musicToken |
string |
Token starts with ‘S’ followed by one or more digits (e.g. ‘S1234567’). |
artists.musicToken |
string |
Results can be either for artists (token starts with ‘R’) or composers (token starts with ‘C’). |
genreStations.musicToken |
string |
Token starts with ‘G’ followed by one or more digits (e.g. ‘G123’). |
{
"stat": "ok",
"result": {
"nearMatchesAvailable": true,
"explanation": "",
"songs": [{
"artistName": "Jason DeRulo",
"musicToken": "S1508963",
"songName": "Encore",
"score": 100
}],
"artists": [{
"artistName": "Encore",
"musicToken": "R175304",
"likelyMatch": false,
"score": 100
}],
"genreStations": [{
"musicToken": "G123",
"score": 100,
"stationName": "Today's Encore"
}]
}
}
Create¶
- Method
station.createStation
Stations can either be created with a musicToken obtained by Search or trackToken from playlists (Retrieve playlist). The latter needs a musicType to specify whether the track itself or its artist should be used as seed.
Name |
Type |
Description |
---|---|---|
trackToken |
string |
|
musicType |
string |
“song” or “artist” (“song” for genre stations) |
musicToken |
string |
See Search |
Add seed¶
- Method
station.addMusic
Search results can be used to add new seeds to an existing station.
Name |
Type |
Description |
---|---|---|
stationToken |
string |
Existing station, see Retrieve station list |
musicToken |
string |
See Search |
{
"musicToken": "R1119",
"stationToken": "1181753543028256237",
"userAuthToken": "XXX",
"syncTime": 1404912202
}
Name |
Type |
Description |
---|---|---|
seedId |
string |
Can be used to remove seed with Remove seed |
{
"stat": "ok",
"result": {
"artistName": "Foo Fighters",
"musicToken": "3bcf3f314419f974",
"seedId": "2123197691273031149",
"artUrl": "http://cont-dc6-1.pandora.com/images/public/amg/portrait/pic200/drP900/P972/P97242B3S6P.jpg"
}
}
Remove seed¶
- Method
station.deleteMusic
Seeds can be removed from a station, except for the last one.
Name |
Type |
Description |
---|---|---|
seedId |
string |
{
"seedId": "1230715903914683885",
"userAuthToken": "XXX",
"syncTime": 1404912023
}
This method does not return data.
Code |
Description |
---|---|
1032 |
Last seed cannot be removed |
Rename station¶
- Method
station.renameStation
Name |
Type |
Description |
---|---|---|
stationToken |
string |
Existing station, see Retrieve station list |
stationName |
string |
New station name |
Delete station¶
- Method
station.deleteStation
Name |
Type |
Description |
---|---|---|
stationToken |
string |
Existing station, see Retrieve station list |
{
"stationToken": "374145764047334893",
"userAuthToken": "XXX",
"syncTime": 1404911699
}
No data is returned in response.
Retrieve extended station information¶
- Method
station.getStation
Extended station information includes seeds and feedback.
Name |
Type |
Description |
---|---|---|
stationToken |
string |
|
includeExtendedAttributes |
bool |
{
"stationToken": "374145764047334893",
"includeExtendedAttributes": true,
"userAuthToken": "XXX",
"syncTime": 1404910732
}
Name |
Type |
Description |
---|---|---|
music |
object |
Station seeds, see Add seed |
music.songs |
list |
Song seeds |
music.artists |
list |
Artist seeds |
feedback |
object |
Feedback added by Rate track |
feedback.thumbsUp |
list |
|
feedback.thumbsDown |
list |
{
"stat": "ok",
"result": {
"suppressVideoAds": false,
"stationId": "374145764047334893",
"allowAddMusic": true,
"dateCreated": {
"date": 15,
"day": 6,
"hours": 7,
"minutes": 34,
"month": 0,
"nanos": 874000000,
"seconds": 21,
"time": 1295105661874,
"timezoneOffset": 480,
"year": 111
},
"stationDetailUrl": "https://www.pandora.com/login?target=%2Fstations%2Fc644756145fc3f5df1916901125ee697495159685ae39575",
"artUrl": "http://cont-1.p-cdn.com/images/public/amz/5/2/8/5/075678235825_500W_498H.jpg",
"requiresCleanAds": false,
"stationToken": "374145764047334893",
"stationName": "Winter Radio",
"music": {
"songs": [{
"seedId": "428301990230109677",
"artistName": "Tori Amos",
"artUrl": "http://cont-sjl-1.pandora.com/images/public/amz/5/2/8/5/075678235825_130W_130H.jpg",
"songName": "Winter",
"musicToken": "87ef9db1c3f04330"
}],
"artists": [{
"artistName": "Jason Derulo",
"musicToken": "563f577e00d837a5",
"seedId": "31525199612287328",
"artUrl": "http://mediaserver-cont-sv5-1-v4v6.pandora.com/images/public/amg/portrait/pic200/drQ300/Q366/Q36675SDAPJ.jpg"
}],
"genres": [{
"musicToken": "cc021b31a48b8acf",
"genreName": "Today's Hits",
"seedId": "31525199599467854"
}]
},
"isShared": false,
"allowDelete": true,
"genre": ["Rock"],
"isQuickMix": false,
"allowRename": true,
"stationSharingUrl": "https://www.pandora.com/login?target=%2Fshare%2Fstation%2Fc644756145fc3f5df1916901125ee697495159685ae39575",
"allowEditDescription": true,
"feedback": {
"thumbsUp": [{
"dateCreated": {
"date": 28,
"day": 5,
"hours": 13,
"minutes": 57,
"month": 2,
"nanos": 760000000,
"seconds": 49,
"time": 1396040269760,
"timezoneOffset": 420,
"year": 114
},
"albumArtUrl": "http://cont-1.p-cdn.com/images/public/amz/9/7/1/4/900004179_130W_130H.jpg",
"musicToken": "d33dd0c199ebaf28425ba2910f7abf8b",
"songName": "Hey Lover",
"artistName": "Keri Noble",
"feedbackId": "-7239441039566426643",
"isPositive": true
}],
"totalThumbsUp": 20,
"totalThumbsDown": 5,
"thumbsDown": [{
"dateCreated": {
"date": 28,
"day": 5,
"hours": 10,
"minutes": 43,
"month": 2,
"nanos": 637000000,
"seconds": 30,
"time": 1396028610637,
"timezoneOffset": 420,
"year": 114
},
"albumArtUrl": "http://cont-ch1-1.pandora.com/images/public/amz/9/0/5/1/724383771509_130W_130H.jpg",
"musicToken": "5a0018da7876f6e7",
"songName": "Talk Show Host",
"artistName": "Radiohead",
"feedbackId": "-7241622182873125395",
"isPositive": false
}]
}
}
}
Remove feedback¶
- Method
station.deleteFeedback
Feedback added by Rate track can be removed from the station.
Name |
Type |
Description |
---|---|---|
feedbackId |
string |
{
"feedbackId": "3738252050522320365",
"userAuthToken": "XXX",
"syncTime": 1404910760
}
This method has does not return data.
Predefined stations¶
- Method
station.getGenreStations
Pandora provides a list of predefined stations (“genre stations”). The request has no parameters.
Each station belongs to one category, usually a genre name. stationToken can be used as musicToken to create a new station with Create.
Name |
Type |
Description |
---|---|---|
categories |
array |
List of categories |
categories.stations |
array |
List of stations in category |
categories.stations.stationToken |
string |
Actually a musicToken, see Create |
catogories.categoryName |
string |
Category name |
{
"stat": "ok",
"result": {
"categories": [{
"stations": [{
"stationToken": "G165",
"stationName": "90s Alternative ",
"stationId": "G165"
}],
"categoryName": "Alternative"
}]
}
}
Checksum¶
- Method
station.getGenreStationsChecksum
See Check station list for modifications.
Name |
Type |
Description |
---|---|---|
includeGenreCategoryAdUrl |
bool |
(optional) |
Name |
Type |
Description |
---|---|---|
checksum |
string |
Modify QuickMix¶
- Method
user.setQuickMix
Name |
Type |
Description |
---|---|---|
quickMixStationIds |
array |
List of station id’s (strings) (see Retrieve station list) |
{
"quickMixStationIds": ["404958383414849005", "403387202773593581"],
"userAuthToken": "XXX",
"syncTime": 1338211186
}
The response contains no data.