AssemblyAI Universal-3.5 Pro and Urdu: language_code on Sume STT
AssemblyAI fixed a bug that sent Urdu to Universal-3.5 Pro, which covers 18 languages. How a language hint behaves on Sume STT, and what to check.

On August 20, 2026 AssemblyAI fixed a routing bug: async requests with language_code: "ur" were sent to universal-3-5-pro, which does not support Urdu, and now go to universal-2. On Sume STT, language_code is an optional hint and you can omit it for auto-detect; the docs do not publish a per-language support list in the pages cited here, so test your language on a short clip.
Sources: the AssemblyAI changelog and Sume's API reference, read 2026-10-01.
What exactly broke at AssemblyAI?
The changelog says Urdu requests were routed to a model that does not list Urdu. Separately, the August 1 entry says Universal-3.5 Pro covers 18 languages and that requests specifying any other language, or detected as another language, fall back to Universal-2. So the fallback is by design; the bug was that the explicit Urdu code skipped it.
How does a language hint work on Sume STT?
The schema describes language_code as an optional BCP-47 or provider language hint, for example en or ko, and says to omit it for auto-detect. Completed results expose language fields when available, plus words[] timings.
The lesson from the AssemblyAI fix applies to any engine: a wrong or unsupported code can cost more than no code. If you are unsure of the language, leave the field out and read the language fields in the result.
const res = await fetch("https://api.sume.com/v1/stt-1.0/transcribe", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.SUME_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
audio_url: "https://example.com/clip.mp3",
mode: "async",
}),
});
console.log(await res.json()); // status_url, result_url, ...What should I check before sending a rare language?
Compare the two outputs by reading the text, not only the job status.
| Question | Where the answer is |
|---|---|
| Is the language on the engine's list? | The vendor's own page; Sume's cited schema gives no list |
| Does a hint help or hurt? | Run one short clip with the hint and one without |
| Which language did the engine detect? | Language fields on the completed result, when available |
| How long may the clip be? | duration_seconds 1 to 600 on the request |
Does the hint change what I am billed?
The docs tie billing to audio minutes, and duration_seconds only improves the usage reservation; omit it and one minute is reserved. See the language hint post for a Korean example.
Sources
Related posts
More in Developers
- Avatar video captions error over 60 seconds: split the script
Inline captions on an avatar video are rejected when the estimated duration is over 60 seconds, the same cap as the job. Split long scripts into jobs.
- Azure batch takes 10,000 inputs per job; Sume sends one text per job
Azure batch synthesis accepts up to 10,000 text inputs in a 2 MB JSON body. Sume TTS 1.0 takes one transcript of up to 20,000 characters per job.
- Azure batch: 95% of outputs within 120 seconds; Sume TTS waits 30
Azure says half of batch outputs finish in 10 to 20 seconds and 95% within 120. Sume TTS sync mode waits at most 30 seconds, then hands you a status URL.
- Azure word boundaries in ms vs Sume TTS timestamps in seconds
Azure writes word timings as AudioOffset and Duration in milliseconds, in a separate file. Sume returns words[] with start and end seconds on the job result.
Written by Sume