---
title: "List your reusable My-Library audio."
method: GET
path: "/library/audio"
tags: ["Library"]
---

# List your reusable My-Library audio.

`GET /library/audio`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/library/audio`
- Auth: HTTP bearer

Lists one page of the durable music, sound effects, and soundscapes owned by the caller, ONE ROW PER SOUND, newest first: every take of the same kind and name (case and spacing aside) is one row — its newest take, whose `id` is the assetId to apply — with `takeCount` and `episodeCount`. Filter by `kind`, search names/prompts with `query`, or keep one story project's sounds with `projectId`. `total` is how many sounds match across every page; pass `nextCursor` back as `cursor` (with the same filters) for the next page (`null` on the last). Scope: `story:read`.

## Query parameters

- `kind` 'music' | 'sfx' | 'soundscape'
- `query` string
- `projectId` string
- `limit` integer
- `cursor` string

## Response `200`

Your reusable My-Library audio.

- MyLibraryAudio: One page of the caller's reusable audio, one row per sound, newest first.
  - `audio` MyLibraryAudioSound[], required
    - `id` string, required
    - `kind` 'music' | 'sfx' | 'soundscape', required
    - `label` string, required
    - `prompt` string, required
    - `soundUrl` string, uri, required
    - `provider` string, nullable
    - `scriptUploadId` string, nullable
    - `scriptTitle` string, nullable
    - `tags` string[], required
    - `durationSeconds` number, nullable
    - `vocals` boolean, required
    - `contentType` string, nullable
    - `byteSize` integer, nullable
    - `contentSha256` string, nullable
    - `createdAt` string, date-time, required
    - `takeCount` integer, required: How many saved takes share this sound's kind and name.
    - `episodeCount` integer, required: How many distinct episodes those takes were made for.
  - `nextCursor` string, nullable, required: Pass as `cursor` (with the same filters) for the next page; null on the last page.
  - `total` integer, required: How many sounds match the filters, across every page.

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
