Epidemic Sound Assets API

These endpoints allows your application to upload assets such as images or audio.

OpenAPI Specification

epidemic-sound-assets-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Partner Content Assets API
  version: 0.1.17
  description: These endpoints allows your application to upload assets such as images or audio.
servers:
- url: https://partner-content-api.epidemicsound.com
  description: Epidemic Sound Content API
tags:
- name: Assets
  description: These endpoints allows your application to upload assets such as images or audio.
paths:
  /v0/uploads/audio/{checksum}:
    get:
      tags:
      - Assets
      summary: Get audio by checksum
      description: Will return the audio id of an audio file uploaded by the partner, matched by checksum. Should be used to avoid duplicate uploads
      operationId: GET_Partner_Audio_By_Checksum
      parameters:
      - $ref: '#/components/parameters/checksum'
      responses:
        '200':
          description: Partner audio response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerAudioResponse'
              example:
                audioUploadId: d99319b0-5b28-445a-a337-baa82df25394
                length: 10.0
                expires: '2026-06-10T07:45:47.611686848Z'
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
        '404':
          description: Audio file was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Audio was not found
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
      - PartnerAuth: []
  /v0/uploads/audio/{audioIdOrChecksum}:
    delete:
      tags:
      - Assets
      summary: Delete audio
      description: Use the delete audio endpoint to delete an audio file.
      operationId: DELETE_Partner_audio
      parameters:
      - $ref: '#/components/parameters/audioIdOrChecksum'
      responses:
        '200':
          description: List of deleted audio ids
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerAudioDeleteResponse'
              example:
                audioFilesRemoved:
                - a9acf7c6-5d1f-4e9c-8f74-14390c3f3bbe
        '202':
          description: List of audio files marked for deletion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerAudioDeleteResponse'
              example:
                audioFilesRemoved:
                - 7e1745a6-5ac9-4716-a362-7f9e430c4df8
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
      security:
      - PartnerAuth: []
      - ApiKeyAuth: []
  /v0/uploads/audio:
    post:
      tags:
      - Assets
      summary: Upload audio
      description: "Upload an audio file to get recommendations of similar tracks in the Epidemic Sound library. When you post the audio file to this endpoint, you will receive an AudioID in return. Use this AudioID in a request to the similar tracks endpoint to get track recommendations.\n \n We currently support the formats: mp3, mpeg, ogg and vorbis. Maximum file size is 3.5MB. You can only upload music with the partner token, since we currently do not allow end users to use this feature."
      operationId: POST_Upload_Partner_Audio
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: Returns the id of the uploaded audio, as well as the expiration date for the audio.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadUserImageResponse'
              example:
                imageId: 2f0f5883-5b03-4663-a703-9142a531443d
                expirationDate: '2026-05-12T07:45:47.615665317Z'
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
      security:
      - PartnerAuth: []
      - ApiKeyAuth: []
  /v0/uploads/images/{imageId}:
    delete:
      tags:
      - Assets
      summary: Delete single image
      description: Use the delete image endpoint to delete a single image uploaded by a user
      operationId: DELETE_User_Image
      parameters:
      - $ref: '#/components/parameters/imageId'
      responses:
        '204':
          description: Image was deleted
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
        '404':
          description: Image was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Image was not found
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/uploads/images:
    post:
      tags:
      - Assets
      summary: Upload image
      description: "Upload an image from the user's video to get recommendations of tracks in the Epidemic Sound library that would work for the video. When you post the image to this endpoint, you will receive an ImageID in return. Use this ImageID in a request to the matching image endpoint to get track recommendations.\n \n We currently support jpeg format and maximum file size is 2MB."
      operationId: POST_Upload_User_Image
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: Contains id to be used for endpoints requiring an image id, as well as the expiration date for the image.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadUserImageResponse'
              example:
                imageId: be4f3072-62f8-49c2-9904-0c99fb87a111
                expirationDate: '2026-05-12T07:45:47.618440808Z'
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
    delete:
      tags:
      - Assets
      summary: Delete all the uploaded images by the user
      description: Deletes all images uploaded by the user
      operationId: DELETE_User_Images
      responses:
        '202':
          description: Images were marked for deletion
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
components:
  schemas:
    PartnerAudioResponse:
      required:
      - audioUploadId
      - expires
      - length
      type: object
      properties:
        audioUploadId:
          type: string
          format: uuid
        length:
          type: number
          format: double
        expires:
          type: string
          format: date-time
    Error:
      required:
      - key
      - messages
      type: object
      properties:
        key:
          type: string
          description: Error key
        messages:
          type: array
          description: Error messages
          items:
            type: string
            description: Error messages
    MessageResponse:
      required:
      - message
      type: object
      properties:
        message:
          type: string
          description: Human readable message
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    PartnerAudioDeleteResponse:
      required:
      - audioFilesRemoved
      type: object
      properties:
        audioFilesRemoved:
          type: array
          items:
            type: string
            format: uuid
    UploadUserImageResponse:
      required:
      - expirationDate
      - imageId
      type: object
      properties:
        imageId:
          type: string
          format: uuid
        expirationDate:
          type: string
          format: date-time
  parameters:
    checksum:
      name: checksum
      in: path
      description: File checksum
      required: true
      schema:
        type: string
    audioIdOrChecksum:
      name: audioIdOrChecksum
      in: path
      description: Audio upload id or checksum of audio file
      required: true
      schema:
        type: string
    imageId:
      name: imageId
      in: path
      description: Image id
      required: true
      schema:
        type: string
  securitySchemes:
    ApiKeyAuth:
      type: http
      description: 'API key authentication for server-to-server communication.

        Pass your API key as a Bearer token in the Authorization header.

        API keys are prefixed with `epidemic_live_`.


        > **Example Header:** `Authorization: Bearer epidemic_live_your-api-key`'
      scheme: bearer
    PartnerAuth:
      type: http
      description: 'Partner authentication is handled with short lived partner access tokens.

        Use your api credentials to request these tokens.

        The access token is of JWT format and should be passed in a header with your API requests:


        > **Example Header:** `Authorization: Bearer your-partner-token`'
      scheme: Bearer
    UserAuth:
      type: http
      description: "User authentication is handled with short lived user access tokens.\n Use a partner token to request these tokens.\n The access token is of JWT format and should be passed in a header with your API requests:\n\n > **Example Header:** `Authorization: Bearer a-user-token`"
      scheme: Bearer
    EpidemicSoundConnectAuth:
      type: oauth2
      description: 'For users signing in with an Epidemic Sound account, user authentication is

        handled with OpenID Connect, which is a layer on top of OAuth 2.0.


        > **Example Header:** `Authorization: Bearer es-connect-token`'
      flows:
        authorizationCode:
          authorizationUrl: https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth
          tokenUrl: https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token
          scopes: {}