lotsofsounds-com Sounds API

Browse, search, and download sounds

Operations 5

GET /api/v1/sounds Search sounds #
GET /api/v1/sounds/popular List popular sounds #
GET /api/v1/sounds/{id} Get sound details #
GET /api/v1/sounds/{id}/stream Stream a sound #
GET /api/v1/sounds/{id}/download Download a sound #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lotsofsounds-com:lotsofsounds-com-sounds-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lotsofsounds-com-sounds-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Lots Sounds API
  description: 'Search, preview, and download 12,000+ CC0 sound effects and music tracks.


    - **Auth:** send your API key in the `x-api-key` header. Keys need a Pro or Enterprise plan.

    - **Search:** `q` is a case-insensitive keyword search. Each word must match a sound name, description or tag. Combine it with `tags`, `category`, and duration filters.

    - **Rate limits:** Pro 2,500 requests/day, Enterprise 50,000 requests/day. Limits reset at midnight UTC.

    - **Sound licence:** every sound is CC0 1.0 Universal. Commercial use is allowed and attribution is not required.

    - **MCP:** the same catalog is available to AI agents at `https://api.lotsofsounds.com/mcp`.'
  version: 1.0.0
  contact:
    name: Lots of Sounds
    url: https://www.lotsofsounds.com/developers
    email: team@lotsofsounds.com
servers:
- url: https://api.lotsofsounds.com
  description: Production
security: []
tags:
- name: Sounds
  description: Browse, search, and download sounds
paths:
  /api/v1/sounds:
    get:
      operationId: searchSounds
      summary: Search sounds
      description: 'Search and filter the full sound catalog. Supports full-text search, tag filtering, duration ranges, sorting, and pagination.


        Requires a **Pro** or **Enterprise** subscription.'
      tags:
      - Sounds
      security:
      - apiKey: []
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: Case-insensitive keyword search. Each word must match the sound name, description or a tag, so "card shuffle" finds sounds that contain both words. Use short keywords such as "whoosh" or "rain".
        example: thunder
      - name: category
        in: query
        schema:
          type: string
        description: Filter by sound category (case-insensitive). Values are sfx, music, lofi and ambient. Send a comma-separated list, such as "sfx,lofi", to match any of them.
        example: sfx
      - name: tags
        in: query
        schema:
          type: string
        description: Comma-separated tags to filter by (AND logic)
        example: nature,weather
      - name: min_duration
        in: query
        schema:
          type: number
        description: Minimum duration in seconds
        example: 1
      - name: max_duration
        in: query
        schema:
          type: number
        description: Maximum duration in seconds
        example: 30
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - downloads
          - created_at
          - duration
          - name
          default: downloads
        description: Field to sort by
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Sort direction
      - name: page
        in: query
        schema:
          type: integer
          minimum: 1
          default: 1
        description: Page number
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
        description: Results per page (max 100)
      responses:
        '200':
          description: Paginated list of sounds
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - pagination
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Sound'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v1/sounds/popular:
    get:
      operationId: listPopularSounds
      summary: List popular sounds
      description: 'Returns sounds by all-time download count, highest first.


        Requires a **Pro** or **Enterprise** subscription.'
      tags:
      - Sounds
      security:
      - apiKey: []
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 30
        description: Number of sounds to return
      responses:
        '200':
          description: A list of popular sounds
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - pagination
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PopularSound'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v1/sounds/{id}:
    get:
      operationId: getSound
      summary: Get sound details
      description: Returns full metadata for a single sound by ID.
      tags:
      - Sounds
      security:
      - apiKey: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The sound ID
        example: fs-398576
      responses:
        '200':
          description: Sound details
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/Sound'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v1/sounds/{id}/stream:
    get:
      operationId: streamSound
      summary: Stream a sound
      description: Returns a signed URL for streaming/playback. No download is counted.
      tags:
      - Sounds
      security:
      - apiKey: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The sound ID
        example: fs-398576
      responses:
        '200':
          description: A signed streaming URL
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - id
                    - name
                    - stream_url
                    properties:
                      id:
                        type: string
                        example: fs-398576
                      name:
                        type: string
                        example: Thunder Rumble
                      stream_url:
                        type: string
                        format: uri
                        description: Signed URL for streaming, expires in 1 hour
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v1/sounds/{id}/download:
    get:
      operationId: downloadSound
      summary: Download a sound
      description: Returns a signed download URL for the sound file. The URL expires after `1 hour`.
      tags:
      - Sounds
      security:
      - apiKey: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The sound ID
        example: fs-398576
      responses:
        '200':
          description: A signed download URL
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                properties:
                  data:
                    type: object
                    required:
                    - id
                    - name
                    - download_url
                    - expires_in
                    properties:
                      id:
                        type: string
                        example: fs-398576
                      name:
                        type: string
                        example: Thunder Rumble
                      download_url:
                        type: string
                        format: uri
                        description: Signed CloudFront URL
                      expires_in:
                        type: integer
                        description: Seconds until the URL expires
                        example: 3600
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  headers:
    X-RateLimit-Limit:
      description: Daily request quota for your plan
      schema:
        type: integer
        example: 2500
    X-RateLimit-Remaining:
      description: Requests remaining today
      schema:
        type: integer
        example: 2347
    X-RateLimit-Reset:
      description: Unix timestamp when the limit resets (midnight UTC)
      schema:
        type: integer
        example: 1711411200
  schemas:
    Pagination:
      type: object
      required:
      - page
      - limit
      - total
      - totalPages
      properties:
        page:
          type: integer
          example: 1
        limit:
          type: integer
          example: 20
        total:
          type: integer
          description: Total sounds matching the query
          example: 342
        totalPages:
          type: integer
          example: 18
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    PopularSound:
      allOf:
      - $ref: '#/components/schemas/Sound'
      - type: object
        required:
        - numDownloads
        properties:
          numDownloads:
            type: integer
            minimum: 0
            description: All-time downloads used to rank popular sounds
            example: 4200
    SoundSummary:
      type: object
      required:
      - id
      - name
      - tags
      - duration
      - stream_url
      properties:
        id:
          type: string
          example: fs-398576
        name:
          type: string
          example: Thunder Rumble
        description:
          type:
          - string
          - 'null'
          example: Deep rolling thunder with rain
        tags:
          type: array
          items:
            type: string
          example:
          - nature
          - weather
          - thunder
        duration:
          type: number
          description: Duration in seconds
          example: 12.5
        stream_url:
          type: string
          format: uri
          description: URL to stream this sound
        download_url:
          type: string
          format: uri
          description: URL to download this sound (only present on authenticated endpoints)
    Sound:
      allOf:
      - $ref: '#/components/schemas/SoundSummary'
      - type: object
        properties:
          category:
            type:
            - string
            - 'null'
            enum:
            - SFX
            - MUSIC
            - LOFI
            - AMBIENT
            description: Sound category
            example: SFX
          license:
            type:
            - string
            - 'null'
            example: CC0
          timing:
            type:
            - object
            - 'null'
            description: Where the sound happens in the file, in milliseconds from the start. Use onset_ms and tail_ms as trim points. Null until the sound is analysed.
            required:
            - onset_ms
            - peak_ms
            - tail_ms
            properties:
              onset_ms:
                type: integer
                description: First audible moment (within 30 dB of the loudest point)
                example: 400
              peak_ms:
                type: integer
                description: Loudest moment. Put this on the visual hit.
                example: 405
              tail_ms:
                type: integer
                description: Last audible moment (within 45 dB of the loudest point)
                example: 1050
          loudness:
            type:
            - object
            - 'null'
            description: EBU R128 loudness. Use it to balance sounds against each other. Null until the sound is analysed.
            required:
            - integrated_lufs
            - true_peak_db
            properties:
              integrated_lufs:
                type: number
                description: Integrated loudness in LUFS
                example: -15.2
              true_peak_db:
                type:
                - number
                - 'null'
                description: True peak in dBTP
                example: -2.4
  responses:
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              limit:
                type: integer
              reset:
                type: integer
          example:
            error: Rate limit exceeded
            limit: 2500
            reset: 1711411200
    NotFound:
      description: Sound not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Sound not found
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Internal server error
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Missing x-api-key header
    Forbidden:
      description: Plan does not include API access
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              upgrade_url:
                type: string
                format: uri
          example:
            error: API access requires a Pro or Enterprise subscription
            upgrade_url: https://lotsofsounds.com/pricing
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Your API key. Generate one from the [dashboard](/dashboard/api-keys).

        Keys are prefixed with `los_`.

        '
externalDocs:
  description: Developer documentation
  url: https://www.lotsofsounds.com/docs