Text to Speech › Voices

Voices

Munsit offers a variety of voices with different accents, including Fusha, Emirati, Saudi Najdi, Saudi Hijazi, and more. List them all with one call, then use the voice_id in any text-to-speech request.

1

List voices

GET /api/v1/voices

Retrieve a list of all available voices for text-to-speech synthesis. Requires API key authentication via the x-api-key header. Returns an array of voice objects.

curl
curl -X GET "https://api.munsit.com/api/v1/voices" \ -H "x-api-key: YOUR_API_KEY"
2

Cloned or Munsit voices only

GET /voices returns Munsit's catalogue and your own cloned voices in one list. Each voice carries is_cloned to tell them apart. To fetch only one group, use these endpoints. Both take the same x-api-key header and return the same voice objects.

EndpointReturns
GET /api/v1/voices/clonedOnly the voices your account created with voice cloning.
GET /api/v1/voices/publicOnly Munsit's voice catalogue.
curl
curl -X GET "https://api.munsit.com/api/v1/voices/cloned" \ -H "x-api-key: YOUR_API_KEY"
3

Filter by use case or dialect

The dashboard's voice categories (Conversational, Narration, …) are the voice's tags. All three list endpoints accept the same two optional query parameters, so you can reproduce a dashboard filter in one call. Values are comma-separated; a voice matches when it carries at least one of the requested tags and at least one of the requested dialects.

ParameterValuesDescription
tagsconversational, narration, characters, social_media, educational, advertisement, documentary, news_broadcastUse-case tags, as shown in the dashboard. Unknown values return 400.
dialectemirati, saudi, najdi, hijazi, kuwaiti, qatari, omani, bahraini, fusha, egyptian, levantine, moroccan, american, british, australian, indian, …Dialect ids. saudi also matches najdi, hijazi and southern_saudi, the same roll-up the dashboard uses. Unknown values return 400.

Conversational Emirati voices from the Munsit catalogue:

curl
curl -X GET "https://api.munsit.com/api/v1/voices/public?tags=conversational&dialect=emirati" \ -H "x-api-key: YOUR_API_KEY"
Filtering client-side works too. Every voice object carries tags and dialect, so an unfiltered GET /voices cached once can be filtered locally with the same rule: tags.includes("conversational") && dialect.includes("emirati").
4

Response fields

Each voice object contains:

FieldTypeDescription
voice_idstringUnique identifier for the voice (used in text-to-speech requests)
namestringHuman-readable name of the voice
descriptionstring | nullDetailed description of the voice characteristics
genderstring | nullGender of the voice (male, female, or null)
agestring | nullAge category of the voice (middle, elderly, or null)
languagesarray[string]List of language codes supported by the voice (e.g., ["ar", "en"])
dialectarray[string]List of dialects supported by the voice (e.g., ["fusha", "emirati", "najdi"])
tagsarray[string] | nullUse cases the voice is curated for, matching the dashboard filters (e.g., ["conversational"]). See Filter by use case or dialect.
typestring | nullVoice type (neural or null)
sample_urlstringURL to an audio sample of the voice
is_clonedbooleantrue for a voice your account created with voice cloning, false for a Munsit catalogue voice
Treat voice_id as an opaque string. A few ids are readable (ar-najdi-male-2), but most of the catalogue looks like PCtWbxjoNTpVQ6gIPaVZ2Hqm. There is no guaranteed ar-{dialect}-{gender}-{n} convention, and readable ids are not enumerable — neighbouring numbers are not guaranteed to exist. Always list voices with GET /voices and use the ids it returns; never construct or pattern-match one.
Cloned voices. Your cloned voices have is_cloned: true. Some of their fields may be null, for example type. The voice_id can still be used in text-to-speech requests regardless of these field values.
5

Voice types

Voices can be categorized by dialect, gender (male or female), age (middle or elderly) and languages (supported language codes, e.g. ar for Arabic, en for English).

fushaemiratinajdihijazikuwaitibritish…

fusha is Modern Standard Arabic; najdi and hijazi are the Saudi dialects.

7

Using a voice

Use the voice_id from the response in text-to-speech generation endpoints: POST /text-to-speech/:model_id (include voice_id in the request body) or WS /text-to-speech (include voice_id in the WebSocket message). This example uses the faseeh-v1-preview model with the ar-najdi-male-2 voice.

curl
curl -X POST "https://api.munsit.com/api/v1/text-to-speech/faseeh-v1-preview" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "voice_id": "ar-najdi-male-2", "text": "مرحبا بك في فصيح كيف يمكنني مساعدتك اليوم", "stability": 0.5, "speed": 1.0, "streaming": true }' \ --output audio.pcm
Caching. Voice information doesn't change frequently. Consider caching the voice list to reduce API calls and improve application performance.
8

Go further

Working with an AI assistant? Every page is available as Markdown: add .md to the URL, or send an Accept: text/markdown header. For the whole documentation in one request, point it at llms-full.txt; the page index is llms.txt. Or use Copy Page, top right.