VoiceDock Docs
ApiVoices

List available voices

Returns available voices for your agents. ## Voice Providers ### Local Voices (All Users) Local voices are lightweight, fast, and cost-effective. They provide clear, slightly robotic speech that works well for transactional calls like appointments, surveys, and customer service. This endpoint returns all available local voices grouped by language. Over 90 voices across 35+ languages are available. ### ElevenLabs (BYOK) This endpoint does NOT return ElevenLabs voices. Check your ElevenLabs Voice Library at https://elevenlabs.io/app/voice-library for available voices when using your own API key. **Available ElevenLabs models:** `eleven_flash_v2_5` (fastest, default), `eleven_v3` (expressive dialogue with audio tags - supports `[emotion]` cues in square brackets), `eleven_multilingual_v2` (best quality), `eleven_turbo_v2_5` (balanced), `eleven_monolingual_v1` (English only). ### xAI Grok Realtime (BYOK) Grok Realtime has built-in voices (not returned by this endpoint). Set voice via `llm_config.voice` when creating/updating an agent. Available xAI voices: `ara`, `rex`, `sal`, `eve`, `leo` ## Choosing the Right Voice | Use Case | Recommended | |----------|-------------| | Appointments, surveys, support | Local voices (fast, clear) | | Sales, relationship-building | ElevenLabs (natural, expressive) | | Real-time conversations | xAI Grok Realtime (low latency) | **Example agent with local voice:** ```json { "name": "Appointment Agent", "tts_config": { "provider": "local", "voice_id": "nl_NL-pim-medium", "language": "nl" } } ```

GET
/voices

Returns available voices for your agents.

Voice Providers

Local Voices (All Users)

Local voices are lightweight, fast, and cost-effective. They provide clear, slightly robotic speech that works well for transactional calls like appointments, surveys, and customer service.

This endpoint returns all available local voices grouped by language. Over 90 voices across 35+ languages are available.

ElevenLabs (BYOK)

This endpoint does NOT return ElevenLabs voices. Check your ElevenLabs Voice Library at https://elevenlabs.io/app/voice-library for available voices when using your own API key.

Available ElevenLabs models: eleven_flash_v2_5 (fastest, default), eleven_v3 (expressive dialogue with audio tags - supports [emotion] cues in square brackets), eleven_multilingual_v2 (best quality), eleven_turbo_v2_5 (balanced), eleven_monolingual_v1 (English only).

xAI Grok Realtime (BYOK)

Grok Realtime has built-in voices (not returned by this endpoint). Set voice via llm_config.voice when creating/updating an agent.

Available xAI voices: ara, rex, sal, eve, leo

Choosing the Right Voice

Use CaseRecommended
Appointments, surveys, supportLocal voices (fast, clear)
Sales, relationship-buildingElevenLabs (natural, expressive)
Real-time conversationsxAI Grok Realtime (low latency)

Example agent with local voice:

{
  "name": "Appointment Agent",
  "tts_config": {
    "provider": "local",
    "voice_id": "nl_NL-pim-medium",
    "language": "nl"
  }
}

Authorization

BearerAuth
AuthorizationBearer <token>

API key authentication. Get your key from the dashboard.

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/voices"
{
  "voices": [
    {
      "id": "nl_NL-pim-medium",
      "name": "Pim",
      "language": "nl",
      "description": {
        "en": "Pim (Dutch, Male)",
        "nl": "Pim (Nederlands, Man)"
      },
      "provider": "local"
    }
  ],
  "xai_realtime_voices": [
    {
      "id": "ara",
      "name": "Ara",
      "style": "Female, professional"
    },
    {
      "id": "rex",
      "name": "Rex",
      "style": "Male, friendly"
    },
    {
      "id": "sal",
      "name": "Sal",
      "style": "Neutral, calm"
    },
    {
      "id": "eve",
      "name": "Eve",
      "style": "Female, warm"
    },
    {
      "id": "leo",
      "name": "Leo",
      "style": "Male, energetic"
    }
  ]
}
{
  "error": "Invalid API key",
  "message": "string"
}
{
  "error": "Invalid API key",
  "message": "string"
}