Query Examples

Query Examples

In this guide you can try the included queries to get started with FireFly.

For a review of key GraphQL concepts, see the Learn section of the GraphQL Foundation’s website. Also see the Insomnia setup guide.

Artist with Albums and Tracks

The artist field requires an id as an argument. In this example, B000QJJPUG, is the ASIN for Fleetwood Mac.

Note: Increased layers of nesting can have a negative impact on latency. To analyze the complexity of your query, use the header x-amzn-feature-flags: complexity

query {
    artist(id: "B000QJJPUG") {
        id
        name
        albums {
            edges {
                node {
                    title
                    tracks {
                        id
                    }
                }
            }
        }
    }
}

User

This query returns basic information about a user, such as subscription tier and the number of their followers.

query {
    user {
        id
        name
        tier
        followers {
            totalCount
        }
    }
}

Recommendation

Here is an example of a query that is currently in production for the Browse Home page:

Make sure any queries you write are following best practices

query browseCollections {
  t1r: recommendationCollection(type: "topOneRecommender") {
    recommendationConnection {
      edges {
        node {
          ...recommendationForTopRecommender
        }
      }
    }
  }
  browse: recommendationCollection {
    recommendationConnection {
      edges {
        node {
          ...recommendationWidgetRecommendation
        }
      }
      pageInfo {
        hasNextPage
        token
        metricId
      }
    }
  }
}
fragment itemAlbumPlayback on Album {
  playParams {
    id
    containerId
    selections
  }
}
fragment bauhausItemFeaturedAlbum on Album {
  id
  title
  images {
    url
  }
  releaseDate
  artistNames
  ...itemAlbumPlayback
}
fragment itemPlaylistPlayback on Playlist {
  playParams {
    id
    containerId
    selections
  }
}
fragment bauhausItemFeaturedPlaylist on Playlist {
  _type
  id
  title
  url
  images {
    url
    imageType
    height
    width
  }
  ...itemPlaylistPlayback
}
fragment itemStationPlayback on Station {
  playParams {
    id
    containerId
    selections
  }
}
fragment bauhausItemFeaturedStation on Station {
  id
  name
  images {
    url
    height
    width
    imageType
  }
  ...itemStationPlayback
}
fragment itemPodcastShowPlayback on PodcastShow {
  playParams {
    id
    selections
  }
}
fragment itemPodcastEpisodePlayback on PodcastEpisode {
  playParams {
    id
    selections
  }
  podcast {
    ...itemPodcastShowPlayback
  }
}
fragment bauhausItemFeaturedPodcastEpisode on PodcastEpisode {
  id
  title
  contentBenefitTypes
  images {
    url
    height
    width
    imageType
  }
  podcast {
    id
    title
    playParams {
      id
    }
  }
  ...itemPodcastEpisodePlayback
}
fragment bauhausItemFeaturedPromotion on Promotion {
  id
  title
  description
  images {
    width
    height
    url
    aspectRatio
  }
  url
}
fragment recommendationEntityEdgeMetricContext on EntityEdge {
  metricId
}
fragment bauhausItemFeaturedTrack on Track {
  id
  contributingArtists {
    edges {
      node {
        id
        name
        images {
          width
          height
          url
          imageType
        }
      }
    }
  }
  title
}
fragment useUiContentViewRecommendation on Recommendation {
  id
  metricId
  recommendedContent {
    edgeCount
  }
}
fragment playCapabilityAlbum on Album {
  id
  eligibility {
    playback {
      canPlayOnDemand
      shuffleType
    }
  }
}
fragment playbackIndicatorCapabilityAlbum on Album {
  id
  ...playCapabilityAlbum
}
fragment itemAlbumUiClickEntityContext on Album {
  id
  title
}
fragment badgesCapabilityAlbum on Album {
  id
  ...playCapabilityAlbum
  audioQualities
}
fragment downloadCapabilityAlbum on Album {
  id
  eligibility {
    isDownloadable
  }
}
fragment bauhausItemAlbum on Album {
  id
  title
  images {
    url
  }
  releaseDate
  format
  contributingArtists {
    edges {
      node {
        id
        name
      }
      role
    }
  }
  ...itemAlbumPlayback
  ...playCapabilityAlbum
  ...playbackIndicatorCapabilityAlbum
  ...itemAlbumUiClickEntityContext
  ...badgesCapabilityAlbum
  ...downloadCapabilityAlbum
}
fragment itemArtistUiClickEntityContext on Artist {
  id
  name
}
fragment itemArtistPlayback on Artist {
  id
  playParams {
    id
    selections
  }
}
fragment useShareActionOnArtist on Artist {
  id
  url
  name
  images {
    height
    width
    imageType
    url
  }
}
fragment overflowMenuArtist on Artist {
  id
  name
  ...useShareActionOnArtist
}
fragment bauhausItemArtist on Artist {
  id
  name
  images {
    url
    imageType
    width
    height
  }
  ...itemArtistUiClickEntityContext
  ...itemArtistPlayback
  ...overflowMenuArtist
}
fragment bauhausItemLiveEvent on LiveEvent {
  id
  name
  images {
    url
  }
  status
  startDate
}
fragment itemMerchUiClickEntityContext on Merch {
  id
}
fragment bauhausItemMerch on Merch {
  id
  name
  price
  assetType
  images {
    url
  }
  relatedAssetTypes
  ...itemMerchUiClickEntityContext
}
fragment itemPlaylistBadgeAllAccess on Playlist {
  eligibility {
    isAllAccess
  }
}
fragment playCapabilityPlaylist on Playlist {
  id
  eligibility {
    playback {
      canPlayOnDemand
      shuffleType
    }
  }
}
fragment playbackIndicatorCapabilityPlaylist on Playlist {
  id
  ...playCapabilityPlaylist
}
fragment itemPlaylistUiClickEntityContext on Playlist {
  id
  title
}
fragment badgesCapabilityPlaylist on Playlist {
  id
  ...playCapabilityPlaylist
}
fragment downloadCapabilityPlaylist on Playlist {
  id
  eligibility {
    isDownloadable
  }
}
fragment addSongsMenuItemPlaylist on Playlist {
  id
  eligibility {
    isEditable
  }
  trackCount
}
fragment reportEntityOnPlaylist on Playlist {
  id
  eligibility {
    canSubmitFeedback
  }
}
fragment useEditCapabilityOnPlaylist on Playlist {
  id
  eligibility {
    isEditable
  }
}
fragment usePrivacyToggleOnPlaylist on Playlist {
  id
  title
  description
  visibility
  followers {
    totalCount
  }
  ...reportEntityOnPlaylist
  ...useEditCapabilityOnPlaylist
}
fragment canShareOnPlaylist on Playlist {
  id
  visibility
}
fragment useShareActionOnPlaylist on Playlist {
  id
  url
  sharingUrl
  title
  images {
    height
    width
    imageType
    url
  }
  curator {
    id
    name
  }
}
fragment useFollowActionOnPlaylist on Playlist {
  id
  playParams {
    id
    containerId
    selections
  }
}
fragment overflowMenuPlaylist on Playlist {
  id
  title
  trackCount
  ...playCapabilityPlaylist
  ...addSongsMenuItemPlaylist
  ...usePrivacyToggleOnPlaylist
  ...reportEntityOnPlaylist
  ...canShareOnPlaylist
  ...useShareActionOnPlaylist
  ...useFollowActionOnPlaylist
}
fragment bauhausItemPlaylist on Playlist {
  id
  title
  contributors
  images {
    url
    imageType
    height
    width
  }
  ...itemPlaylistPlayback
  ...itemPlaylistBadgeAllAccess
  ...playCapabilityPlaylist
  ...playbackIndicatorCapabilityPlaylist
  ...itemPlaylistUiClickEntityContext
  ...badgesCapabilityPlaylist
  ...downloadCapabilityPlaylist
  ...overflowMenuPlaylist
}
fragment itemPodcastEpisodeUiClickEntityContext on PodcastEpisode {
  id
  metricId
}
fragment usePlaybackActionOnPodcastEpisode on PodcastEpisode {
  id
  title
  playParams {
    id
    selections
  }
  metricId
  podcast {
    id
    title
    playParams {
      id
    }
  }
  playbackInformation {
    progressMilliseconds
  }
}
fragment useShareActionOnPodcastEpisode on PodcastEpisode {
  id
  title
  podcast {
    id
    title
  }
  images {
    height
    width
    imageType
    url
  }
  url
}
fragment downloadActionHookOnPodcastEpisode on PodcastEpisode {
  playParams {
    id
  }
  metricId
}
fragment useFollowActionOnPodcast on PodcastEpisode {
  id
  podcast {
    id
    title
    images {
      url
    }
    author
    description
    metricId
    playParams {
      id
    }
  }
}
fragment saveLocalPodcastEpisode on PodcastEpisode {
  id
  title
  images {
    url
  }
  releaseDate
  availabilityDate
  description
  author
  seasonNumber
  duration
  contentBenefitTypes
  metricId
  eligibility {
    playbackSubscriptionTiers
    playback {
      canPlayOnDemand
      shuffleType
    }
    isDownloadable
  }
  podcast {
    id
    title
    images {
      url
    }
    playParams {
      id
    }
    metricId
  }
  playParams {
    id
    selections
  }
}
fragment overflowMenuPodcastEpisode on PodcastEpisode {
  id
  podcast {
    id
    metricId
  }
  eligibility {
    playback {
      canPlayOnDemand
    }
  }
  ...usePlaybackActionOnPodcastEpisode
  ...useShareActionOnPodcastEpisode
  ...downloadActionHookOnPodcastEpisode
  ...useFollowActionOnPodcast
  ...saveLocalPodcastEpisode
}
fragment bauhausItemPodcastEpisode on PodcastEpisode {
  id
  title
  duration
  releaseDate
  contentBenefitTypes
  images {
    url
  }
  podcast {
    id
    title
  }
  eligibility {
    playbackSubscriptionTiers
    playback {
      canPlayOnDemand
      shuffleType
    }
    isDownloadable
  }
  playbackInformation {
    progressMilliseconds
  }
  metricId
  ...itemPodcastEpisodePlayback
  ...itemPodcastEpisodeUiClickEntityContext
  ...overflowMenuPodcastEpisode
}
fragment itemPodcastShowUiClickEntityContext on PodcastShow {
  id
  metricId
}
fragment bauhausItemPodcastShow on PodcastShow {
  id
  title
  author
  images {
    width
    height
    url
  }
  metricId
  ...itemPodcastShowUiClickEntityContext
}
fragment itemPromotionUiClickEntityContext on Promotion {
  id
  url
}
fragment bauhausItemPromotion on Promotion {
  id
  title
  images {
    width
    height
    url
    aspectRatio
  }
  url
  ...itemPromotionUiClickEntityContext
}
fragment playbackIndicatorCapabilityStation on Station {
  id
}
fragment itemStationUiClickEntityContext on Station {
  id
  name
}
fragment useShareActionOnStation on Station {
  id
  url
  name
  images {
    height
    width
    imageType
    url
  }
}
fragment overflowMenuStation on Station {
  id
  name
  ...useShareActionOnStation
}
fragment bauhausItemStation on Station {
  id
  name
  images {
    url
    imageType
    height
    width
  }
  ...itemStationPlayback
  ...playbackIndicatorCapabilityStation
  ...itemStationUiClickEntityContext
  ...overflowMenuStation
}
fragment itemTrackPlayback on Track {
  id
  playParams {
    id
    containerId
    selections
  }
}
fragment playCapabilityTrack on Track {
  id
  eligibility {
    playback {
      canPlayOnDemand
      shuffleType
    }
  }
}
fragment viewAlbumMenuItemAlbum on Album {
  id
}
fragment reportEntityOnTrack on Track {
  id
}
fragment addOrRemoveFromMyMusicTrack on Track {
  id
  ...itemTrackPlayback
}
fragment useShareActionOnTrack on Track {
  id
  url
  title
  images {
    height
    width
    imageType
    url
  }
  contributingArtists {
    edges {
      node {
        id
        name
      }
    }
  }
}
fragment overflowMenuTrack on Track {
  id
  images {
    url
  }
  contributingArtists {
    edges {
      role
      node {
        id
        name
      }
    }
  }
  title
  album {
    id
    ...viewAlbumMenuItemAlbum
  }
  ...itemTrackPlayback
  ...reportEntityOnTrack
  ...addOrRemoveFromMyMusicTrack
  ...useShareActionOnTrack
}
fragment playbackIndicatorCapabilityTrack on Track {
  id
  ...playCapabilityTrack
}
fragment itemTrackUiClickEntityContext on Track {
  id
  title
  mediaType
}
fragment badgesCapabilityTrack on Track {
  id
  hasLyrics
  audioQualities
  ...playCapabilityTrack
}
fragment downloadCapabilityTrack on Track {
  id
  eligibility {
    isDownloadable
  }
}
fragment bauhausItemTrack on Track {
  id
  releaseDate
  images {
    url
  }
  contributingArtists {
    edges {
      node {
        id
        name
      }
      role
    }
  }
  title
  isTrending
  parentalSettings {
    hasExplicitLanguage
  }
  ...itemTrackPlayback
  ...playCapabilityTrack
  ...overflowMenuTrack
  ...playbackIndicatorCapabilityTrack
  ...itemTrackUiClickEntityContext
  ...badgesCapabilityTrack
  ...downloadCapabilityTrack
}
fragment bauhausItemVideo on Track {
  id
  title
  mediaType
  ...itemTrackUiClickEntityContext
}
fragment itemVideoUiClickEntityContext on Video {
  id
}
fragment bauhausItemVideoStory on Video {
  id
  name
  images {
    url
    imageType
    width
    height
  }
  ...itemVideoUiClickEntityContext
}
fragment bauhausItemCategory on Category {
  _type
  id
  name
  url
  images {
    url
    imageType
  }
}
fragment recommendationWidgetPageInfo on PageInfo {
  hasNextPage
  token
  metricId
}
fragment recommendationForTopRecommender on Recommendation {
  id
  itemType
  tags
  playParams {
    id
  }
  parentContainer {
    ...bauhausItemFeaturedAlbum
    ...bauhausItemFeaturedPlaylist
    ...bauhausItemFeaturedStation
    ...bauhausItemFeaturedPodcastEpisode
    ...bauhausItemFeaturedPromotion
  }
  recommendedContent {
    edges {
      ...recommendationEntityEdgeMetricContext
      node {
        ...bauhausItemFeaturedTrack
      }
    }
  }
  name
  ...useUiContentViewRecommendation
}
fragment recommendationWidgetRecommendation on Recommendation {
  id
  metricId
  itemType
  tags
  recommendedContent {
    edges {
      metricId
      node {
        ...bauhausItemAlbum
        ...bauhausItemArtist
        ...bauhausItemLiveEvent
        ...bauhausItemMerch
        ...bauhausItemPlaylist
        ...bauhausItemPodcastEpisode
        ...bauhausItemPodcastShow
        ...bauhausItemPromotion
        ...bauhausItemStation
        ...bauhausItemTrack
        ...bauhausItemVideo
        ...bauhausItemVideoStory
        ...bauhausItemCategory
      }
    }
    pageInfo {
      ...recommendationWidgetPageInfo
    }
  }
  name
  ...useUiContentViewRecommendation
}