Text to Speech Tashkīl

Tashkīl

Add Arabic diacritics to unvoweled text. Send plain Fusha, get back the same text with the vowel marks needed for precise reading — ready for narration, learning tools, or TTS.

1

Why diacritize

Tashkīl adds Arabic diacritics to unvoweled text, making written content clearer for pronunciation, narration, learning, and downstream speech workflows. The model is especially well suited to Modern Standard Arabic (Fusha), where it preserves formal wording while adding the vowel marks needed for more precise reading.

IncludedTypical use case
Arabic diacritization for plain textPreparing Fusha scripts for narration and text-to-speech
Strong performance on Fusha and formal ArabicSupporting Arabic reading and pronunciation tools
Synchronous API response — simple app flowsNormalizing formal Arabic text before publishing or review
Output usable before TTS or content reviewCleaner input for Synthesize and Audio narrative
Best on formal Arabic. Dialectal, noisy, or highly informal text may need additional review after diacritization.
2

Endpoint

POST /api/v1/tashkil/diacritize

Authenticated with the x-api-key header, JSON body in, JSON out. One field, one round trip.

FieldTypeRequiredDescription
textstringYesArabic text to diacritize.
3

Diacritize text

Send unvoweled Arabic; read data.diacritized_text from the response.

curl
curl 'https://api.munsit.com/api/v1/tashkil/diacritize' \ -H 'Content-Type: application/json' \ -H 'x-api-key: YOUR_MUNSIT_API_KEY' \ -d '{ "text": "ذهب الطالب الى المدرسة" }'
Response
{ "statusCode": 200, "data": { "original_text": "ذهب الطالب الى المدرسة", "diacritized_text": "ذَهَبَ الطَّالِبُ إِلَى المَدْرَسَةِ" }, "message": "Success" }
4

Response fields

The response wraps both the original and the diacritized text, so you can diff or display them side by side.

FieldTypeDescription
statusCodenumberHTTP-style status code.
data.original_textstringOriginal input text.
data.diacritized_textstringText with Arabic diacritics.
messagestringRequest status message.
5

Errors

Errors follow the shared errorCode / errorMessage shape — for example {"errorCode": 40101, "errorMessage": "API key required"}, "Invalid API key", or a validation error like "text: Expected string".

HTTP statuserrorCodeScenario
40040001Missing or invalid text field.
40140101Missing, invalid, expired, or revoked API key.
41341301Request body exceeds the maximum size limit.
50050001Internal error or upstream Tashkil service failure.
6

Go further

Diacritized text is the perfect input for speech.

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.