What you can do
- List supported providers —
GET /voices/providers - List a provider’s TTS models —
GET /voices/{provider}/models - Search voices across all providers with filtering and pagination —
GET /voices - Browse a single provider’s catalog —
GET /voices/{provider} - Get a single voice’s metadata + preview MP3 —
GET /voices/{provider}/{voiceId} - Buy / import / release Twilio phone numbers —
POST /utils/buy-twilio-number,POST /utils/import-twilio-number,POST /utils/twilio/release-number - Repair Twilio webhooks —
POST /utils/twilio/check-number - Assign a Twilio number to an agent for SMS —
POST /utils/twilio/sync-sms
Supported providers
elevenlabs, deepgram, cartesia, rime-ai, openai, google-cloud, google-live (Gemini Live), ultravox, minimax, playht, azure.
Every voice returned across providers is normalized to the same shape:
Workspace API keys
Each provider can be used with either:- The platform’s server-side API key (default fallback), or
- Your own workspace key — saved under
workspaceData.secrets.<KEY_NAME>(e.g.ELEVENLABS_API_KEY,CARTESIA_API_KEY).
GET /voices/providers returns the exact workspaceSecretKey to use for each provider, plus a requiresWorkspaceApiKey flag for providers without a platform fallback.
Filtering & search
The voice listing endpoints (GET /voices and GET /voices/{provider}) all support:
| Param | Example | Behavior |
|---|---|---|
language | en / en-US / English / de | Inclusive match — en matches en-US, en-GB, English, etc. |
gender | male / female / neutral | Case-insensitive; aliases masculine / feminine / m / f accepted |
accent | american / british | Case-insensitive substring match |
modelId | aura-2 / eleven_multilingual_v2 | Filters voice catalog for providers with model-specific voices |
limit | 100 (default) | 1-500 |
offset | 0 (default) | For pagination |
providers | elevenlabs,cartesia (unified) | Comma-separated provider slugs (unified endpoint only) |
