Mubert Public Service API

Public Service

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

mubert-public-service-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Mubert AI Music API v3 Price Public Service API
  description: 'Mubert AI Music API for B2B integrations. Generate music tracks, manage streaming, and control customer accounts.


    ### AI-optimized documentation


    - [llms.txt](https://music-api.mubert.com/swagger-doc/llms.txt) — short endpoint index for AI agents

    - [llms-full.txt](https://music-api.mubert.com/swagger-doc/llms-full.txt) — full reference with parameters and models'
  contact:
    name: Mubert Team
    url: https://mubert.com/api
  version: '3.0'
  license:
    name: Proprietary
    url: https://mubert.com/legal/terms-of-use
servers:
- url: https://music-api.mubert.com
  description: Mubert API v3 production
security:
- customerId: []
  accessToken: []
tags:
- name: Public Service
  description: Public Service
paths:
  /api/v3/service/customers/{customer}:
    get:
      tags:
      - Public Service
      summary: Retrieve Customer Details by ID
      description: Fetches the details of a specific customer using their unique identifier
      operationId: 3f3c9331843cdbb37fe0cd84be9c60a9
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/CustomerPathParameter'
      responses:
        '200':
          description: Successful response with customer details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerServiceResource'
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '404':
          description: Not Found - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
    put:
      tags:
      - Public Service
      summary: Update an Existing Customer
      description: Handles the update of an existing customer identified by their UUID
      operationId: 5a4bb87b544bbb5768a0d55ea7c9e07e
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/CustomerPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/CustomerUpdateServiceRequest'
      responses:
        '200':
          description: Customer updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerServiceResource'
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '404':
          description: Not Found - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
    delete:
      tags:
      - Public Service
      summary: Delete Customer
      description: Remove a customer account by their unique identifier. This action is irreversible.
      operationId: 6536b720df357569e7700ab38f9fbf2c
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/CustomerPathParameter'
      requestBody:
        $ref: '#/components/requestBodies/CustomerDeleteServiceRequest'
      responses:
        '204':
          description: Customer successfully deleted
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '404':
          description: Not Found - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
  /api/v3/service/customers:
    get:
      tags:
      - Public Service
      summary: Retrieve a List of Customers
      description: Fetches a list of customers with optional pagination
      operationId: 947ce188ae874a0ad15607002be8690e
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/OffsetQueryParameter'
      - $ref: '#/components/parameters/LimitQueryParameter'
      responses:
        '200':
          description: Successful response with a list of customers
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CustomerServiceResource'
                  meta:
                    $ref: '#/components/schemas/MetadataPagination'
                type: object
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
    post:
      tags:
      - Public Service
      summary: Create a New Customer
      description: Create a new customer account. Requires a unique custom_id (alphanumeric, max 255 chars). Returns customer_id and access_token for public API authentication.
      operationId: 41ea108d9e1af9e4c28bf00b1ed23484
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      requestBody:
        $ref: '#/components/requestBodies/CustomerStoreServiceRequest'
      responses:
        '200':
          description: Customer created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerServiceResource'
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
  /api/v3/service/customers/custom-id/{customId}:
    get:
      tags:
      - Public Service
      summary: Retrieve Customer by Custom ID
      description: Fetches the details of a customer based on their custom ID
      operationId: ce21a3ff6d75aedcaa52ac9485c43e1f
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/CustomerCustomIdPathParameter'
      responses:
        '200':
          description: Successful response with customer details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerServiceResource'
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '404':
          description: Not Found - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
  /api/v3/service/licenses:
    get:
      tags:
      - Public Service
      summary: Retrieve a List of Licenses
      description: Retrieve a paginated list of all licenses for the company, including features, bitrates, formats, modes, and limits.
      operationId: 74f3ce4bd5141dec313ebf290e729f7a
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/OffsetQueryParameter'
      - $ref: '#/components/parameters/LimitQueryParameter'
      responses:
        '200':
          description: Successful response with a list of licenses
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/LicenseServiceResource'
                  meta:
                    $ref: '#/components/schemas/MetadataPagination'
                type: object
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
  /api/v3/service/licenses/{license}:
    get:
      tags:
      - Public Service
      summary: Retrieve Details of a Specific License
      description: Retrieve details for a specific license including type, status, webhook configuration, track expiration time, feature access, and comprehensive limits.
      operationId: b78054f0257ca938252edab2f4d62d60
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/LicensePathParameter'
      responses:
        '200':
          description: Successful response with license details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseServiceResource'
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
        '404':
          description: Not Found - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404Response'
        '422':
          description: Unprocessable Content
      security:
      - companyId: []
        licenseToken: []
    put:
      tags:
      - Public Service
      summary: Update License
      description: Update license parameters such as webhook URL and webhook enabled state. Webhooks receive track models when generation completes.
      operationId: bd5f80b6d1faa95068a15a662f87ec54
      parameters:
      - $ref: '#/components/parameters/company-id'
      - $ref: '#/components/parameters/license-token'
      - $ref: '#/components/parameters/LicensePathParameter'
      requestBody:
        $ref: '#/components/requestBodies/LicenseUpdateServiceRequest'
      responses:
        '200':
          description: License updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseServiceResource'
        '422':
          description: Unprocessable Content
        '401':
          description: Unauthenticated - the user is not authenticated to access this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedException'
        '403':
          description: Forbidden - Different reasons specified in the error content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403Response'
      security:
      - companyId: []
        licenseToken: []
components:
  schemas:
    LicenseServiceResource:
      properties:
        id:
          description: License ID
          type: string
          format: uuid
        company_id:
          description: Company ID associated with the license
          type: string
          format: uuid
        type:
          description: License type
          type: string
        status:
          description: License status
          type: string
        webhook_url:
          description: Webhook URL for the company
          type: string
          nullable: true
        webhook_enabled:
          description: Whether the webhook is enabled for the company
          type: boolean
        track_expiration_time:
          description: Time after which generated tracks expire
          type: integer
        allow_all_features:
          description: Allow all features flag
          type: boolean
        features:
          description: Available features for the license
          type: array
          items:
            $ref: '#/components/schemas/FeatureEnum'
        allow_all_bitrates:
          description: Allow all bitrates flag
          type: boolean
        default_bitrate:
          description: Default bitrate
          type: integer
        bitrates:
          description: Available bitrates
          type: array
          items:
            $ref: '#/components/schemas/TrackBitrateEnum'
        allow_all_intensities:
          description: Allow all intensities flag
          type: boolean
        default_intensity:
          description: Default intensity
          type: string
        intensities:
          description: Available intensities
          type: array
          items:
            $ref: '#/components/schemas/TrackIntensityEnum'
        allow_all_formats:
          description: Allow all formats flag
          type: boolean
        default_format:
          description: Default track format
          type: string
        track_formats:
          description: Available formats for tracks
          type: array
          items:
            $ref: '#/components/schemas/TrackFormatEnum'
        allow_all_modes:
          description: Allow all modes flag
          type: boolean
        default_mode:
          description: Default track mode
          type: string
        track_modes:
          description: Available modes for tracks
          type: array
          items:
            $ref: '#/components/schemas/TrackModeEnum'
        expired_at:
          description: License expiration date
          type: string
          format: date-time
        license_limits:
          oneOf:
          - $ref: '#/components/schemas/LicenseLimitServiceResource'
          nullable: true
          description: Associated License Limit
          type: object
      type: object
    LicenseLimitServiceResource:
      properties:
        id:
          description: License Limit ID
          type: string
          format: uuid
        license_id:
          description: Associated License ID
          type: string
          format: uuid
        max_track_duration:
          description: Max track duration
          type: integer
        max_concurrent_track_generations:
          description: Max concurrent track generations allowed
          type: integer
        total_tracks_count:
          description: Total number of tracks generated
          type: integer
        total_tracks_count_limit:
          description: Limit on total number of tracks that can be generated
          type: integer
        total_tracks_duration:
          description: Total duration of generated tracks (in seconds)
          type: integer
        total_tracks_duration_limit:
          description: Limit on the total duration of tracks (in seconds)
          type: integer
        monthly_tracks_count:
          description: Tracks generated this month
          type: integer
        monthly_tracks_count_limit:
          description: Limit on tracks that can be generated monthly
          type: integer
        monthly_tracks_duration:
          description: Total duration of tracks generated this month (in seconds)
          type: integer
        monthly_tracks_duration_limit:
          description: Limit on the total track duration per month (in seconds)
          type: integer
        daily_tracks_count:
          description: Tracks generated today
          type: integer
        daily_tracks_count_limit:
          description: Limit on tracks that can be generated daily
          type: integer
        daily_tracks_duration:
          description: Total duration of tracks generated today (in seconds)
          type: integer
        daily_tracks_duration_limit:
          description: Limit on the total track duration per day (in seconds)
          type: integer
        total_streaming_duration:
          description: Total streaming duration (in seconds)
          type: integer
        total_streaming_duration_limit:
          description: Limit on total streaming duration (in seconds)
          type: integer
        monthly_streaming_duration:
          description: Streaming duration this month (in seconds)
          type: integer
        monthly_streaming_duration_limit:
          description: Limit on monthly streaming duration (in seconds)
          type: integer
        daily_streaming_duration:
          description: Streaming duration today (in seconds)
          type: integer
        daily_streaming_duration_limit:
          description: Limit on daily streaming duration (in seconds)
          type: integer
        customers_count:
          description: Number of customers utilizing this license limit
          type: integer
        customers_count_limit:
          description: Maximum number of customers allowed
          type: integer
        customer_max_concurrent_track_generations:
          description: Max concurrent track generations per customer
          type: integer
        customer_total_tracks_count_limit:
          description: Limit on total number of tracks per customer
          type: integer
        customer_total_tracks_duration_limit:
          description: Limit on total track duration per customer (in seconds)
          type: integer
        customer_monthly_tracks_count_limit:
          description: Monthly track count limit per customer
          type: integer
        customer_monthly_tracks_duration_limit:
          description: Monthly track duration limit per customer (in seconds)
          type: integer
        customer_daily_tracks_count_limit:
          description: Daily track count limit per customer
          type: integer
        customer_daily_tracks_duration_limit:
          description: Daily track duration limit per customer (in seconds)
          type: integer
        customer_total_streaming_duration_limit:
          description: Limit on total streaming duration per customer (in seconds)
          type: integer
        customer_monthly_streaming_duration_limit:
          description: Limit on monthly streaming duration per customer (in seconds)
          type: integer
        customer_daily_streaming_duration_limit:
          description: Limit on daily streaming duration per customer (in seconds)
          type: integer
        daily_reset_at:
          description: Last reset of daily limit
          type: string
          format: date-time
          nullable: true
        monthly_reset_at:
          description: Last reset of monthly limit
          type: string
          format: date-time
          nullable: true
      type: object
    Error403Response:
      description: Response for forbidden access errors
      properties:
        code:
          description: Type of the error
          type: string
        message:
          type: string
          example: Forbidden action
        description:
          type: string
          nullable: true
      type: object
      discriminator:
        propertyName: code
        mapping:
          LicenseExpired: '#/components/schemas/LicenseExpiredException'
          AccessTokenExpired: '#/components/schemas/AccessTokenExpiredException'
          Forbidden: '#/components/schemas/ForbiddenException'
          CompanyIsNotActive: '#/components/schemas/CompanyIsNotActiveException'
          CustomerIsNotActive: '#/components/schemas/CompanyIsNotActiveException'
          LicenseForbiddenBitrate: '#/components/schemas/LicenseForbiddenBitrate'
          LicenseForbiddenDuration: '#/components/schemas/LicenseForbiddenDuration'
          LicenseForbiddenFeature: '#/components/schemas/LicenseForbiddenFeature'
          LicenseForbiddenFormat: '#/components/schemas/LicenseForbiddenFormat'
          LicenseForbiddenIntensity: '#/components/schemas/LicenseForbiddenIntensity'
          LicenseForbiddenMode: '#/components/schemas/LicenseForbiddenMode'
          LicenseIsNotActive: '#/components/schemas/LicenseIsNotActive'
          LicenseLimitConcurrentTrackGenerationsCount: '#/components/schemas/LicenseLimitConcurrentTrackGenerationsCount'
          LicenseLimitTracksCount: '#/components/schemas/LicenseLimitTracksCount'
          LicenseLimitTracksDuration: '#/components/schemas/LicenseLimitTracksDuration'
          LicenseLimitUsersCount: '#/components/schemas/LicenseLimitUsersCount'
          UserNotFound: '#/components/schemas/UserNotFound'
    Error404Response:
      description: Response for not found errors
      properties:
        code:
          description: Type of the error
          type: string
          example: CompanyNotFound
        message:
          type: string
          example: Resource not found
        description:
          type: string
          nullable: true
      type: object
      discriminator:
        propertyName: code
        mapping:
          CustomerNotFound: '#/components/schemas/CustomerNotFound'
          CompanyNotFound: '#/components/schemas/CompanyNotFound'
          LicenseNotFound: '#/components/schemas/LicenseNotFound'
          TrackNotFound: '#/components/schemas/TrackNotFound'
    TrackFormatEnum:
      description: Enumeration representing different track formats.
      type: string
      enum:
      - mp3
      - wav
      example: mp3
    TrackModeEnum:
      description: Enumeration representing different modes of a track.
      type: string
      enum:
      - track
      - jingle
      - loop
      - mix
      example: loop
    TrackBitrateEnum:
      description: Enumeration representing different track bitrates.
      type: integer
      enum:
      - 32
      - 96
      - 128
      - 192
      - 256
      - 320
      example: 320
    FeatureEnum:
      description: Features
      type: string
      enum:
      - track
      - ttm
      - itm
      - streaming
      - music-library
    UnauthenticatedException:
      description: Response indicating that the user is not authenticated to access the resource.
      properties:
        message:
          type: string
          example: Unauthenticated
        description:
          type: string
          example: Reason for authentication failure
          nullable: true
        code:
          type: string
          example: Unauthenticated
      type: object
    TrackIntensityEnum:
      description: Enumeration representing different intensity levels of a track.
      type: string
      enum:
      - low
      - medium
      - high
      example: medium
    CustomerServiceResource:
      properties:
        id:
          description: Customer ID
          type: string
          format: uuid
        company_id:
          description: Associated company ID
          type: string
          format: uuid
        custom_id:
          description: Custom identifier for the customer
          type: string
        status:
          description: Customer status
          type: string
      type: object
    MetadataPagination:
      description: Pagination metadata
      properties:
        total:
          type: integer
          example: 1000
        limit:
          type: integer
          example: 100
        offset:
          type: integer
          example: 0
      type: object
  parameters:
    license-token:
      name: license-token
      in: header
      description: License Token
      required: true
      schema:
        type: string
    CustomerPathParameter:
      name: customer
      in: path
      description: The unique identifier of the customer.
      required: true
      schema:
        type: string
        format: uuid
        example: 123e4567-e89b-12d3-a456-426614174000
    LicensePathParameter:
      name: license
      in: path
      description: The unique identifier of the license.
      required: true
      schema:
        type: string
        format: uuid
        example: 123e4567-e89b-12d3-a456-426614174000
    company-id:
      name: company-id
      in: header
      description: Company Id
      required: true
      schema:
        type: string
    OffsetQueryParameter:
      name: offset
      in: query
      description: The number of items to skip before starting to collect the result set.
      required: false
      schema:
        type: integer
        minimum: 0
        example: 0
    LimitQueryParameter:
      name: limit
      in: query
      description: The number of items to return in the result set.
      required: false
      schema:
        type: integer
        minimum: 1
        example: 25
    CustomerCustomIdPathParameter:
      name: customId
      in: path
      description: The unique identifier of the customer.
      required: true
      schema:
        type: string
        format: uuid
        example: 123e4567-e89b-12d3-a456-426614174000
  requestBodies:
    CustomerStoreServiceRequest:
      description: Request to create a new customer with a custom ID and optional webhook settings.
      required: true
      content:
        application/json:
          schema:
            required:
            - custom_id
            properties:
              custom_id:
                description: A unique identifier for the customer.
                type: string
                maxLength: 255
                minLength: 1
                example: customer123
            type: object
    CustomerUpdateServiceRequest:
      description: Request to update an existing customer with updated custom ID and webhook settings.
      required: true
      content:
        application/json:
          schema:
            required:
            - custom_id
            properties:
              custom_id:
                description: A unique identifier for the customer.
                type: string
                maxLength: 255
                minLength: 1
                example: customer456
            type: object
    LicenseUpdateServiceRequest:
      description: Request to update an existing license.
      required: true
      content:
        application/json:
          schema:
            properties:
              webhook_url:
                description: The URL for the webhook.
                type: string
                maxLength: 255
                example: https://example.com/webhook
                nullable: true
              webhook_enabled:
                description: A flag indicating whether the webhook is enabled.
                type: boolean
                example: true
            type: object
    CustomerDeleteServiceRequest:
      description: Request to delete a customer by the customer service. Authorization is required, and the customer's company ID must match the authenticated service company.
      required: false
      content:
        application/json:
          schema:
            properties: {}
            type: object
  securitySchemes:
    customerId:
      type: apiKey
      in: header
      name: customer-id
      description: Mubert customer identifier (public endpoints).
    accessToken:
      type: apiKey
      in: header
      name: access-token
      description: Mubert customer access token (public endpoints).
    companyId:
      type: apiKey
      in: header
      name: company-id
      description: Mubert company identifier (service endpoints).
    licenseToken:
      type: apiKey
      in: header
      name: license-token
      description: Mubert license token (service endpoints).
externalDocs:
  url: https://music-api.mubert.com/api/v3/swagger
  description: Mubert AI Music API v3 Swagger UI