Sume TTS Router voices: the sonic and eleven families

GET /v1/tts-router/voices lists voices for one family, sonic or eleven. A model speaks only with voices from its own family, so pick the model first.

5 min readSume
All posts

The voice list depends on the model's family. In the repo, GET /v1/tts-router/voices returns the voices that one family can speak with, and the wire names are sonic and eleven, not provider names. Every Cartesia row (sonic-3.6 and its siblings) is the sonic family; every ElevenLabs row (eleven-v4 and its siblings) is the eleven family. Choose the model, read its voice_family from GET /v1/tts-router/models, then list voices for that family.

Source: apps/api/src/tts-router/voices.ts and packages/api-contract/src/tts-router-models.ts on origin/main b28f3b0, read 2026-10-13.

How the two voice families differ (read 2026-10-13)
Itemsoniceleven
Modelssonic-3.6, sonic-3.5, sonic-3, sonic-latest, sonic-preview, sonic-2, sonic-turboeleven-v4, eleven-v4-turbo, eleven-v3, eleven-multilingual-v2, eleven-turbo-v2.5
Listed voicesPublic voice library only; your clones are reached through the Voices library (voi_*)Live ElevenLabs list when configured; otherwise the premade catalog
List cache10 minutes10 minutes
If unavailableAn error that names the familyAn error that names the family

Why can I not see my cloned voice in that list?

The code comment is explicit: the Sonic list is the public library (is_public) only, because the provider key also owns every customer's clones, and those are never listed. A workspace reaches its own clones through the Voices library, with ids that start voi_. Use voice.id with that id, or an avatar selector, on a Sonic row.

How do I call it?

Pass the family as a query parameter.

curl "https://api.sume.com/v1/tts-router/voices?family=sonic" \
  -H "Authorization: Bearer $SUME_API_KEY"

Sources

Related posts

More in Developers

All Developers posts

Written by Sume