Odia and Urdu text to speech API: the language codes
Cartesia's Sonic 3.6 adds Odia (`or`) and Urdu (`ur`). On Sume, send the code in `language`, pin `sonic-3.6`, and check the voice before you pay.

The language codes are or for Odia and ur for Urdu. Cartesia added both in Sonic 3.6, and on Sume you send the code in the TTS request's language field with model set to sonic-3.6 on the TTS Router. Sume's docs do not list which languages each router model accepts, so check the audio for your own text.
Which codes did Sonic 3.6 add?
Cartesia's Sonic 3.6 page (read 2026-09-30) lists two new languages, Odia and Urdu, in its table of 44 languages with base codes. You can pass a base code or a regional locale code on Cartesia's API.
| Language | Code | Sume field | Router model to pin |
|---|---|---|---|
| Odia | or | language | sonic-3.6 |
| Urdu | ur | language | sonic-3.6 |
How do I send the code on Sume?
Sume's language is a 2 to 16 character string, described as BCP-47 or ISO-639. The schema says to set it for every non-English transcript, since an omitted value defaults to English at the provider. Write the transcript in the script of that language and do not translate it.
curl -X POST https://api.sume.com/v1/tts-router/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: urdu-demo-001" \
-d '{
"model": "sonic-3.6",
"transcript": "آپ کا آرڈر کل روانہ ہوگا۔",
"avatar_handle": "acme",
"language": "ur"
}'Why pin sonic-3.6 and not an alias?
The Odia and Urdu additions are a Sonic 3.6 claim. The Router model field is a required pass-through catalog id, and sonic-latest or sonic-preview are separate ids that can differ from sonic-3.6. Pinning keeps the request tied to the model the vendor page describes. See Cartesia Sonic 3.6 API model ids.
What if the voice does not speak that language?
Sume compares the voice's primary language with the requested one. On a mismatch it returns a warning that says "Pronunciation may sound unnatural." and states that no job or charge has been created yet. Retry only after the user confirms, with confirm_language_mismatch set to true. The full loop is in the mismatch warning post.
For the other 42 languages and how the field behaves, read Sonic 3.6 languages and the language field.
Sources
Related posts
More in Models
- OmniHuman 1.5 API: native 1080p vs Sume avatar 720p
BytePlus says OmniHuman 1.5 outputs native 1080p from one image plus audio. Sume's Avatar Video currently outputs 720p; its video models list 1080p separately.
- PixVerse API and R2 world model: Sume has no live session
PixVerse R2 is a persistent real-time world. Sume has no live session or action controls: video jobs return a clip you poll for or get by webhook.
- Recraft V4.1 Flash API: Sume lists V4, webp, text-only
Recraft V4.1 Flash is live in Recraft Studio and its API. Sume lists recraft/recraft-v4, not a Flash id: webp output, text-to-image only, no references.
- Medical transcription API: what Sume STT does and doesn't
Sume has one speech-to-text route, sume/stt-1.0, with no medical model option. What it takes and returns, so you can decide for clinical audio.
Written by Sume