Rankd for Developers
Checking API…

Users

A user’s lists

GET/v1/users/{userId}/lists
No API keyRate-limitedPaginated

Their public lists, most recently updated first.

Parameters#

Path parameters#

NameTypeDescription
userIdrequiredstringA 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

Query parameters#

NameTypeDescription
limitinteger
default 30
How many items to return. Default 30, at most 100. Larger values are capped at 100; anything that is not a positive whole number gives the default.
cursorstringThe meta.nextCursor of the previous page. Leave it out for the first page. Cursors are opaque: pass them back unchanged.

Try it#

Sends a real request to the production API through this site. No credentials are used, so you see exactly what anyone would.

Request#

curl "https://api.rankdmusic.app/v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9/lists"

Response#

A successful response is { "data": …, "meta": … }. data is an array of ListSummary objects, and meta is a PageMeta.

FieldTypeDescription
idalwaysstringThe list’s id.
titlealwaysstringTitle.
kindstringranked lists are in order, collections are not, smart lists fill themselves.
One of: ranked, collection, smart, collaborative
visibilitystringAlways public without credentials.
emojistring or nullIts emoji. May be empty.
entryCountintegerHow many entries.
updatedAtstring (date-time) or nullWhen it last changed.

meta (PageMeta)#

FieldTypeDescription
apiVersionalwaysintegerThe API version that answered.
migrationPhaseintegerInternal to Rankd. Ignore it.
sourceOfTruthstringInternal to Rankd. Ignore it.
nextCursorstring or nullPass this as cursor to get the next page. null or missing on the last page.

Responses#

200A page of lists.

Captured from production: GET /v1/users/usr_01KY0JGXMWTT8H9WFN9RTM5JP9/lists?limit=2

200 response
{
  "data": [
    {
      "id": "9c56fe92-4ac1-463d-af4b-bbadfd11e5eb",
      "title": "Songs I don’t rate",
      "kind": "smart",
      "visibility": "public",
      "emoji": "",
      "entryCount": 0,
      "updatedAt": "2026-09-29T20:36:57.231Z"
    },
    {
      "id": "1082404f-6402-437b-a137-89b585754d74",
      "title": "My 5★ Albums",
      "kind": "collection",
      "visibility": "public",
      "emoji": "🌟",
      "entryCount": 14,
      "updatedAt": "2026-09-29T13:15:54.311Z"
    }
  ],
  "meta": {
    "apiVersion": 1,
    "migrationPhase": 3,
    "sourceOfTruth": "per_account",
    "nextCursor": "MTc5MDY4Nzc1NDMxMXwxMDgyNDA0Zi02NDAyLTQzN2ItYTEzNy04OWI1ODU3NTRkNzQ"
  }
}
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"
}
↑ ↓ to move↵ to open/ or ⌘K to search