Gracenote Album Masters API

An Album Master groups all known Album Editions for a given logical release and provides a single, canonical view across those editions. Think of it as a "parent" that holds together the remastered version, the deluxe edition, regional variants, etc. — so you can show one clean entry per album in a discography instead of listing every re-release separately. Each Album Master has a `preferredEditionID` (the best-fit edition picked by Gracenote's algorithms) and an `allAlbumEditions` array with every known variant. **How it fits together:** Artist → Album Master → Album Editions → Tracks → Recordings **Good to know:** - Only the `/albumMasters/explore` endpoint exists — there is no lookup or search. - If you need a specific master, filter by `artistIDs` and page through results, or grab an Album Edition via `/albumEditions/lookup` and work backwards from there.

Operations 1

GET /albumMasters/explore Explore Album Master(s) #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gracenote-albummasters-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gracenote-albummasters-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 3.0 Beta
  title: GMD API v3.0 Beta Album Masters API
  description: Gracenote Global Music Data (GMD) API V3.0 **Beta** Specification. Interfaces are subject to change.
servers:
- url: https://api.gmd.music.gracenote.com/v3
security:
- ApiKeyAuth: []
tags:
- name: AlbumMasters
  description: 'An Album Master groups all known Album Editions for a given logical release and

    provides a single, canonical view across those editions.'
paths:
  /albumMasters/explore:
    get:
      tags:
      - AlbumMasters
      summary: Explore Album Master(s)
      description: 'Returns Album Master objects — one per logical album — so you can build a

        discography without worrying about duplicate editions.


        You must supply at least one filter: `artistIDs`, `tmsIDs`, or

        `videoMusicReleaseType`. Combine them if you like; when more than one is

        present they''re ANDed together.


        If you don''t pass a `sort` parameter, results come back in newest-first

        (descending release year) order.


        There''s no lookup or search for Album Masters. If you already have an

        Album Edition ID, use `/albumEditions/lookup` and work from there instead.


        **Example:** Get an artist''s albums, newest first

        `https://.../albumMasters/explore?artistIDs=GMGZZX800003Y64&sort=-releaseYear`


        **Example:** Find soundtracks tied to a TMS program

        `https://.../albumMasters/explore?tmsIDs=12345&videoMusicReleaseType=soundtrack`


        **Example:** Only main canon albums for an artist

        `https://.../albumMasters/explore?artistIDs=GMGZZX800003Y64&releaseTypes=mainCanon`'
      parameters:
      - $ref: '#/components/parameters/apiKeyParam'
      - $ref: '#/components/parameters/artistIDs'
      - $ref: '#/components/parameters/tmsIDs'
      - $ref: '#/components/parameters/releaseTypes'
      - $ref: '#/components/parameters/genreIDs'
      - $ref: '#/components/parameters/videoMusicReleaseType'
      - $ref: '#/components/parameters/sortAlbumMasters'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/displayLanguage'
      - $ref: '#/components/parameters/genreList'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
                  data:
                    type: array
                    nullable: false
                    items:
                      $ref: '#/components/schemas/AlbumMasterObject'
                required:
                - meta
                - data
        '400':
          $ref: '#/components/responses/ErrorResponse400'
      operationId: getAlbumMastersExplore
      x-operation-id-source: derived
components:
  parameters:
    genreIDs:
      name: genreIDs
      in: query
      required: false
      description: Comma separated list of Gracenote genre descriptorIDs for filtering results (max 5)
      schema:
        type: string
    genreList:
      name: genreList
      in: query
      required: false
      description: Select a genre hierarchy List according to the desired region and specificity. This parameter is only supported for Customers with GMD Discovery/Advanced Discovery package.
      schema:
        type: string
        default: GENRES-GLOBAL-DETAILED
        enum:
        - GENRES-US-DETAILED
        - GENRES-US-SIMPLIFIED
        - GENRES-CHINA-DETAILED
        - GENRES-CHINA-SIMPLIFIED
        - GENRES-EUROPE-DETAILED
        - GENRES-EUROPE-SIMPLIFIED
        - GENRES-GLOBAL-DETAILED
        - GENRES-GLOBAL-SIMPLIFIED
        - GENRES-INDIA-SIMPLIFIED
        - GENRES-JAPAN-DETAILED
        - GENRES-JAPAN-SIMPLIFIED
        - GENRES-KOREA-DETAILED
        - GENRES-KOREA-SIMPLIFIED
        - GENRES-LATIN-AMERICA-DETAILED
        - GENRES-LATIN-AMERICA-SIMPLIFIED
        - GENRES-TAIWAN-DETAILED
        - GENRES-TAIWAN-SIMPLIFIED
    limit:
      name: limit
      in: query
      description: Limit the number of results between 1 and 25.
      schema:
        type: integer
        minimum: 1
        maximum: 25
        default: 10
    sortAlbumMasters:
      name: sort
      in: query
      required: false
      description: 'How to order the results. Prefix with `-` for descending.


        Leave this out and you''ll get newest albums first (descending release year).


        When sorting by `releaseType`, the order is:

        mainCanon → mainCanonCollection → singleEP → singleArtistCollection →

        multiArtistCollection → unclassified.


        Albums without a `releaseYear` end up at the bottom when you sort by year.

        '
      schema:
        type: string
        enum:
        - releaseYear
        - -releaseYear
        - releaseType
        - -releaseType
        - albumMasterName
        - -albumMasterName
    apiKeyParam:
      name: GN-APIKEY
      in: header
      description: API key to authorize the request.
      required: true
      schema:
        type: string
        examples:
        - your-api-key
    displayLanguage:
      name: displayLanguage
      in: query
      required: false
      description: Specify the language for descriptor label localization in the response.
      schema:
        type: string
        default: en
        enum:
        - ar
        - bg
        - zh-Hans
        - zh-Hant
        - hr
        - cs
        - da
        - nl
        - en
        - fi
        - fr
        - de
        - el
        - hu
        - id
        - it
        - ja
        - ko
        - nb
        - fa
        - pl
        - pt
        - ro
        - ru
        - sr
        - sk
        - es
        - sv
        - th
        - tr
        - vi
    videoMusicReleaseType:
      name: videoMusicReleaseType
      in: query
      required: false
      description: 'Filter by one or more video music release types. Pass a single value or a comma-separated list (e.g. `score,soundtrack`).

        When omitted, no filtering is applied and rows with any value (including null/empty) are returned.

        '
      style: form
      explode: false
      schema:
        type: array
        minItems: 1
        items:
          type: string
          enum:
          - soundtrack
          - score
    artistIDs:
      name: artistIDs
      in: query
      required: false
      description: Comma separated list of Gracenote artist IDs for filtering results (max 5)
      schema:
        type: string
    offset:
      name: offset
      in: query
      description: Return results starting at the given offset. Used for paging through results. Maximum value is 25000
      schema:
        type: integer
        default: 0
        maximum: 25000
    tmsIDs:
      name: tmsIDs
      in: query
      required: false
      description: 'Comma-separated TMS IDs (max 100). TMS stands for Tribune Media Services —

        these IDs tie an album to a specific film or TV program. You''ll need the

        `tms-id` add-on enabled on your API key.

        '
      schema:
        type: string
    releaseTypes:
      name: releaseTypes
      in: query
      required: false
      description: Filter by album release type.
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
          - mainCanon
          - mainCanonCollection
          - singleArtistCollection
          - multiArtistCollection
          - singleEP
          default: none
  schemas:
    ExternalID:
      type: object
      additionalProperties: false
      properties:
        source:
          type: string
        ID:
          type: string
      required:
      - source
      - ID
    ArtistShort:
      title: artist
      type:
      - object
      - 'null'
      additionalProperties: false
      properties:
        artistID:
          nullable: false
          type: string
          description: Gracenote Artist ID
        artistName:
          nullable: false
          type: string
          description: Artist Name
      required:
      - artistID
      - artistName
    AlbumMasterObject:
      title: album master object
      nullable: false
      type: object
      additionalProperties: false
      description: 'One entry per logical album. Groups together all the remastered, deluxe,

        and regional editions under a single ID so you don''t have to de-dupe them yourself.

        '
      properties:
        objectType:
          enum:
          - albumMaster
          description: Always `albumMaster`.
          type: string
        albumMasterID:
          nullable: false
          type: string
          description: Unique Gracenote ID for this album grouping.
        albumMasterName:
          nullable: false
          type: string
          description: Display name for the album, usually taken from the preferred edition.
        artist:
          $ref: '#/components/schemas/ArtistShort'
        descriptors:
          nullable: false
          description: 'Genre data only — moods, tempos, and styles live on the individual Recordings.

            Requires GMD Discovery or Advanced Discovery package.

            '
          type: object
          additionalProperties: false
          properties:
            genres:
              $ref: '#/components/schemas/DescriptorObject'
        preferredEditionID:
          type:
          - string
          - 'null'
          description: 'Points to the edition Gracenote considers the best default pick.

            Will be `null` if no preferred edition has been assigned yet.

            Matches the item in `allAlbumEditions` where `isSelectedAlbumEdition` is `true`.

            '
        languageContext:
          $ref: '#/components/schemas/LanguageContext'
        releaseType:
          type:
          - string
          - 'null'
          description: 'What kind of release this is. Requires GMD Discovery/Advanced Discovery.


            Note: you might see `unclassified` in responses, but you can''t filter on it

            — the `releaseTypes` query param won''t accept it.

            '
          enum:
          - mainCanon
          - mainCanonCollection
          - singleArtistCollection
          - multiArtistCollection
          - singleEP
          - unclassified
        releaseYear:
          description: Year the album came out. Requires GMD Search package.
          type:
          - integer
          - 'null'
        allAlbumEditions:
          nullable: false
          type: array
          description: 'Every edition we know about for this album. Check `isSelectedAlbumEdition`

            on each item to find the preferred one.

            '
          items:
            $ref: '#/components/schemas/AlbumMasterEditionItem'
        externalIDs:
          nullable: false
          type: array
          description: Partner catalog IDs (Spotify, Apple, etc.). Requires Partner IDs add-on.
          items:
            $ref: '#/components/schemas/ExternalID'
        images:
          nullable: false
          type: array
          description: 'Cover art pulled from the preferred edition. You''ll get an empty array

            if there''s no preferred edition set. Requires Cover Art add-on.

            '
          items:
            $ref: '#/components/schemas/Image'
        videoMusicReleaseType:
          type:
          - string
          - 'null'
          description: '`soundtrack`, `score`, or `null` if the album isn''t tied to film/TV.

            '
          enum:
          - soundtrack
          - score
        submittedArtistID:
          type:
          - string
          - 'null'
          description: Echoes back the artistID you filtered on. Null when the request wasn't filtered by artist.
      required:
      - objectType
      - albumMasterID
      - artist
      - albumMasterName
      - preferredEditionID
      - languageContext
      - allAlbumEditions
      - videoMusicReleaseType
      examples:
      - objectType: albumMaster
        albumMasterID: GMGZZX5000001AB
        albumMasterName: Abbey Road
        artist:
          artistID: GMGZZX80000006S
          artistName: The Beatles
        descriptors:
          genres:
          - hierarchy:
            - level: 1
              descriptorID: ''
              label: Rock
            - level: 2
              descriptorID: ''
              label: AOR Classic Rock
            - level: 3
              descriptorID: ''
              label: AOR Classic Rock
            - level: 4
              descriptorID: '2804'
              label: Classic Rock
            type: genres
            weight: 50
        preferredEditionID: GMGZZX400000GF2
        languageContext:
          language: English
          script: Latin
        releaseType: mainCanon
        releaseYear: 1969
        allAlbumEditions:
        - albumEditionID: GMGZZX400000GF2
          albumEditionName: Abbey Road [Remastered]
          isSelectedAlbumEdition: true
        - albumEditionID: GMGZZX400000GF3
          albumEditionName: Abbey Road [Super Deluxe]
          isSelectedAlbumEdition: false
        externalIDs:
        - source: spotify-album-id
          ID: 0ETFjACtuP2ADo6LFhL6HN
        images:
        - imageType: coverArt
          imageID: 97D84DCF10F11D1B
          assets:
          - size: XLARGE
            width: 1080
            height: 1080
            url: https://akamai-b.cdn.cddbp.net/cds/2.0/cover/97D8/4DCF/10F1/1D1B_xlarge_front.jpg
        videoMusicReleaseType: null
        submittedArtistID: GMGZZX80000006S
    ResponseMeta:
      title: meta object
      type: object
      additionalProperties: false
      nullable: false
      properties:
        total:
          type: integer
          nullable: false
          description: Total data objects for the query criteria
        count:
          type: integer
          nullable: false
          description: Count of objects in the returned result set
        offset:
          type: integer
          nullable: false
          description: Current offset for result set
        references:
          type: object
          additionalProperties: false
          properties:
            genreList:
              type: string
              description: Hierarchical Genre List used for response.
            displayLanguage:
              type: string
              description: Display language used for descriptor strings.
      required:
      - total
      - count
      - offset
      examples:
      - total: 1
        count: 1
        offset: 0
        references:
          genreList: GENRES-US-DETAILED
          displayLanguage: en
    Image:
      title: image
      type: object
      additionalProperties: false
      properties:
        imageType:
          type: string
          description: 'Image type identifier. Classic artist images: artistImage-promotional, artistImage-inPerformance, artistImage-redCarpet, artistImage-other. Enhanced artist images: artistImage-headshot, artistImage-iconic, artistImage-backdrop. Album images: coverArt.'
          enum:
          - artistImage-promotional
          - artistImage-inPerformance
          - artistImage-redCarpet
          - artistImage-other
          - artistImage-headshot
          - artistImage-iconic
          - artistImage-backdrop
          - coverArt
        imageID:
          type: string
          nullable: false
        preferred:
          type: string
          description: 'Indicates if this is a preferred image. Only present for classic artist images. Values: ''true'' or ''false''.'
          enum:
          - 'true'
          - 'false'
        assets:
          type: array
          nullable: false
          items:
            $ref: '#/components/schemas/Asset'
      required:
      - imageType
      - imageID
      - assets
    Asset:
      title: image asset
      type: object
      additionalProperties: false
      properties:
        size:
          type: string
          nullable: false
        height:
          type: integer
          nullable: false
        width:
          type: integer
          nullable: false
        url:
          type: string
          pattern: ^https://
      required:
      - size
      - height
      - width
      - url
    LanguageContext:
      type:
      - object
      - 'null'
      additionalProperties: false
      properties:
        language:
          type:
          - string
          - 'null'
        script:
          type:
          - string
          - 'null'
      required:
      - language
      - script
    DescriptorObject:
      nullable: false
      title: descriptor object
      type: array
      items:
        type: object
        additionalProperties: false
        properties:
          type:
            type: string
            enum:
            - artistTypes
            - eras
            - genres
            - languages
            - moods
            - origins
            - styles
            - tempos
          weight:
            type: integer
          hierarchy:
            nullable: false
            type: array
            items:
              type: object
              additionalProperties: false
              properties:
                label:
                  nullable: false
                  type: string
                descriptorID:
                  nullable: false
                  type: string
                level:
                  type: integer
        required:
        - type
        - weight
        - hierarchy
    ErrorResponse:
      title: error response
      type: object
      additionalProperties: false
      nullable: false
      properties:
        status:
          type: integer
          nullable: false
        error:
          type: string
          nullable: false
          enum:
          - page_not_found
          - resource_not_found
          - invalid_query_parameter_key
          - invalid_query_parameter_value
          - missing_query_parameter_key
          - resource_type_error
          - internal_server_error
          - unauthorized_invalid_api_key
          - unauthorized_missing_api_key
          - missing_api_key
          - rate_limit_exceeded
          - missing_entitlement
        description:
          type: string
          nullable: false
      required:
      - status
      - error
      - description
    AlbumMasterEditionItem:
      title: album master edition item
      nullable: false
      type: object
      additionalProperties: false
      description: Short reference to one edition inside an Album Master.
      properties:
        albumEditionID:
          nullable: false
          type: string
          description: Gracenote Album Edition ID.
        albumEditionName:
          nullable: false
          type: string
          description: Display name (e.g. "Abbey Road [Remastered]").
        isSelectedAlbumEdition:
          nullable: false
          type: boolean
          description: '`true` for the one edition Gracenote picked as the default.

            Only one item per master will be `true`.

            '
      required:
      - albumEditionID
      - albumEditionName
      - isSelectedAlbumEdition
  responses:
    ErrorResponse400:
      description: Bad Request. The HTTP response code will be 400 if the caller is using the API in an unsupported way.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            default:
              value:
                status: 400
                error: invalid_query_parameter_value
                description: 'Data Type Error: includeAllEditions must be of type boolean.'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      description: API key provided during registration
      name: GN-APIKEY