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 aBlob. In the browser, use the selected File directly.
Save vocals from an owned song
saved.voice.id and read /api/voices/{id} or its NDJSON events.
Choose readiness for your mode
saved, extracting, queued, training, ready, or error.
Generate with the saved voice
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.