Skip to main content
Use the client from request setup. These examples assume api, userAddress, and the returned songId are available. api includes the session token and selected account headers. Use recordings your user owns or has permission to use. Saving a voice and generating with it are separate paid requests.

Upload vocals

In Node.js, read the recording into a Blob. In the browser, use the selected File directly.
Append text fields before the file. Upload one WAV, MP3, FLAC, OGG, AAC, M4A/MP4 or WebM file, at most 50 MiB. For trained preparation, use mono or stereo audio up to 240 seconds. A full-mix upload is not automatically isolated into vocals.

Save vocals from an owned song

The song must contain audio. This flow first extracts its vocals. Preserve saved.voice.id and read /api/voices/{id} or its NDJSON events.

Choose readiness for your mode

Reference generation uses the saved recording. Trained generation uses the prepared voice for the selected model. A recording can be usable as a reference before trained preparation finishes. Status can be saved, extracting, queued, training, ready, or error.

Generate with the saved voice

For reference use, check canUseReference and set voiceMode: "reference". To use an audio URL without saving a voice, send voiceReferenceUrl instead of voiceId. Saved ID and direct URL are mutually exclusive. voiceCoverStrength ranges from 0 to 1. It controls conditioning, not an exact voice-match guarantee. Preparation runs through the saved-voice flow; there is no public training-start, LoRA upload, rank/epoch control or retraining endpoint.