Tutorial 7 June 2026

A Text-to-Speech API With 31 Languages, One Key, One Price

NarrateAI 7 min read

A Text-to-Speech API With 31 Languages, One Key, One Price

Building anything for an international audience means your text-to-speech layer has to keep up. Too many TTS services treat languages as separate products — different endpoints, different voice sets, sometimes different pricing — which turns multilingual support into an integration project of its own. NarrateAI takes the opposite approach: 31 languages behind one API, one key, and one per-character rate, switched with a single parameter.

How language selection works

Every narration request takes an optional lang parameter — an ISO 639-1 two-letter code. It defaults to English (en), so you only set it when you want something else:

curl -X POST https://api.narrateai.mossforge.dev/v1/tts/async \
  -H "Authorization: Bearer nai_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Bonjour, comment puis-je vous aider ?",
    "lang": "fr",
    "voice": "michael"
  }'

There's no separate model to choose, no language-specific endpoint, and no surcharge. The same voices, the same expression tags, and the same async job flow apply across every language.

The full language list

Code Language Code Language Code Language
en English fr French de German
es Spanish pt Portuguese it Italian
ja Japanese ko Korean ar Arabic
hi Hindi ru Russian nl Dutch
pl Polish sv Swedish tr Turkish
uk Ukrainian vi Vietnamese id Indonesian
da Danish fi Finnish bg Bulgarian
cs Czech el Greek et Estonian
hr Croatian hu Hungarian lt Lithuanian
lv Latvian ro Romanian sk Slovak
sl Slovenian

That's broad coverage across Western and Eastern European languages, the major Asian languages, and Arabic and Hindi — enough to localise most products and content libraries without reaching for a second provider.

Why one price across languages matters

Per-language pricing makes budgeting unpredictable. If German costs more than English, or if a "premium language" tier exists, your cost model depends on the language mix of your traffic — something you often can't forecast. A flat per-character rate across all 31 languages means your cost is a function of input length alone, regardless of which languages your users speak. That's easier to estimate, easier to bill against, and easier to reason about as you scale.

Practical tips for multilingual projects

One API, everywhere

If multilingual output is on your roadmap — localised onboarding, international content, accessibility across regions — a single API that speaks 31 languages at one price removes a whole category of complexity. NarrateAI's free tier includes 125,000 characters on signup, which is plenty to test several languages and voices side by side. Get a free key and try your own text in the languages you care about.

title: "A Text-to-Speech API With 31 Languages, One Key, One Price" description: "Generate natural speech in 31 languages from a single REST API — no per-language models, no surcharges. The full language list and how to use the lang parameter." slug: text-to-speech-api-31-languages keywords: ["tts api 31 languages", "multilingual text to speech api", "text to speech api languages", "multilingual tts"] canonical: https://narrateai.mossforge.dev/blog/text-to-speech-api-31-languages


A Text-to-Speech API With 31 Languages, One Key, One Price

Building anything for an international audience means your text-to-speech layer has to keep up. Too many TTS services treat languages as separate products — different endpoints, different voice sets, sometimes different pricing — which turns multilingual support into an integration project of its own. NarrateAI takes the opposite approach: 31 languages behind one API, one key, and one per-character rate, switched with a single parameter.

How language selection works

Every narration request takes an optional lang parameter — an ISO 639-1 two-letter code. It defaults to English (en), so you only set it when you want something else:

curl -X POST https://api.narrateai.mossforge.dev/v1/tts/async \
  -H "Authorization: Bearer nai_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Bonjour, comment puis-je vous aider ?",
    "lang": "fr",
    "voice": "michael"
  }'

There's no separate model to choose, no language-specific endpoint, and no surcharge. The same voices, the same expression tags, and the same async job flow apply across every language.

The full language list

Code Language Code Language Code Language
en English fr French de German
es Spanish pt Portuguese it Italian
ja Japanese ko Korean ar Arabic
hi Hindi ru Russian nl Dutch
pl Polish sv Swedish tr Turkish
uk Ukrainian vi Vietnamese id Indonesian
da Danish fi Finnish bg Bulgarian
cs Czech el Greek et Estonian
hr Croatian hu Hungarian lt Lithuanian
lv Latvian ro Romanian sk Slovak
sl Slovenian

That's broad coverage across Western and Eastern European languages, the major Asian languages, and Arabic and Hindi — enough to localise most products and content libraries without reaching for a second provider.

Why one price across languages matters

Per-language pricing makes budgeting unpredictable. If German costs more than English, or if a "premium language" tier exists, your cost model depends on the language mix of your traffic — something you often can't forecast. A flat per-character rate across all 31 languages means your cost is a function of input length alone, regardless of which languages your users speak. That's easier to estimate, easier to bill against, and easier to reason about as you scale.

Practical tips for multilingual projects

One API, everywhere

If multilingual output is on your roadmap — localised onboarding, international content, accessibility across regions — a single API that speaks 31 languages at one price removes a whole category of complexity. NarrateAI's free tier includes 125,000 characters on signup, which is plenty to test several languages and voices side by side. Get a free key and try your own text in the languages you care about.

Get started

Try NarrateAI free

125,000 characters on signup. No credit card required.

Get your API key →