---
title: "Chansons publiees d'un compte"
method: GET
path: "/users/{handle}/songs"
tags: ["social"]
---

# Chansons publiees d'un compte

`GET /users/{handle}/songs`

## Request

- Base URL: `https://jam-jam.org/api/v1`
- URL: `https://jam-jam.org/api/v1/users/{handle}/songs`
- Auth: HTTP bearer

Les chansons que ce compte a declare publier sur son profil, dans
l'ordre antechronologique, en pagination keyset (`cursor` opaque,
renvoye tel quel). Une page pleine porte un `nextCursor` ; une page
incomplete rend `nextCursor: null`.

`audioPlayable` n'est vrai que si vous et ce compte vous suivez
MUTUELLEMENT : c'est la regle de la bande-son chez Jam Jam. Sans ce
lien mutuel, l'existence meme d'une bande-son reste tue
(`hasAudio: false`). Aucun endpoint ne sert l'audio : il ne s'ecoute
que dans l'application.

Un compte PRIVE que vous ne suivez pas rend `403 not-visible` (le
compte existe, son contenu ne vous est pas ouvert), tandis qu'un
pseudo inconnu rend `404 not-found`.

## Response `200`

Page de chansons publiees

- UserSongsPage
  - `items` UserSong[], required
    - `baseSongId` string, required: Identifiant stable de la chanson (slug artiste-titre), le meme que dans le carnet.
    - `title` string, required
    - `artist` string, nullable, required
    - `key` object, nullable, required: Tonalite detectee, telle que l'application la calcule.
    - `hasAudio` boolean, required: Une bande-son est associee a cette chanson ET l'appelant a le droit de l'entendre. Sans suivi mutuel, ce champ reste `false` meme si une bande-son existe : son existence n'est pas divulguee.
    - `audioPlayable` boolean, required: Vrai uniquement en suivi MUTUEL accepte. Aucun endpoint ne sert l'audio ; la lecture se fait dans l'application.
    - `likes` integer, required
  - `nextCursor` string, nullable, required

## Other responses

- `400`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `401`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `403`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `404`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `429`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).

---

[API](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api.md) · [All operations](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/revisions/64cd41a46e4e?raw)
