Warner Music Group Licensing API

The Warner Music Group Licensing API enables content creators and developers to request synchronization licenses, mechanical licenses, and other music rights for WMG's catalog of recordings and compositions. The API covers tracks from Warner Records, Atlantic Records, Elektra, and Warner Chappell Music publishing.

OpenAPI Specification

warner-music-group-licensing-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Warner Music Group Licensing API
  description: >-
    The Warner Music Group Licensing API enables content creators and developers
    to search the WMG catalog, request synchronization licenses, mechanical
    licenses, and digital licenses for music recordings and compositions from
    Warner Records, Atlantic Records, Elektra Records, and Warner Chappell Music.
    The API covers all major use cases including film/TV sync, advertising,
    digital services, and live performance.
  version: 1.0.0
  contact:
    name: WMG Licensing Support
    url: https://www.wmgmusiclicensing.com/
    email: [email protected]
  termsOfService: https://www.wmg.com/terms
servers:
  - url: https://api.wmg.com
    description: WMG API Production
tags:
  - name: Catalog
    description: Music catalog search and discovery
  - name: Licenses
    description: License request and management
  - name: Tracks
    description: Track and recording details
  - name: Artists
    description: Artist information
paths:
  /v1/catalog/search:
    get:
      operationId: searchCatalog
      summary: Search Music Catalog
      description: >-
        Search the WMG music catalog for recordings and compositions.
        Supports searching by artist name, track title, ISRC, ISWC, or
        keyword.
      tags:
        - Catalog
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
          description: Search query (artist name, track title, or keyword)
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum:
              - recording
              - composition
              - both
            default: both
          description: Type of music asset to search
        - name: label
          in: query
          required: false
          schema:
            type: string
          description: Filter by record label
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 20
            maximum: 100
          description: Maximum results to return
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: Pagination offset
      responses:
        '200':
          description: Search results returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogSearchResponse'
        '400':
          description: Invalid search parameters
        '401':
          description: Unauthorized
  /v1/tracks/{isrc}:
    get:
      operationId: getTrack
      summary: Get Track by ISRC
      description: >-
        Retrieve full details of a recording by its International Standard
        Recording Code (ISRC).
      tags:
        - Tracks
      parameters:
        - name: isrc
          in: path
          required: true
          schema:
            type: string
          description: International Standard Recording Code (ISRC)
      responses:
        '200':
          description: Track details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackResponse'
        '401':
          description: Unauthorized
        '404':
          description: Track not found
  /v1/artists/{artistId}:
    get:
      operationId: getArtist
      summary: Get Artist
      description: Retrieve artist profile and catalog information.
      tags:
        - Artists
      parameters:
        - name: artistId
          in: path
          required: true
          schema:
            type: string
          description: WMG artist identifier
      responses:
        '200':
          description: Artist information returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtistResponse'
        '401':
          description: Unauthorized
        '404':
          description: Artist not found
  /v1/licenses:
    get:
      operationId: listLicenses
      summary: List Licenses
      description: List all license requests submitted by the authenticated partner.
      tags:
        - Licenses
      parameters:
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - approved
              - rejected
              - expired
          description: Filter by license status
        - name: licenseType
          in: query
          required: false
          schema:
            type: string
            enum:
              - sync
              - mechanical
              - digital
              - performance
          description: Filter by license type
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 20
          description: Maximum results to return
      responses:
        '200':
          description: License list returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseListResponse'
        '401':
          description: Unauthorized
    post:
      operationId: requestLicense
      summary: Request License
      description: >-
        Submit a new license request for a WMG recording or composition.
        Specify the use case (sync, mechanical, digital, performance) and
        usage details.
      tags:
        - Licenses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseRequest'
      responses:
        '201':
          description: License request submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponse'
        '400':
          description: Invalid request
        '401':
          description: Unauthorized
  /v1/licenses/{licenseId}:
    get:
      operationId: getLicense
      summary: Get License
      description: Retrieve the details and status of a specific license request.
      tags:
        - Licenses
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
          description: License request identifier
      responses:
        '200':
          description: License details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponse'
        '401':
          description: Unauthorized
        '404':
          description: License not found
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 for WMG partner authentication
      flows:
        authorizationCode:
          authorizationUrl: https://auth.wmg.com/oauth/authorize
          tokenUrl: https://auth.wmg.com/oauth/token
          scopes:
            catalog:read: Read catalog information
            licenses:read: Read license requests
            licenses:write: Submit license requests
  schemas:
    Track:
      type: object
      properties:
        isrc:
          type: string
          description: International Standard Recording Code
        title:
          type: string
          description: Track title
        artistName:
          type: string
          description: Primary artist name
        artistId:
          type: string
          description: WMG artist identifier
        albumTitle:
          type: string
          description: Album or release title
        releaseDate:
          type: string
          format: date
          description: Original release date
        duration:
          type: integer
          description: Track duration in seconds
        label:
          type: string
          description: Record label name
        genre:
          type: string
          description: Music genre
        explicit:
          type: boolean
          description: Whether the track contains explicit content
        licenseAvailable:
          type: boolean
          description: Whether this track is available for licensing
    TrackResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Track'
    Artist:
      type: object
      properties:
        id:
          type: string
          description: WMG artist identifier
        name:
          type: string
          description: Artist name
        label:
          type: string
          description: Signed record label
        genres:
          type: array
          items:
            type: string
          description: Music genres associated with the artist
        trackCount:
          type: integer
          description: Number of tracks in the WMG catalog
        website:
          type: string
          format: uri
          description: Official artist website
    ArtistResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Artist'
    CatalogSearchResult:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - recording
            - composition
        title:
          type: string
        artistName:
          type: string
        isrc:
          type: string
          description: ISRC code (for recordings)
        iswc:
          type: string
          description: ISWC code (for compositions)
        label:
          type: string
        releaseDate:
          type: string
          format: date
        licenseAvailable:
          type: boolean
    CatalogSearchResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CatalogSearchResult'
        total:
          type: integer
          description: Total matching results
        limit:
          type: integer
        offset:
          type: integer
    License:
      type: object
      properties:
        id:
          type: string
          description: License request identifier
        status:
          type: string
          enum:
            - pending
            - approved
            - rejected
            - expired
        licenseType:
          type: string
          enum:
            - sync
            - mechanical
            - digital
            - performance
        trackIsrc:
          type: string
          description: ISRC of the licensed recording
        trackTitle:
          type: string
          description: Licensed track title
        artistName:
          type: string
        useCase:
          type: string
          description: Intended use case (film, TV, advertising, etc.)
        territory:
          type: string
          description: License territory (ISO 3166 country code or WORLD)
        startDate:
          type: string
          format: date
          description: License start date
        endDate:
          type: string
          format: date
          description: License end date
        fee:
          type: number
          description: License fee in USD
        submittedAt:
          type: string
          format: date-time
    LicenseListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/License'
        total:
          type: integer
    LicenseResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/License'
    LicenseRequest:
      type: object
      required:
        - trackIsrc
        - licenseType
        - useCase
        - territory
        - startDate
        - endDate
      properties:
        trackIsrc:
          type: string
          description: ISRC of the recording to license
        licenseType:
          type: string
          enum:
            - sync
            - mechanical
            - digital
            - performance
          description: Type of license requested
        useCase:
          type: string
          description: Description of intended use (e.g., "TV commercial", "streaming film")
        territory:
          type: string
          description: License territory (ISO 3166 country code or WORLD)
        startDate:
          type: string
          format: date
          description: Requested license start date
        endDate:
          type: string
          format: date
          description: Requested license end date
        exclusivity:
          type: boolean
          default: false
          description: Whether exclusive rights are requested
        notes:
          type: string
          description: Additional notes or context for the license request
security:
  - OAuth2:
      - catalog:read