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.
List 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.
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.
| Endpoint | Returns |
|---|---|
GET /api/v1/voices/cloned | Only the voices your account created with voice cloning. |
GET /api/v1/voices/public | Only Munsit's voice catalogue. |
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.
| Parameter | Values | Description |
|---|---|---|
tags | conversational, narration, characters, social_media, educational, advertisement, documentary, news_broadcast | Use-case tags, as shown in the dashboard. Unknown values return 400. |
dialect | emirati, 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:
tags and dialect, so an unfiltered GET /voices cached once can be filtered locally with the same rule: tags.includes("conversational") && dialect.includes("emirati").
Response fields
Each voice object contains:
| Field | Type | Description |
|---|---|---|
voice_id | string | Unique identifier for the voice (used in text-to-speech requests) |
name | string | Human-readable name of the voice |
description | string | null | Detailed description of the voice characteristics |
gender | string | null | Gender of the voice (male, female, or null) |
age | string | null | Age category of the voice (middle, elderly, or null) |
languages | array[string] | List of language codes supported by the voice (e.g., ["ar", "en"]) |
dialect | array[string] | List of dialects supported by the voice (e.g., ["fusha", "emirati", "najdi"]) |
tags | array[string] | null | Use cases the voice is curated for, matching the dashboard filters (e.g., ["conversational"]). See Filter by use case or dialect. |
type | string | null | Voice type (neural or null) |
sample_url | string | URL to an audio sample of the voice |
is_cloned | boolean | true for a voice your account created with voice cloning, false for a Munsit catalogue voice |
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.
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.
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).
fusha is Modern Standard Arabic; najdi and hijazi are the Saudi dialects.
Featured voices
Below are the featured Munsit voices available in the text-to-speech API. Each name links to an audio sample.
| Name | Dialect | Language | Sample |
|---|---|---|---|
| Fahad | Najdi | Arabic - English | Listen |
| Lama | Hijazi | Arabic - English | Listen |
| James | American | English - Arabic | Listen |
| Jake | American | Arabic - English | Listen |
| Mansour | Emirati | Arabic - English | Listen |
| Maha | Najdi | Arabic - English | Listen |
| Faisal | Najdi | English - Arabic | Listen |
| Turki | Najdi | Arabic - English | Listen |
| Reem | Najdi | Arabic - English | Listen |
| Mishari | Najdi | Arabic - English | Listen |
| Hala | Najdi | Arabic - English | Listen |
| May | British | English - Arabic | Listen |
| Latifa | Emirati | Arabic - English | Listen |
| Mishal | Najdi | Arabic - English | Listen |
| Maya | American | English - Arabic | Listen |
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.
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.