Generate a candidate
Provide avoice_id and either a prompt or preset_id. Each request creates one candidate. Custom descriptions are automatically enhanced into a performance instruction and a matching audition script in the source voice’s language.
- cURL
- Python
- TypeScript
- CLI
voc_example with your source voice ID. An API submission returns 202 with generation_job_id and status. Each successful candidate costs 100 credits. Failed generation releases its reservation; browsing presets, preparing input, auditioning, and saving do not add a generation charge.
Use a preset
GET /v1/voice-previews/remix/presets lists presets for age, gender, pitch, pacing, energy, emotion, role-play, and delivery. Each includes an ID, instruction, script, suggested strength, and sample audio URL. The sample demonstrates the style; it is not a remix of your chosen voice.
Use voices.list_remix_presets() in Python, voices.listRemixPresets() in TypeScript, or:
prompt makes it custom input and runs Enhance, even if preset_id is present.
Compare strengths
guidance_scale accepts 1–10 and defaults to 4. The CLI flag is --guidance.
To compare candidates with the same instruction and script, call
POST /v1/voice-previews/remix/prepare with the same voice_id, prompt, and preset_id you plan to generate. The response includes instruction, text, language_code, source_voice, and a preparation_token valid for 24 hours.
Pass that token to each create request. It is bound to your account, source voice, language, prompt, and preset; changing them requires another preparation. Omitting the token prepares input as part of submission.
Web’s Auto comparison corresponds to three separate candidates at 4, 6, and 8, using one preparation. Submit and poll within your account’s generation concurrency limit. Three successful candidates cost 300 credits. Keep the candidate IDs you like and regenerate only the others; selection itself does not create a saved voice or spend credits.
Audition and save
PollGET /v1/voice-previews/remix/{generation_job_id} until status is ready. Stop polling on failed or cancelled and read error. SDK methods are voices.get_remix_preview(id) and voices.getRemixPreview(id); the CLI command is breeze voice remix status <generation_job_id> --agent.
The result contains:
generated_voice_id: available when ready; use it to audition or save.textandinstruction: the candidate’s audition script and prepared direction.guidance_scale: the strength used for this candidate.comparison_audio_urlandcomparison_text: the source recording and its own transcript. It may speak different words from the candidate.source_voice: source ID, name, and description captured for the request.
GET /v1/voice-previews/{generated_voice_id}/stream. Save with POST /v1/voice-previews/{generated_voice_id}/save, supplying the returned language_code. SDK methods are stream_preview / save_preview (streamPreview / savePreview in TypeScript).
gvi_example and en with the returned preview ID and language. Name and description default to the source voice’s values; override them with voice_name / voice_description in the API or --name / --description in the CLI. Save only ready candidates. Use the saved voice_id for Text to Speech.
Retry without duplicating a candidate
Retain the job ID as soon as submission succeeds. A polling timeout does not cancel generation; query the same job again. If submission timed out before you received an ID, retry with the sameIdempotency-Key and input. Changed input with that key returns CONFLICT; a concurrent submission can also return CONFLICT until the first request finishes. Use a new key for each intentionally new candidate.
The source needs usable audio, a matching transcript, and a comparison sample of 2–500 characters. Source validation and input preparation happen before generation credits are reserved. A failed or expired preparation must be corrected before submitting again.
