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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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
| Status | Message |
|---|---|
403 | Only 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 parameter | Description |
|---|---|
:userId | A 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
| Status | Message |
|---|---|
403 | Only the person signed in can do this. |