Skip to content

Manage the Producer song library

GuideAvailability varies by operation

These operations are enabled individually and can return 503 until available. Reads require task:read; writes require task:create. Use resources authorized for your account. See resource access and recovery.

GET /api/v1/producer/songs?limit=50 returns {items, nextCursor}. Limits range from 1 to 100. Pass the returned cursor without decoding it. A page can be shorter than the limit, or empty, while still having a nextCursor; continue until it is null. Library metadata includes lastSyncedAt; reading it does not refresh the song from the generation service.

Changes have two explicit scopes:

ScopeRequestBehavior
library (default)PATCH with title, expectedRevisionChanges only your library title
library (default)DELETE with expectedRevisionRemoves your access, preserving the song
sourcePATCH with expectedVersion and title or privacyCreates a Task to change the shared song
sourceDELETE with expectedVersionCreates a Task to verify song deletion

Use libraryRevision as expectedRevision and version as expectedVersion from the latest GET. Privacy is private, unlisted, or public and requires scope="source". In-place changes require management permission; active dependencies, other customer access, or derived resources can block deletion. A 409 means the version or resource state changed: read it again before making a new decision.

A source-change Task with a stale expectedVersion fails with CONFLICT; read the latest song version before deciding whether to submit a new change. Active tasks using the same song can delay changes. Unrelated new generation tasks do not, although older tasks with incomplete input tracking may still block a change conservatively.

For scope="source", save and reuse Idempotency-Key on PATCH and DELETE to recover the same Task. Local library edits use revision checking instead. After an uncertain local response, GET the song before retrying; removing your access can make that GET return 404.

Create a collection with POST /api/v1/producer/collections, a kind of playlist or project, and a title of 1–200 characters. Save an Idempotency-Key for creation; retries return the same collection. List with GET /api/v1/producer/collections?kind=playlist or kind=project, following nextCursor.

PATCH /api/v1/producer/collections/{id} requires the current version. Supply title, songIds, or remove=true. songIds replaces the entire ordered member set and accepts at most 20 unique authorized songs; an empty array clears it. Deleting a collection does not delete its songs. Changes use version checking; after an uncertain response, read the collection before retrying. Collections are platform organization tools and do not promise synchronization elsewhere.