# Request — expose ElevenLabs voice creation (persistent `voiceId`)

## Request

1. **`eleven-voice-create` should return the `generated_voice_id`** alongside each
   preview audio.
2. **Add an endpoint that returns a persistent `voice_id`** — from a chosen preview id,
   or from 1–3 audio samples — usable in any `voiceId` parameter. Upstream equivalents:
   `POST /v1/text-to-voice/create-voice-from-preview` and `POST /v1/voices/add`
   (confirm current paths against ElevenLabs' docs).

## Why

We expose the voice **audition** and not the **commit**. `eleven-voice-create` is
described as *"audition before committing"*, its output is audio, and nothing on the
surface turns a sample into an id. The classic REST API has no voice endpoints at all.

Without an id, a designed or cloned voice cannot be used where it matters:
`eleven-sts-v2` takes `audioUrl` + **`voiceId`** and accepts no sample, so an approved
voice cannot be applied to audio or video that already exists. Speech-to-speech is the
only route that preserves timing — measured: 5.290958s in → 5.294150s out (±3ms),
envelope correlation 0.852 at zero lag — which is what keeps lip-sync intact.

## Also worth having

- **Speaker diarization on an audio track.** `eleven-audio-isolation` separates voice
  from background, not speaker A from speaker B, so overlapping dialogue cannot be
  re-voiced at all.
- **A lip-sync pass** (video + new audio → mouth re-animated). No v2v model accepts an
  audio input today; `ltx-v2.3-retake` advertises *"replace audio, video, or both"* but
  its schema is `prompt` + `duration` + `videoUrl` only — please confirm whether that
  capability exists.
