Get a user's year-in-review Wrapped stats
curl --request GET \
--url https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"year": 123,
"totalScrobbles": 1,
"totalListeningTimeMinutes": 1,
"topArtists": [
{
"id": "<string>",
"name": "<string>",
"picture": "<string>",
"uri": "<string>",
"playCount": 1
}
],
"topTracks": [
{
"id": "<string>",
"title": "<string>",
"artist": "<string>",
"albumArt": "<string>",
"uri": "<string>",
"artistUri": "<string>",
"albumUri": "<string>",
"playCount": 1
}
],
"topAlbums": [
{
"id": "<string>",
"title": "<string>",
"artist": "<string>",
"albumArt": "<string>",
"uri": "<string>",
"playCount": 1
}
],
"topGenres": [
{
"genre": "<string>",
"count": 1
}
],
"scrobblesPerMonth": [
{
"month": 6,
"count": 1
}
],
"mostActiveDay": {
"date": "<string>",
"count": 1
},
"mostActiveHour": 11,
"newArtistsCount": 1,
"longestStreak": 1,
"firstScrobble": {
"trackTitle": "<string>",
"artistName": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"trackUri": "<string>"
},
"lastScrobble": {
"trackTitle": "<string>",
"artistName": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"trackUri": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<unknown>",
"message": "<string>"
}app.rocksky.stats
Get a user's year-in-review Wrapped stats
GET
/
app.rocksky.stats.getWrapped
Get a user's year-in-review Wrapped stats
curl --request GET \
--url https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rocksky.app/xrpc/app.rocksky.stats.getWrapped")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"year": 123,
"totalScrobbles": 1,
"totalListeningTimeMinutes": 1,
"topArtists": [
{
"id": "<string>",
"name": "<string>",
"picture": "<string>",
"uri": "<string>",
"playCount": 1
}
],
"topTracks": [
{
"id": "<string>",
"title": "<string>",
"artist": "<string>",
"albumArt": "<string>",
"uri": "<string>",
"artistUri": "<string>",
"albumUri": "<string>",
"playCount": 1
}
],
"topAlbums": [
{
"id": "<string>",
"title": "<string>",
"artist": "<string>",
"albumArt": "<string>",
"uri": "<string>",
"playCount": 1
}
],
"topGenres": [
{
"genre": "<string>",
"count": 1
}
],
"scrobblesPerMonth": [
{
"month": 6,
"count": 1
}
],
"mostActiveDay": {
"date": "<string>",
"count": 1
},
"mostActiveHour": 11,
"newArtistsCount": 1,
"longestStreak": 1,
"firstScrobble": {
"trackTitle": "<string>",
"artistName": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"trackUri": "<string>"
},
"lastScrobble": {
"trackTitle": "<string>",
"artistName": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"trackUri": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<unknown>",
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The DID or handle of the user
The year to get wrapped stats for (defaults to current year)
Required range:
x >= 2000Response
OK
Required range:
x >= 0Required range:
x >= 0Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Required range:
0 <= x <= 23Required range:
x >= 0Required range:
x >= 0Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I