---
title: "Get Recommendations"
method: GET
path: "/recommendations"
tags: ["Tracks"]
---

# Get Recommendations

`GET /recommendations`

Recommendations are generated based on the available information for a given seed entity and matched against similar artists and tracks. If there is sufficient information about the provided seeds, a list of tracks will be returned together with pool size details.

For artists and tracks that are very new or obscure there might not be enough data to generate a list of tracks.

## Query parameters

- `limit` integer — The target size of the list of recommended tracks. For seeds with unusually small pools or when highly restrictive filtering is applied, it may be impossible to generate the requested number of recommended tracks. Debugging information for such cases is available in the response. Default: 20\. Minimum: 1\. Maximum: 100.
- `market` string — An [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). If a country code is specified, only content that is available in that market will be returned.<br/> If a valid user access token is specified in the request header, the country associated with the user account will take priority over this parameter.<br/> _**Note**: If neither market or user country are provided, the content is considered unavailable for the client._<br/> Users can view the country that is associated with their account in the [account settings](https://www.spotify.com/se/account/overview/).
- `seed_artists` string — A comma separated list of [Spotify IDs](/documentation/web-api/#spotify-uris-and-ids) for seed artists. Up to 5 seed values may be provided in any combination of `seed_artists`, `seed_tracks` and `seed_genres`.
- `seed_genres` string — A comma separated list of any genres in the set of [available genre seeds](#available-genre-seeds). Up to 5 seed values may be provided in any combination of `seed_artists`, `seed_tracks` and `seed_genres`.
- `seed_tracks` string — A comma separated list of [Spotify IDs](/documentation/web-api/#spotify-uris-and-ids) for a seed track. Up to 5 seed values may be provided in any combination of `seed_artists`, `seed_tracks` and `seed_genres`.
- `min_acousticness` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_acousticness` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_acousticness` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_danceability` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_danceability` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_danceability` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_duration_ms` integer — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_duration_ms` integer — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_duration_ms` integer — Target duration of the track (ms)
- `min_energy` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_energy` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_energy` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_instrumentalness` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_instrumentalness` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_instrumentalness` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_key` integer — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_key` integer — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_key` integer — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_liveness` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_liveness` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_liveness` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_loudness` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_loudness` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_loudness` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_mode` integer — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_mode` integer — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_mode` integer — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_popularity` integer — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_popularity` integer — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_popularity` integer — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_speechiness` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_speechiness` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_speechiness` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_tempo` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_tempo` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_tempo` number — Target tempo (BPM)
- `min_time_signature` integer — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_time_signature` integer — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_time_signature` integer — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.
- `min_valence` number — For each tunable track attribute, a hard floor on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `min_tempo=140` would restrict results to only those tracks with a tempo of greater than 140 beats per minute.
- `max_valence` number — For each tunable track attribute, a hard ceiling on the selected track attribute’s value can be provided. See tunable track attributes below for the list of available options. For example, `max_instrumentalness=0.35` would filter out most tracks that are likely to be instrumental.
- `target_valence` number — For each of the tunable track attributes (below) a target value may be provided. Tracks with the attribute values nearest to the target values will be preferred. For example, you might request `target_energy=0.6` and `target_danceability=0.8`. All target values will be weighed equally in ranking results.

## Response `200`

A set of recommendations

- RecommendationsObject
  - `seeds` RecommendationSeedObject[], required — An array of recommendation seed objects.
    - `afterFilteringSize` integer — The number of tracks available after min\_\* and max\_\* filters have been applied.
    - `afterRelinkingSize` integer — The number of tracks available after relinking for regional availability.
    - `href` string — A link to the full track or artist data for this seed. For tracks this will be a link to a Track Object. For artists a link to an Artist Object. For genre seeds, this value will be `null`.
    - `id` string — The id used to select this seed. This will be the same as the string used in the `seed_artists`, `seed_tracks` or `seed_genres` parameter.
    - `initialPoolSize` integer — The number of recommended tracks available for this seed.
    - `type` string — The entity type of this seed. One of `artist`, `track` or `genre`.
  - `tracks` TrackObject[], required — An array of track objects ordered according to the parameters supplied.
    - `album` SimplifiedAlbumObject
      - `album_type` 'album' | 'single' | 'compilation', required — The type of the album.
      - `available_markets` string[], required — The markets in which the album is available: [ISO 3166-1 alpha-2 country codes](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). _**NOTE**: an album is considered available in a market when at least 1 of its tracks is available in that market._
      - `external_urls` ExternalUrlObject, required
        - `spotify` string — The [Spotify URL](/documentation/web-api/#spotify-uris-and-ids) for the object.
      - `href` string, required — A link to the Web API endpoint providing full details of the album.
      - `id` string, required — The [Spotify ID](/documentation/web-api/#spotify-uris-and-ids) for the album.
      - `images` ImageObject[], required — The cover art for the album in various sizes, widest first.
        - `height` integer, nullable, required — The image height in pixels.
        - `url` string, required — The source URL of the image.
        - `width` integer, nullable, required — The image width in pixels.
      - `name` string, required — The name of the album. In case of an album takedown, the value may be an empty string.
      - `release_date` string, required — The date the album was first released.
      - `release_date_precision` 'year' | 'month' | 'day', required — The precision with which `release_date` value is known.
      - `restrictions` AlbumRestrictionObject
        - `reason` 'market' | 'product' | 'explicit' — The reason for the restriction. Albums may be restricted if the content is not available in a given market, to the user's subscription type, or when the user's account is set to not play explicit content. Additional reasons may be added in the future.
      - `total_tracks` integer, required — The number of tracks in the album.
      - `type` 'album', required — The object type.
      - `uri` string, required — The [Spotify URI](/documentation/web-api/#spotify-uris-and-ids) for the album.
      - `album_group` 'album' | 'single' | 'compilation' | 'appears_on' — The field is present when getting an artist's albums. Compare to album_type this field represents relationship between the artist and the album.
      - `artists` SimplifiedArtistObject[], required — The artists of the album. Each artist object includes a link in `href` to more detailed information about the artist.
        - `external_urls` ExternalUrlObject
          - `spotify` string — The [Spotify URL](/documentation/web-api/#spotify-uris-and-ids) for the object.
        - `href` string — A link to the Web API endpoint providing full details of the artist.
        - `id` string — The [Spotify ID](/documentation/web-api/#spotify-uris-and-ids) for the artist.
        - `name` string — The name of the artist.
        - `type` 'artist' — The object type.
        - `uri` string — The [Spotify URI](/documentation/web-api/#spotify-uris-and-ids) for the artist.
    - `artists` ArtistObject[] — The artists who performed the track. Each artist object includes a link in `href` to more detailed information about the artist.
      - `external_urls` ExternalUrlObject
        - `spotify` string — The [Spotify URL](/documentation/web-api/#spotify-uris-and-ids) for the object.
      - `followers` FollowersObject
        - `href` string, nullable — This will always be set to null, as the Web API does not support it at the moment.
        - `total` integer — The total number of followers.
      - `genres` string[] — A list of the genres the artist is associated with. If not yet classified, the array is empty.
      - `href` string — A link to the Web API endpoint providing full details of the artist.
      - `id` string — The [Spotify ID](/documentation/web-api/#spotify-uris-and-ids) for the artist.
      - `images` ImageObject[] — Images of the artist in various sizes, widest first.
        - `height` integer, nullable, required — The image height in pixels.
        - `url` string, required — The source URL of the image.
        - `width` integer, nullable, required — The image width in pixels.
      - `name` string — The name of the artist.
      - `popularity` integer — The popularity of the artist. The value will be between 0 and 100, with 100 being the most popular. The artist's popularity is calculated from the popularity of all the artist's tracks.
      - `type` 'artist' — The object type.
      - `uri` string — The [Spotify URI](/documentation/web-api/#spotify-uris-and-ids) for the artist.
    - `available_markets` string[] — A list of the countries in which the track can be played, identified by their [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
    - `disc_number` integer — The disc number (usually `1` unless the album consists of more than one disc).
    - `duration_ms` integer — The track length in milliseconds.
    - `explicit` boolean — Whether or not the track has explicit lyrics ( `true` = yes it does; `false` = no it does not OR unknown).
    - `external_ids` ExternalIdObject
      - `ean` string — [International Article Number](http://en.wikipedia.org/wiki/International_Article_Number_%28EAN%29)
      - `isrc` string — [International Standard Recording Code](http://en.wikipedia.org/wiki/International_Standard_Recording_Code)
      - `upc` string — [Universal Product Code](http://en.wikipedia.org/wiki/Universal_Product_Code)
    - `external_urls` ExternalUrlObject
      - `spotify` string — The [Spotify URL](/documentation/web-api/#spotify-uris-and-ids) for the object.
    - `href` string — A link to the Web API endpoint providing full details of the track.
    - `id` string — The [Spotify ID](/documentation/web-api/#spotify-uris-and-ids) for the track.
    - `is_local` boolean — Whether or not the track is from a local file.
    - `is_playable` boolean — Part of the response when [Track Relinking](/documentation/general/guides/track-relinking-guide/) is applied. If `true`, the track is playable in the given market. Otherwise `false`.
    - `linked_from` LinkedTrackObject
      - `external_urls` ExternalUrlObject
        - `spotify` string — The [Spotify URL](/documentation/web-api/#spotify-uris-and-ids) for the object.
      - `href` string — A link to the Web API endpoint providing full details of the track.
      - `id` string — The [Spotify ID](/documentation/web-api/#spotify-uris-and-ids) for the track.
      - `type` string — The object type: "track".
      - `uri` string — The [Spotify URI](/documentation/web-api/#spotify-uris-and-ids) for the track.
    - `name` string — The name of the track.
    - `popularity` integer — The popularity of the track. The value will be between 0 and 100, with 100 being the most popular.<br/>The popularity of a track is a value between 0 and 100, with 100 being the most popular. The popularity is calculated by algorithm and is based, in the most part, on the total number of plays the track has had and how recent those plays are.<br/>Generally speaking, songs that are being played a lot now will have a higher popularity than songs that were played a lot in the past. Duplicate tracks (e.g. the same track from a single and an album) are rated independently. Artist and album popularity is derived mathematically from track popularity. _**Note**: the popularity value may lag actual popularity by a few days: the value is not updated in real time._
    - `preview_url` string — A link to a 30 second preview (MP3 format) of the track. Can be `null`
    - `restrictions` TrackRestrictionObject
      - `reason` string — The reason for the restriction. Supported values: - `market` - The content item is not available in the given market. - `product` - The content item is not available for the user's subscription type. - `explicit` - The content item is explicit and the user's account is set to not play explicit content. Additional reasons may be added in the future. **Note**: If you use this field, make sure that your application safely handles unknown values.
    - `track_number` integer — The number of the track. If an album has several discs, the track number is the number on the specified disc.
    - `type` 'track' — The object type: "track".
    - `uri` string — The [Spotify URI](/documentation/web-api/#spotify-uris-and-ids) for the track.

## Other responses

- `401` — Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user.
- `403` — Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here.
- `429` — The app has exceeded its rate limits.

---

[API](https://skmtc.net/spotify/apis/sonallux.md) · [All operations](https://skmtc.net/spotify/apis/sonallux/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spotify/sonallux/revisions/1459b27f2e48/schema)
