Zeligate VoiceDeveloper docs
v1.3.0Sign in

API reference / Voices

Voices

List and fetch voices in the ZeliSpeech shape, so an existing client can populate a picker unchanged. For voice selection, aliasing, and cloning, see the Voices capability.

List voices

GET/v1/voices
GET/v2/voices

Return the array of available voices (built-in plus any cloned custom-… voices), each with the standard required fields (voice_id, name, …).

curl "https://voice.your-domain.com/v1/voices" -H "Authorization: Bearer sk-zeli-..."
from zeli_tts import ZeliSpeech
 
client = ZeliSpeech(api_key="sk-zeli-...", base_url="https://voice.your-domain.com")
for v in client.voices.list():
    print(v.id, v.label, v.custom)

Get one voice

GET/v1/voices/{voice_id}

Returns a single voice in the ZeliSpeech shape.

curl "https://voice.your-domain.com/v1/voices/zeli-voice-1" -H "Authorization: Bearer sk-zeli-..."

Voice settings

GET/v1/voices/settings/default
GET/v1/voices/{voice_id}/settings

Return the ZeliSpeech voice-settings shape (both authed when a key is set). Use them to seed sliders in a UI. See Voice settings for what each field maps to.

Adding & removing voices

Cloning uses the native contract (not /v1): POST /voices with a reference clip registers a zero-shot voice; DELETE /voices/{id} removes it. Both are mirrored to S3 when cross-region persistence is configured.

POST/voices
DELETE/voices/{voice_id}
from zeli_tts import ZeliSpeech
 
client = ZeliSpeech(api_key="sk-zeli-...", base_url="https://voice.your-domain.com")
voice = client.voices.add(name="My voice", file="me.wav")   # -> custom-…
client.voices.delete(voice.id)

See Voices › cloning a voice for requirements (≈10–20 s clean single-speaker audio).

Zeligate Voice API · self-hosted · secure data sovereignty · source