Skip to Content
APIVoices

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/voices

No request parameters. Authenticate with your API key as a Bearer token.

Request examples

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&…" } ] }
FieldTypeDescription
voice_idstringThe identifier to pass as voice_id to POST /v1/tts.
display_namestringHuman-readable voice name, as shown in the dashboard.
languagestringPrimary 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_stylestringMale, Female, Neutral, or Unknown when the owner has not set one. Cloned voices default to Unknown; their owner can set it in the dashboard.
typestring"premade" (public catalog) or "cloned" (your organization’s clone).
capabilitiesobjectPer-voice tuning flags: speed, pitch, emotion, inline_emotion_tags.
preview_urlstring | nullPlayable 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.