Sume TTS 409 tts_voice_language_mismatch: confirm and retry safely

A Sume TTS 409 means the voice's language differs from your request. Nothing was charged. Ask the user, then retry with confirm_language_mismatch true.

4 min readSume
All posts

A 409 tts_voice_language_mismatch from Sume TTS means the voice you picked is recorded with a different primary language than the language in your request. It happens before a job is created, so nothing is charged. To go ahead, ask the user, then resend the same request with confirm_language_mismatch: true.

Do not change the voice, transcript or language when you retry, and keep the same Idempotency-Key.

What the error carries

The Sume TTS docs say the 409 body includes the facts you need to show a warning.

Sume TTS voice-language double-check, from the repo TTS docs (read 2026-10-07)
ItemBehavior
Status and codeHTTP 409 tts_voice_language_mismatch
Body fieldsvoice_id, voice_language, request_language, plus guidance text
WhenBefore the API creates a job or makes a charge
Confirm fieldconfirm_language_mismatch: true in the REST body
MatchingRegional tags compare by primary language; fil and tl match
Unknown voice metadataA raw voice id can still be submitted without a warning

The retry flow

Treat the 409 as a question for a person, not an error to swallow.

  • Show the user the voice language and the request language from the body.
  • If they correct the language or the voice, send a new request with a new Idempotency-Key.
  • If they confirm the mismatch on purpose, such as an English voice reading a Korean brand name, resend the identical request with confirm_language_mismatch: true.
  • Never set the confirm flag on the first request. The contract says to omit it initially.

Where the same check shows up

The repo docs say the MCP tts_create tool surfaces this as a non-error warning result with confirmation_required true, instead of an HTTP status, so an agent can ask the user and then continue. The REST route and the tool apply the same rule, so you can build one confirmation screen for both.

Avoiding it

Set language for every non-English transcript. The reference says an omitted language defaults to English at the provider. Choose a voice whose language matches the text, and check that the voice id is one Sume knows: an id of any other shape is a different error, a 400 invalid_voice_id.

In an agent or automation, keep the language next to the voice when you store a voice choice, so a later job does not pair them wrong. The jobs and results guide covers how retries and job ids behave.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume