Voices
GET /v1/voices
Lists the voices an engine can speak with.
Query parameters
| Name | Default | Description |
|---|---|---|
engine |
system |
Engine id from GET /v1/engines |
Response 200: an array of:
| Field | Type | Description |
|---|---|---|
id |
string | Pass as voice to POST /v1/speech |
name |
string | Display name |
language |
string | BCP-47 tag, e.g. en-US, fr-FR |
sample |
string | null | A sample sentence in the voice's language (system voices) |
gender |
string | null | female, male, or null when unknown |
Errors: 400 engine_unavailable
curl -s "$VOXD/v1/voices?engine=system" -H "Authorization: Bearer $VOXD_TOKEN"
# [{"id":"Samantha","name":"Samantha","language":"en-US","sample":"Hello! My name is Samantha."}, …]
curl -s "$VOXD/v1/voices?engine=kokoro" -H "Authorization: Bearer $VOXD_TOKEN"
# [{"id":"af_heart","name":"Heart","language":"en-US","sample":null,"gender":"female"}, …]
Tip: to pick a voice for the user's language, filter on language starting with their language code (for example fr).
GET /v1/voices/library
Every voice in one list: the voices of each installed engine plus your custom voices, with your favorites and tags.
| Field | Type | Description |
|---|---|---|
engine |
string | The engine that speaks it (custom voices: the cloning engine) |
id, name, language, gender |
As in GET /v1/voices |
|
custom |
boolean | A voice you created from a recording |
available |
boolean | Its engine is installed. Custom voices stay listed, with false, when no cloning engine is installed. |
favorite |
boolean | |
tags |
string[] | Sorted, lowercase |
duration_s, created_at |
number | null | Custom voices only |
PUT /v1/voices/meta
Favorite or tag any voice, built-in or custom. Only the fields you send change.
curl -s -X PUT "$VOXD/v1/voices/meta" -H "Authorization: Bearer $VOXD_TOKEN" -H "Content-Type: application/json" \
-d '{"engine": "kokoro", "voice": "af_heart", "favorite": true, "tags": ["warm", "narration"]}'
| Field | Type | Description |
|---|---|---|
engine |
string | The voice's engine. Ignored for custom voices (cv_…), whose favorites and tags apply everywhere. |
voice |
string | Voice id |
favorite |
boolean | Optional |
tags |
string[] | Optional. Replaces the tag list: up to 12 tags, each trimmed and truncated to 24 characters; duplicates are removed. |
Response 204, and a voices.changed event is sent.