TTS invalid_voice_id 400: a voice name from another vendor

Sume returns 400 `invalid_voice_id` for a voice name that is not a UUID or `voi_` id, before any job or credit. Copy an id verbatim or send an avatar.

4 min readSume
All posts

The 400 means voice.id was not in a shape Sume accepts. It must be a TTS voice UUID (8-4-4-4-12 hex) or a Voices library id (voi_ plus 32 hex); any other shape, such as a voice name copied from another vendor, is rejected synchronously with public_reason=invalid_voice_id. No job is queued and no credits are reserved. Fix it by copying an id verbatim or sending avatar_id or avatar_handle instead.

Why do other vendors' voices fail?

Each vendor names its own voices. The ElevenLabs changelog entry for September 28, 2026 (read 2026-09-30) announces Eleven v4 and Eleven v4 Turbo and mentions voice cloning across its models; the voices it uses are ElevenLabs voices. Sume's schema says plainly that voice.id is not a voice name from another TTS ecosystem, so a name or id from that ecosystem is not a Sume id.

What is accepted and what is rejected?

voice.id handling from the Sume API reference, read 2026-09-30.
Value sentResult
TTS voice UUID, 8-4-4-4-12 hexAccepted
Voices library id, voi_ plus 32 hexAccepted; resolved to the stored TTS voice before queueing
Any other shape, such as a vendor voice name400 invalid_voice_id, nothing queued, no credits reserved
avatar_id or avatar_handleSume resolves that avatar's TTS voice at submit time

How do I fix it?

Either copy the id exactly as you received it, or skip the voice id. The schema's discoverable selector is the avatar: list GET /v1/avatar-1.0/avatars and use any avatar whose voice.status is ready. If you set both an avatar and voice.id, they must match or you get a 400 for that instead.

curl -X POST https://api.sume.com/v1/tts-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: voice-fix-001" \
  -d '{"transcript": "Your order has shipped.", "avatar_handle": "acme"}'

Is it safe to retry?

Yes, in the sense that the rejection happens before a job exists, so the failed attempt cost nothing. Change the voice field and resend. For where voice ids come from, see HeyGen API avatar id and voice id and finding a voice id on Sume.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume