Skip to main content
Pick any voice ID from the tables below and set it as voice when you create the agent:
curl -X POST https://agents.assemblyai.com/v1/agents \
  -H "Authorization: $ASSEMBLYAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Support Assistant",
    "system_prompt": "You are a friendly support agent. Keep replies under two sentences.",
    "voice": { "voice_id": "ivy" }
  }'
# pip install requests
import os
import requests

resp = requests.post(
    "https://agents.assemblyai.com/v1/agents",
    headers={"Authorization": os.environ["ASSEMBLYAI_API_KEY"]},
    json={
        "name": "Support Assistant",
        "system_prompt": "You are a friendly support agent. Keep replies under two sentences.",
        "voice": {"voice_id": "ivy"},
    },
)
resp.raise_for_status()
print(resp.json())
// Node 18+ has fetch built in
const res = await fetch("https://agents.assemblyai.com/v1/agents", {
  method: "POST",
  headers: {
    Authorization: process.env.ASSEMBLYAI_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Support Assistant",
    system_prompt: "You are a friendly support agent. Keep replies under two sentences.",
    voice: { voice_id: "ivy" },
  }),
});
const data = await res.json();
console.log(data);
Configuring inline over the WebSocket instead of on a stored agent? Set it on session.output.voice in a session.update before session.ready:
{
  "type": "session.update",
  "session": {
    "output": { "voice": "ivy" }
  }
}
The voice is immutable once the session is established, so it can’t be changed mid-conversation — pick it before the agent connects.

Language support

The agent recognizes far more input languages than it speaks. For the authoritative, up-to-date matrix, see Supported languages. In short:
  • Input (recognized): 18 languages, with native code-switching.
  • Output (spoken): 6 officially supported languages — 🇺🇸 English, 🇫🇷 French, 🇮🇹 Italian, 🇪🇸 Spanish, 🇮🇳 Hindi, and 🇷🇺 Russian — each backed by at least one voice below with a matching accent. More output languages are on the roadmap.

Choose a voice by accent

Each voice has a primary accent:
  • For 🇺🇸 American English — the right pick for an English agent — choose from Voices.
  • For a native accent in French, Italian, Spanish, Hindi, or Russian, choose the matching language-specific voice.

Voices

These voices have an American English accent and are the recommended pick for English agents.
VoiceAccentDescriptionSample
ivy🇺🇸Professional, deliberate, smooth
james🇺🇸Conversational, professional, male
tyler🇺🇸Theatrical, energetic, chatty, jagged
winter🇺🇸Empathetic, aesthetic, conversational
bella🇺🇸High-pitched, chatty
david🇺🇸Deep, calming, conversational
kyle🇺🇸Chatty, nasal, expressive
helen🇺🇸Soft, older, calming
martha🇺🇸Southern, older, warm
river🇺🇸Slow, calming, ASMR
emma🇺🇸Lively, young, conversational
victor🇺🇸Deep, older
eleanor🇺🇸Deeper, older, calming

Language-specific voices

These voices have a native accent in a specific non-English language and code-switch naturally between that language and English.
VoiceNative accentDescriptionSample
arjun🇮🇳 Hindi/HinglishConversational
dmitri🇷🇺 RussianConversational
pierre🇫🇷 FrenchConversational
giulia🇮🇹 Italian
luca🇮🇹 Italian
lucia🇪🇸 Spanish
mateo🇪🇸 Spanish
diego🇨🇴 Spanish (Latin American)Colombian