Voices API
List the voices your API key can synthesize with. The result is exactly the
set of voice_id values POST /v1/tts accepts for your key: the
public premade catalog plus your organization’s own voice clones.
GET https://api.revolab.ai/v1/voicesNo request parameters. Authenticate with your API key as a Bearer token.
Request examples
cURL
curl https://api.revolab.ai/v1/voices \
-H "Authorization: Bearer $REVOLAB_API_KEY"Response (200 OK)
{
"voices": [
{
"voice_id": "aisyah",
"display_name": "Aisyah",
"language": "Malay",
"gender_style": "Female",
"type": "premade",
"capabilities": {
"speed": true,
"pitch": true,
"emotion": false,
"inline_emotion_tags": false
},
"preview_url": "https://s3.ap-southeast-1.amazonaws.com/…?X-Amz-Expires=3600&…"
},
{
"voice_id": "my-clone-3374b001",
"display_name": "My Clone",
"language": "en",
"gender_style": "Female",
"type": "cloned",
"capabilities": {
"speed": true,
"pitch": true,
"emotion": false,
"inline_emotion_tags": false
},
"preview_url": "https://s3.ap-southeast-1.amazonaws.com/…?X-Amz-Expires=3600&…"
}
]
}| Field | Type | Description |
|---|---|---|
voice_id | string | The identifier to pass as voice_id to POST /v1/tts. |
display_name | string | Human-readable voice name, as shown in the dashboard. |
language | string | Primary language, as a BCP 47 tag: an ISO 639-1 code (en, ms, id) plus a region where the region is a real distinction (en-MY, zh-MY). manglish is a documented non-IANA extension. |
gender_style | string | Male, Female, Neutral, or Unknown when the owner has not set one. Cloned voices default to Unknown; their owner can set it in the dashboard. |
type | string | "premade" (public catalog) or "cloned" (your organization’s clone). |
capabilities | object | Per-voice tuning flags: speed, pitch, emotion, inline_emotion_tags. |
preview_url | string | null | Playable sample of the voice, for building a picker without synthesizing one yourself. A presigned URL valid for one hour — fetch the list again for a fresh one rather than storing it. null only when the voice has no reference audio at all. |
Only voices your key can actually use are returned — another organization’s clones never appear, and disabled voices are filtered out.
preview_url expires after an hour because the audio is private to your
organization — a permanent public link to a customer’s cloned voice is not
something we are willing to mint. Call the endpoint again when you need a fresh
one; the voice_id values are stable, only the signature is not.
Treat this endpoint as the source of truth rather than hand-maintaining a list:
because clones are per-organization, the set is specific to your key, and an ID
that changes here is an ID POST /v1/tts stops accepting.
Status codes
401 Unauthorized — Missing, invalid, or revoked API key
{
"error": {
"code": "unauthorized",
"message": "Invalid API key format. Keys must start with 'rvl_live_'.",
"request_id": "req_01HXYZ..."
}
}ElevenLabs shape
The same path doubles as the ElevenLabs-compatible voice list: authenticate
with the xi-api-key header instead of Authorization: Bearer and the
response uses the ElevenLabs voice-list schema (name, category, labels,
preview_url), with category reflecting premade vs cloned. See
ElevenLabs compatibility.
Related
- TTS API — synthesize with a
voice_idfrom this list - Authentication — how to send your API key
- Error catalog — full list of error codes