API reference

Mirage Last.fm

Linking a Last.fm account, who sees your listening, and everyone's activity.

See Mirage. You link your Last.fm account through Last.fm's sign-in (POST me/lastfm, then Last.fm sends you back to the Mirage app with a token), or by username alone for public listening. What you're playing then shows as your activity to whoever your visibility allows, live over the socket as activity events; POST activities loads it for the people a screen shows, and users/:userId/lastfm gives someone's week of top artists.

GET /v1/messaging/me/lastfm

Your linked Last.fm account (account: username, profile link, verified, when linked, visibility, showActivity, problem), or null, and which ways of linking work here (available.signIn, available.username).

Auth: user access token or platform agent key

Response 200

{
  available: {
    signIn: boolean
    username: boolean
  }
  account: null | {
    username: string
    url: string
    verified: boolean
    linkedAt: number
    visibility: "me" | "everyone" | "friends"
    showActivity: boolean
    problem: null | "revoked" | "private" | "not_found"
  }
}

Errors

StatusMessage
403Only the person signed in can do this.

POST /v1/messaging/me/lastfm

Starts linking your Last.fm account: url is Last.fm's approval page, which sends you back to the Mirage app with a token (a one-time state, good for 10 minutes). app: the phone app's id, whose return page hands the token to the app.

Auth: user access token or platform agent key

Response 200

{
  url: string
}

Errors

StatusMessage
403Only the person signed in can do this.

POST /v1/messaging/me/lastfm/callback

Finishes linking with what Last.fm sent back (state, token), for the person who started: the token becomes a session key (auth.getSession), kept sealed. A Last.fm account links to one person; this replaces anyone else's unverified link to it.

Auth: user access token or platform agent key

Response 200

{
  account: {
    username: string
    url: string
    verified: boolean
    linkedAt: number
    visibility: "me" | "everyone" | "friends"
    showActivity: boolean
    problem: null | "revoked" | "private" | "not_found"
  }
}

Errors

StatusMessage
403Only the person signed in can do this.

PUT /v1/messaging/me/lastfm/username

Links a Last.fm account by username alone (no sign-in): only public listening shows, and the link is unverified.

Auth: user access token or platform agent key

Response 200

{
  account: {
    username: string
    url: string
    verified: boolean
    linkedAt: number
    visibility: "me" | "everyone" | "friends"
    showActivity: boolean
    problem: null | "revoked" | "private" | "not_found"
  }
}

Errors

StatusMessage
403Only the person signed in can do this.

PATCH /v1/messaging/me/lastfm

Who sees your Last.fm activity and profile section (visibility: everyone, friends or me), and whether your listening shows as your activity (showActivity).

Auth: user access token or platform agent key

Response 200

{
  account: {
    username: string
    url: string
    verified: boolean
    linkedAt: number
    visibility: "me" | "everyone" | "friends"
    showActivity: boolean
    problem: null | "revoked" | "private" | "not_found"
  }
}

Errors

StatusMessage
403Only the person signed in can do this.

DELETE /v1/messaging/me/lastfm

Unlinks your Last.fm account and deletes its session key.

Auth: user access token or platform agent key

Response 204 with no body.

Errors

StatusMessage
403Only the person signed in can do this.

POST /v1/messaging/activities

What each of userIds (up to 500) is listening to, for those whose activity you may see (activities: userId, activity with track, artist, album, album art copied into Mirage's files, the track's link, nowPlaying, playedAt); others are left out.

Auth: user access token or platform agent key

Response 200

{
  activities: {
    userId: string
    activity: {
      source: "lastfm"
      track: string
      artist: string
      album: null | string
      artUrl: null | string
      trackUrl: null | string
      nowPlaying: boolean
      playedAt: null | number
    }
  }[]
  at: number
}

Errors

StatusMessage
403Only the person signed in can do this.

GET /v1/messaging/users/:userId/lastfm

Someone's listening on their profile, when you may see it: this week's top artists (topArtists: up to ten, most played first, each with name, url and pictureUrl, a copy of the artist's picture or null) and their activity. Never their Last.fm username or play counts.

Auth: user access token or platform agent key

Path parameterDescription
:userIdA member's user id (usr_…).

Response 200

{
  topArtists: {
    name: string
    url: null | string
    pictureUrl: null | string
  }[]
  activity: null | {
    source: "lastfm"
    track: string
    artist: string
    album: null | string
    artUrl: null | string
    trackUrl: null | string
    nowPlaying: boolean
    playedAt: null | number
  }
}

Errors

StatusMessage
403Only the person signed in can do this.