Users
Get a profile
GET/v1/users/{userId}
No API keyRate-limited
A whole profile in one request: the user, their public counts, the music pinned to their profile and their achievements.
Parameters#
Path parameters#
| Name | Type | Description |
|---|---|---|
| userIdrequired | string | A Rankd user id: usr_ then 26 characters. Get one from Look up a user by username.Pattern: ^usr_[0-9A-Z]{26}$ · Example: usr_01KY0JGXMWTT8H9WFN9RTM5JP9 |
Try it#
Sends a real request to the production API through this site. No credentials are used, so you see exactly what anyone would.
Response
Request#
curl "https://api.rankdmusic.app/v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9"const response = await fetch('https://api.rankdmusic.app/v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9');
const body = await response.json();
if (!response.ok) {
const code = typeof body.error === 'string' ? body.error : body.error.code;
throw new Error(`Rankd API ${response.status}: ${code}`);
}
const { data, meta } = body;import Foundation
let url = URL(string: "https://api.rankdmusic.app/v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9")!
let (data, response) = try await URLSession.shared.data(from: url)
guard let http = response as? HTTPURLResponse, http.statusCode == 200 else {
throw URLError(.badServerResponse)
}
let body = try JSONSerialization.jsonObject(with: data) as? [String: Any]
let result = body?["data"]import requests
response = requests.get("https://api.rankdmusic.app/v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9", timeout=10)
body = response.json()
if not response.ok:
error = body["error"]
raise RuntimeError(error if isinstance(error, str) else error["code"])
data = body["data"]Response#
A successful response is { "data": …, "meta": … }. data is a UserProfile, and meta is a Meta.
| Field | Type | Description |
|---|---|---|
| idalways | string | The user’s id. |
| usernamealways | string | Their username. |
| displayName | string or null | The name they show. |
| bio | string or null | Their bio. |
| foundingMember | FoundingMember | |
| avatarAssetId | string or null | Their profile picture, as an asset id. |
| avatarUrl | string or null | Their profile picture’s URL. |
| isDiscoverable | boolean | Whether people who are not signed in can find them. |
| createdAt | string (date-time) or null | When they joined. |
| updatedAt | string (date-time) or null | When their profile last changed. |
| stats | object | Public counts. |
| ratings | integer | Ratings. |
| reviews | integer | Reviews. |
| lists | integer | Lists. |
| followers | integer | Followers. |
| following | integer | Following. |
| pins | array of object | Music pinned to their profile. |
| slot | string | Which favourite slot. One of: album, artist, song |
| position | integer | Order within the slot. |
| music | MusicRef | |
| artworkTemplate | string or null | Artwork with {w}x{h}. |
| achievements | array of object | Achievements they have unlocked. |
| id | string | Which achievement. |
| unlockedAt | string (date-time) or null | When it was unlocked. |
Responses#
200The profile.
Captured from production: GET /v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9
200 response
{
"data": {
"id": "usr_01KY0JGXMWTT8H9WFN9RTM5JP9",
"username": "kyle",
"displayName": "kyle",
"bio": "🏴",
"foundingMember": {
"number": 2,
"grantedAt": "2026-09-17T14:44:05.000Z"
},
"avatarAssetId": "ast_9E07Q6Q598DXKRQBN0NDSCQYA4",
"avatarUrl": "https://api.rankdmusic.app/v1/assets/ast_9E07Q6Q598DXKRQBN0NDSCQYA4",
"isDiscoverable": true,
"createdAt": "2026-07-20T20:12:20.508Z",
"updatedAt": "2026-09-29T11:24:06.862Z",
"stats": {
"ratings": 725,
"reviews": 5,
"lists": 7,
"followers": 4,
"following": 4
},
"pins": [
{
"slot": "album",
"position": 0,
"music": {
"provider": "apple_music",
"type": "album",
"id": "1742057774",
"title": "THE TORTURED POETS DEPARTMENT: THE ANTHOLOGY",
"artistName": "Taylor Swift",
"artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/a4/86/59/a486593a-53c9-1c2a-5122-8f25339f7359/24UMGIM44778.rgb.jpg/600x600bb.jpg"
},
"artworkTemplate": "https://is1-ssl.mzstatic.com/image/thumb/Music221/v4/a4/86/59/a486593a-53c9-1c2a-5122-8f25339f7359/24UMGIM44778.rgb.jpg/{w}x{h}bb.jpg"
},
{
"slot": "artist",
"position": 0,
"music": {
"provider": "apple_music",
"type": "artist",
"id": "159260351",
"title": "Taylor Swift",
"artistName": "",
"artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/AMCArtistImages221/v4/6d/67/88/6d67888b-9e7f-53af-7853-0f91d6fd2332/ami_U003aidentity_U003a994af5c375f4c3aa96cd6ced4a700799-2026-09-25T04-00-05.358Z_cropped.png/600x600bb.jpg"
},
"artworkTemplate": "https://is1-ssl.mzstatic.com/image/thumb/AMCArtistImages221/v4/6d/67/88/6d67888b-9e7f-53af-7853-0f91d6fd2332/ami_U003aidentity_U003a994af5c375f4c3aa96cd6ced4a700799-2026-09-25T04-00-05.358Z_cropped.png/{w}x{h}bb.jpg"
}
],
"achievements": [
{
"id": "artists-10",
"unlockedAt": "2026-09-19T22:02:30.416Z"
},
{
"id": "songs-500",
"unlockedAt": "2026-09-14T21:44:50.564Z"
}
]
},
"meta": {
"apiVersion": 1,
"migrationPhase": 3,
"sourceOfTruth": "per_account"
}
}404No such user, or they are not discoverable.
Captured from production: GET /v1/users/by-username/no_such_person_zz
404 response
{
"error": {
"code": "not_found",
"message": "User not found."
}
}429Too many requests this minute. Wait Retry-After seconds, then try again.
Headers: Retry-After Seconds to wait. Always 60.
429 response
{
"error": "rate limited"
}