7digital Sales API

Log sales, log refunds, and manage a user's locker of purchased content.

Documentation

Specifications

Code Examples

Schemas & Data

Other Resources

OpenAPI Specification

7digital-sales-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: 7digital Artists Sales API
  description: The classic 7digital REST API (v1.2) provides access to the 7digital music catalogue (artists, releases, tracks, tags), user lockers, basket/checkout, payment, editorial, territories and IP-lookup. All operations are signed with OAuth 1.0 and scoped by a consumer key issued under a commercial agreement.
  version: '1.2'
  contact:
    name: 7digital / MassiveMusic Client Success
    url: https://docs.massivemusic.com/docs/support
  license:
    name: Commercial — 7digital / MassiveMusic
    url: https://docs.massivemusic.com/docs/sla
  x-last-validated: '2026-05-28'
  x-generated-from: documentation
  x-source-url: https://github.com/7digital/7digital-api/blob/master/assets/7digital-api-schema.json
servers:
- url: https://api.7digital.com/1.2
  description: 7digital Public API v1.2 (production)
security:
- oauth1: []
tags:
- name: Sales
  description: Log sales, log refunds, and manage a user's locker of purchased content.
paths:
  /users/{userId}/locker:
    get:
      operationId: getUserLocker
      summary: 7digital Get User Locker
      description: Get a paged list of releases and tracks in a user's locker.
      tags:
      - Sales
      security:
      - oauth1_three_legged: []
      parameters:
      - $ref: '#/components/parameters/UserIdPath'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: The user's locker.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Locker'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sales/credit-item:
    post:
      operationId: creditSalesItem
      summary: 7digital Credit Sales Item
      description: Log a sale of a track or release for the specified user and add it to their locker. Currency must match the one provided for the content (typically USD). Returns XML responses only.
      tags:
      - Sales
      security:
      - oauth1_three_legged: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreditItemRequest'
      responses:
        '200':
          description: Sale logged.
          content:
            application/xml: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sales/refund/release:
    post:
      operationId: reportReleaseRefund
      summary: 7digital Report Release Refund
      description: Remove a purchase of a release from the sales report when the purchase has been refunded.
      tags:
      - Sales
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequest'
      responses:
        '200':
          description: Refund reported.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sales/refund/track:
    post:
      operationId: reportTrackRefund
      summary: 7digital Report Track Refund
      description: Remove a purchase of a track from the sales report when the purchase has been refunded.
      tags:
      - Sales
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequest'
      responses:
        '200':
          description: Refund reported.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    UserIdPath:
      name: userId
      in: path
      required: true
      description: Partner-scoped 7digital user id.
      schema:
        type: string
      example: '500123'
    Page:
      name: page
      in: query
      description: 1-based page number.
      schema:
        type: integer
        minimum: 1
        default: 1
      example: 1
    PageSize:
      name: pageSize
      in: query
      description: Number of items per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
      example: 20
  schemas:
    Locker:
      type: object
      properties:
        status:
          type: string
          example: ok
        page:
          type: integer
          example: 1
        pageSize:
          type: integer
          example: 20
        totalItems:
          type: integer
          example: 42
        releases:
          type: array
          items:
            $ref: '#/components/schemas/Release'
        tracks:
          type: array
          items:
            $ref: '#/components/schemas/Track'
    RefundRequest:
      type: object
      properties:
        userId:
          type: string
          example: '500123'
        purchaseId:
          type: string
          example: purchase-789012
        reason:
          type: string
          example: Customer request
      required:
      - userId
      - purchaseId
    CreditItemRequest:
      type: object
      properties:
        userId:
          type: string
          example: '500123'
        releaseId:
          type: string
          example: '11700062'
        trackId:
          type: string
          example: '123456'
        currency:
          type: string
          description: ISO 4217 currency code matching the supplied wholesale price.
          example: USD
        price:
          type: number
          description: Retail price charged to the user.
          example: 9.99
      required:
      - userId
      - currency
      - price
    Track:
      type: object
      properties:
        id:
          type: string
          example: '123456'
        title:
          type: string
          example: Come Together
        version:
          type: string
          example: Remastered 2019
        artist:
          $ref: '#/components/schemas/Artist'
        release:
          $ref: '#/components/schemas/Release'
        trackNumber:
          type: integer
          example: 1
        duration:
          type: integer
          description: Duration in seconds.
          example: 259
        explicit:
          type: boolean
          example: false
        isrc:
          type: string
          example: GBAYE6900477
        previewUrl:
          type: string
          format: uri
          example: https://previews.7digital.com/clip/123456
    Artist:
      type: object
      properties:
        id:
          type: string
          example: '12345'
        name:
          type: string
          example: The Beatles
        url:
          type: string
          format: uri
          example: https://uk.7digital.com/artist/the-beatles
        image:
          type: string
          format: uri
          example: https://artwork-cdn.7static.com/static/img/artistimages/00/000/012/0000001234_350.jpg
        sortName:
          type: string
          example: Beatles, The
    Release:
      type: object
      properties:
        id:
          type: string
          example: '11700062'
        title:
          type: string
          example: Abbey Road
        type:
          type: string
          enum:
          - album
          - single
          - ep
          - compilation
          example: album
        artist:
          $ref: '#/components/schemas/Artist'
        url:
          type: string
          format: uri
          example: https://uk.7digital.com/artist/the-beatles/release/abbey-road-11700062
        image:
          type: string
          format: uri
          example: https://artwork-cdn.7static.com/static/img/sleeveart/00/117/000/0011700062_350.jpg
        releaseDate:
          type: string
          format: date
          example: '1969-09-26'
        label:
          type: string
          example: Apple Records
        upc:
          type: string
          example: 00602445912025
        explicit:
          type: boolean
          example: false
  securitySchemes:
    oauth1:
      type: apiKey
      in: query
      name: oauth_consumer_key
      description: 7digital uses OAuth 1.0 signing. Every request MUST include `oauth_consumer_key` as either a query parameter or in the Authorization header. Sensitive operations require a 2-legged or 3-legged signature with a user access token.
    oauth1_two_legged:
      type: apiKey
      in: query
      name: oauth_consumer_key
      description: 2-legged OAuth 1.0 (partner-scoped — consumer key + secret only).
    oauth1_three_legged:
      type: apiKey
      in: query
      name: oauth_consumer_key
      description: 3-legged OAuth 1.0 (consumer key + secret plus a user access token + secret).