Epidemic Sound Sound effects API

Endpoints to get sound effect specific information. These endpoints allow you to build a UI to browse and search for sound effects.

OpenAPI Specification

epidemic-sound-sound-effects-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Partner Content Assets Sound effects 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: Sound effects
  description: Endpoints to get sound effect specific information. These endpoints allow you to build a UI to browse and search for sound effects.
paths:
  /v0/sound-effects/collections:
    get:
      tags:
      - Sound effects
      summary: List sound-effect collections
      description: 'Returns the sound-effect collections active for your application.


        Sound-effect collections are managed via the developer portal: an admin imports an EMS

        playlist into a collection, and end users see only Active collections through this endpoint.


        Every application has access to every sound effect, so there is no per-tier cap and no

        paid/free distinction. Up to 20 sound effects per collection are included by default;

        pass `excludeField=soundEffects` to omit them, or paginate the full set via

        `/sound-effects/collections/{collectionId}`.'
      operationId: GET_Sound_Effect_Collections
      parameters:
      - name: excludeField
        in: query
        description: Pass `soundEffects` to omit sound-effect data from the response and return only collection metadata.
        required: false
        schema:
          type: string
          enum:
          - soundEffects
      - name: limit
        in: query
        description: Max number of collections returned in the response, default 10 and max 20
        required: false
        schema:
          type: integer
          format: int32
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Sound-effect collections response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoundEffectCollectionsPaginatedResponse'
              example:
                collections:
                - id: 4caef099-43bd-4653-8203-3086fa01d3b7
                  name: Crowd & Applause
                  soundEffects:
                  - id: 4bd22142-d121-4bab-89d7-bd0945fd3b24
                    title: Applause
                    added: '2026-05-11T07:45:47.571914418Z'
                    length: 10
                    images:
                      default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                      L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                      M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                      S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                      XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                  availableSoundEffects: 1
                pagination:
                  page: 1
                  limit: 10
                  offset: 0
                links:
                  next: /v0/sound-effects/collections?limit=10&offset=10
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/sound-effects/collections/{collectionId}:
    get:
      tags:
      - Sound effects
      summary: Sound-effect collection details
      description: Returns a single sound-effect collection along with a paginated set of its sound effects. Use `limit` and `offset` to page through the collection.
      operationId: GET_Sound_Effect_Collection
      parameters:
      - $ref: '#/components/parameters/collectionId'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Sound-effect collection response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoundEffectCollectionPaginatedResponse'
              example:
                id: f10e65eb-9998-4c41-9777-ac9183ab85dd
                name: Crowd & Applause
                soundEffects:
                - id: a66c413e-7d9d-4916-9d69-993ac782cf79
                  title: Applause
                  added: '2026-05-11T07:45:47.573735118Z'
                  length: 10
                  images:
                    default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                    M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                    S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                availableSoundEffects: 1
                pagination:
                  page: 1
                  limit: 50
                  offset: 0
                links: {}
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '404':
          description: Sound-effect collection was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Collection was not found
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/sound-effects/categories:
    get:
      tags:
      - Sound effects
      summary: List SFX categories
      description: 'The sound effects categories endpoint allows you to get a list of all sound effects categories.


        You can then browse the sound effects catalog based on categories like "Applause" or "Crowds".


        Some sound effect categories have cover art that you can use in your interface. You can choose to display all categories, or choose type "featured" to only show the categories that are chosen by our curation team.'
      operationId: GET_Sound_Effect_Categories
      parameters:
      - name: type
        in: query
        description: Category type
        required: false
        schema:
          type: string
          enum:
          - all
          - featured
          default: all
      - $ref: '#/components/parameters/offset'
      - name: limit
        in: query
        description: Max number of entries returned in the response, default 50
        required: false
      responses:
        '200':
          description: Sound effects category list with related parent category. You can see the parent-child relationship in the response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoundEffectCategoriesResponse'
              example:
                categories:
                - id: 00f328a4-3526-43de-9cd6-87a991e6f5ec
                  name: Applause
                  images:
                    default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                    M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                    S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                  parent:
                    id: 26d2325c-7642-4f52-9d98-478046b050d6
                    name: Crowds
                pagination:
                  page: 2
                  limit: 10
                  offset: 10
                links:
                  next: /sound-effects/categories?limit=10&offset=20
                  prev: /sound-effects/categories?limit=10&offset=0
        '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: []
  /v0/sound-effects/categories/{categoryId}:
    get:
      tags:
      - Sound effects
      summary: SFX category details
      description: 'The category details endpoint contains info on the requested sound effects category.


        The purpose of this endpoint is to be able to validate that an individual object exists in the API if it was cached by the client.'
      operationId: GET_Sound_Effect_Category
      parameters:
      - $ref: '#/components/parameters/categoryId'
      responses:
        '200':
          description: Category with related parent and children categories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SoundEffectCategoryWithRelativesResponse'
              example:
                id: df41740b-62a5-4e96-882f-769698ae89b7
                name: Applause
                images:
                  default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                  L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                  M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                  S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                  XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                parent:
                  id: 8d1464ae-6b26-4727-9013-f5ef413648ed
                  name: Crowds
                children:
                - id: 9e54ce9e-9033-4808-ba51-0993485d3318
                  name: Claps
        '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: Category was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Category was not found
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/sound-effects/categories/{categoryId}/tracks:
    get:
      tags:
      - Sound effects
      summary: List SFX by category
      description: Use the sound effects details endpoint to display all sound effects for a given category.
      operationId: GET_Sound_Effect_Category_Tracks
      parameters:
      - $ref: '#/components/parameters/categoryId'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/limit'
      - name: sort
        in: query
        description: Sort
        required: false
        schema:
          type: string
          enum:
          - title
          - newest
          - length
          default: newest
      - name: order
        in: query
        description: Order
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: includeExplicit
        in: query
        description: Whether to include sound effects tagged as explicit in the results. Defaults to false, meaning explicit content is excluded by default.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: List of sound effects for a given category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSoundEffectsResponse'
              example:
                soundEffects:
                - id: 4b162c28-197f-4e3b-b1b4-0d96fd211322
                  title: Applause
                  added: '2026-05-11T07:45:47.626987847Z'
                  length: 10
                  images:
                    default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                    M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                    S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                pagination:
                  page: 2
                  limit: 10
                  offset: 10
                links:
                  next: /sound-effects/categories?limit=10&offset=20
                  prev: /sound-effects/categories?limit=10&offset=0
        '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: Category was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Category was not found
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/sound-effects/{trackId}/download:
    get:
      tags:
      - Sound effects
      summary: Download sound effect
      description: 'The download endpoint allows you to download an MP3 file of the sound effect.


        We offer MP3 files in two qualities; normal (128kbps) and high (320kbps).


        The high quality files can be used in content when needed, but normal quality is sufficient for most use cases.


        The download links expire after 24 hours (normal quality) or 1 hour (high quality files). The expiration time is stated in the response.'
      operationId: GET_Sound_Effect_Download
      parameters:
      - $ref: '#/components/parameters/trackId'
      - $ref: '#/components/parameters/format'
      - $ref: '#/components/parameters/quality'
      responses:
        '200':
          description: Information about download url
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadResponse'
              example:
                url: https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3
                expires: '2022-12-22T11:01:48Z'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '404':
          description: Track was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Track was not found
        '403':
          description: User does not have access to download the track.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: User does not have access to download the track
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
  /v0/sound-effects/search:
    get:
      tags:
      - Sound effects
      summary: Search SFX
      description: 'Use the sound effects search endpoint to allow users to search within the sound effects library.

        '
      operationId: GET_Sound_Effect_Search
      parameters:
      - $ref: '#/components/parameters/offset'
      - name: limit
        in: query
        description: Max number of entries returned in the response, default 50 and max 60
        required: false
      - required: true
        $ref: '#/components/parameters/term'
      - name: sort
        in: query
        description: Sort for search
        required: false
        schema:
          type: string
          enum:
          - best-match
          - newest
          - popular
          - length
          - title
          default: best-match
      - name: order
        in: query
        description: Order
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: includeExplicit
        in: query
        description: Whether to include sound effects tagged as explicit in the results. Defaults to false, meaning explicit content is excluded by default.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Bad request
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Rate limit exceeded
        '401':
          description: Unauthorized. Most likely your access token has expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
              example:
                message: Invalid credentials
        '200':
          description: List of sound effect search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSoundEffectsResponse'
              example:
                soundEffects:
                - id: 0e875aa3-56d7-4252-8b93-b51bd1b3bab3
                  title: Applause
                  added: '2026-05-11T07:45:47.632385297Z'
                  length: 10
                  images:
                    default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg
                    M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg
                    S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg
                    XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg
                pagination:
                  page: 2
                  limit: 10
                  offset: 10
                links:
                  next: /sound-effects/categories?limit=10&offset=20
                  prev: /sound-effects/categories?limit=10&offset=0
      security:
      - UserAuth: []
      - EpidemicSoundConnectAuth: []
      - ApiKeyAuth: []
components:
  schemas:
    SoundEffectCategoryWithParentResponse:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        images:
          $ref: '#/components/schemas/ImagesResponse'
        parent:
          $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse'
    DownloadResponse:
      required:
      - expires
      - url
      type: object
      properties:
        url:
          type: string
        expires:
          type: string
    SoundEffectCategoriesResponse:
      required:
      - categories
      - links
      - pagination
      type: object
      properties:
        categories:
          type: array
          items:
            $ref: '#/components/schemas/SoundEffectCategoryWithParentResponse'
        pagination:
          $ref: '#/components/schemas/Pagination'
        links:
          $ref: '#/components/schemas/PaginationLinks'
    ImagesResponse:
      type: object
      properties:
        default:
          type: string
          nullable: true
        L:
          type: string
          nullable: true
        M:
          type: string
          nullable: true
        S:
          type: string
          nullable: true
        XS:
          type: string
          nullable: true
    Pagination:
      required:
      - limit
      - page
      type: object
      properties:
        page:
          type: integer
          format: int32
        limit:
          type: integer
          format: int32
        offset:
          type: integer
          format: int32
    PaginatedSoundEffectsResponse:
      required:
      - links
      - pagination
      - soundEffects
      type: object
      properties:
        soundEffects:
          type: array
          items:
            $ref: '#/components/schemas/SoundEffectResponse'
        pagination:
          $ref: '#/components/schemas/Pagination'
        links:
          $ref: '#/components/schemas/PaginationLinks'
    SoundEffectCategoryWithRelativesResponse:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        images:
          $ref: '#/components/schemas/ImagesResponse'
        parent:
          $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse'
        children:
          type: array
          items:
            $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse'
    SoundEffectCollectionResponse:
      required:
      - id
      - name
      - soundEffects
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the sound-effect collection.
          format: uuid
        name:
          type: string
          description: Name of the collection
        soundEffects:
          type: array
          items:
            $ref: '#/components/schemas/SoundEffectResponse'
        availableSoundEffects:
          type: integer
          description: Total number of sound effects available in the collection
          format: int32
          nullable: true
    PaginationLinks:
      type: object
      properties:
        next:
          type: string
          nullable: true
        prev:
          type: string
          nullable: true
    SoundEffectCollectionsPaginatedResponse:
      required:
      - collections
      - links
      - pagination
      type: object
      properties:
        collections:
          type: array
          items:
            $ref: '#/components/schemas/SoundEffectCollectionResponse'
        pagination:
          $ref: '#/components/schemas/Pagination'
        links:
          $ref: '#/components/schemas/PaginationLinks'
    RelatedSoundEffectCategoryResponse:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    SoundEffectResponse:
      required:
      - added
      - id
      - length
      - title
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        added:
          type: string
          format: date-time
        length:
          type: integer
          format: int32
        images:
          $ref: '#/components/schemas/ImagesResponse'
    SoundEffectCollectionPaginatedResponse:
      required:
      - id
      - links
      - name
      - pagination
      - soundEffects
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        soundEffects:
          type: array
          items:
            $ref: '#/components/schemas/SoundEffectResponse'
        availableSoundEffects:
          type: integer
          format: int32
          nullable: true
        pagination:
          $ref: '#/components/schemas/Pagination'
        links:
          $ref: '#/components/schemas/PaginationLinks'
    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'
  parameters:
    categoryId:
      name: categoryId
      in: path
      description: Category id
      required: true
      schema:
        type: string
        format: uuid
    collectionId:
      name: collectionId
      in: path
      description: Collection id
      required: true
      schema:
        type: string
    format:
      name: format
      in: query
      description: Track format
      required: false
      schema:
        type: string
        enum:
        - mp3
    limit:
      name: limit
      in: query
      description: Max number of entries returned in the response, default 50 and max 100
      required: false
      schema:
        type: integer
        format: int32
    term:
      name: term
      in: query
      description: Term for search
      required: false
      schema:
        type: string
    quality:
      name: quality
      in: query
      description: Track quality, normal is used as the default if not specified
      required: false
      schema:
        type: string
        enum:
        - normal
        - high
        default: normal
    trackId:
      name: trackId
      in: path
      description: Track id
      required: true
      schema:
        type: string
    offset:
      name: offset
      in: query
      description: Index of the entry track in the response
      required: false
      schema:
        type: integer
        format: int32
  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: {}