One Sume voice, a different language: the 409 and the confirm flag

Ask Sume TTS to speak Spanish with an English-tagged voice and you get a 409 before any charge. Retry with confirm_language_mismatch only if you mean it.

4 min readSume
All posts

On Sume, a voice has one primary language, and TTS compares it to the language you request before creating a job. If they differ you get HTTP 409 tts_voice_language_mismatch with no job created and no charge. To speak across languages with one voice anyway, resend the same request with confirm_language_mismatch set to true.

What the guard does

The voice's primary language is stored as studio_agent_voices.language and set when a voice is created. The request's target comes from language on REST, or payload.language on MCP. The 409 returns the voice_id, voice_language and request_language so your client can show what clashed. Regional tags compare by primary language, so es and es-MX do not trigger it, and fil and tl count as the same language.

Language guard behavior, read 2026-10-06 from the repo docs
CaseResult
Voice en, request enRuns, no warning
Voice en, request es409 tts_voice_language_mismatch, no job, no charge
Same request plus confirm_language_mismatch: trueRuns
Voice es, request es-MXMatches by primary language
Raw voice id with unknown library metadataCan still be submitted

In MCP the same check is a warning

tts_create returns a non-error tts_voice_language_warning result with confirmation_required set to true. The intended flow is to ask the person, then retry with the same idempotency key and confirm_language_mismatch true, without changing the voice, transcript or target language.

A safe retry pattern

In code, treat the 409 as a prompt rather than a failure. Read voice_language and request_language from the error body. If your own logic knows the mismatch is deliberate, retry once with confirm_language_mismatch true and the same idempotency key. If not, switch to a voice tagged with the target language, or fix the language field that you sent by mistake.

Sume's voice library tags sixteen languages: en, ko, ja, zh, es, fr, de, pt, it, hi, nl, pl, ru, sv, tr and tl. If your market is outside that list, check the catalog before you promise anything.

Should you override it?

Rarely for a real market. The guard exists because an English-tagged voice reading Spanish text is a common mistake, and the docs do not promise that a voice sounds native outside its tagged language. For a multilingual ad, pick a voice tagged for each language. Use the override for a deliberate case, such as a character who speaks with an accent, and listen before you ship.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume