Transcribe
Upload pre-recorded Arabic audio as multipart/form-data and receive a high-quality transcript with total duration and word-level timestamps. Optimized for asynchronous processing of interviews, meetings, media clips and customer calls.
Endpoint
Authenticate with your API key in the x-api-key header. See Authentication.
| Header | Value |
|---|---|
x-api-key | YOUR_MUNSIT_API_KEY |
Request
Send the body as multipart/form-data.
| Field | Type | Required | Description |
|---|---|---|---|
file | file | Yes | Audio file in a supported format — see what you can send. |
model | string | No | ASR model to use: munsit (default) or munsit-en-ar (mixed Arabic-English with code-switching). |
hotwords | string | No | Comma-separated custom vocabulary (multi-word phrases allowed). Biases recognition toward names, brands and domain terms. Not supported with munsit-en-ar. |
return_confidence | boolean | No | When true, each timestamps entry includes a confidence score (0–1). The response is otherwise unchanged. |
return_timestamps | boolean | No | Defaults to true on munsit; set false to return an empty timestamps array. On munsit-en-ar timestamps are off unless you set this to true. |
return_turns | boolean | No | When true, adds the turns array and tags each turn with smart-turn is_complete and turn_probability. These two fields appear only with this flag. |
return_gender | boolean | No | When true, adds the turns array with a gender object (label, score) per turn, plus a whole-file rollup in analysis. |
return_sentiment | boolean | No | When true, adds the turns array with a sentiment object (label, score) per turn, plus a whole-file rollup in analysis. |
Custom vocabulary
Pass rare terms the recognizer is unlikely to know — customer names, product codes, brand words. In our benchmarks, biasing recovered rare terms from 0% to 77% recall with overall accuracy unchanged or slightly better. Short lists of 5–30 genuinely rare terms work best; very long lists dilute the effect.
hotwords is ignored when model=munsit-en-ar. The mixed Arabic-English model does not support custom vocabulary.hotwords and return_confidence apply to POST /audio/transcribe — not to diarization or minutes of meetings. For live audio, streaming takes hotwords as a query parameter and always returns confidence.Per-turn analysis
Set return_turns, return_gender and/or return_sentiment to break the transcript into turns and annotate each one. Any of the three adds the turns array — the gender and sentiment flags imply it — and each flag contributes only its own fields. analysis holds the whole-file rollup and appears only with return_gender or return_sentiment; return_turns on its own does not produce it. Short single-speaker recordings typically come back as one turn.
Sentiment and Gender events per turn.GET /history/speech-to-text/:id also returns turns and analysis for transcriptions created with one of these flags set.Example request
How it works: upload audio, Munsit analyzes the recording and converts the Arabic speech into text, and you get back a transcript with duration and word-level timestamps.
Response fields
The payload arrives under data, alongside statusCode and message.
| Field | Type | Description |
|---|---|---|
transcriptionId | string (UUID) | Transcription identifier. Pass it as the path parameter to sentiment analysis and keyword extraction. |
transcription | string | Full transcript text. |
duration | number | Audio duration in seconds. |
timestamps | array of objects (word, start, end, plus confidence when return_confidence=true) | Word-level timestamps. |
turns | array of objects (turn_id, start, end, text; plus is_complete / turn_probability with return_turns, gender with return_gender, sentiment with return_sentiment) | Present when any of the three flags is true — return_gender and return_sentiment imply it. Short single-speaker clips typically return one turn. |
analysis | object (turns count; plus gender and sentiment when those flags are set) | Whole-file rollup. Present only with return_gender or return_sentiment — return_turns alone does not produce it. |
attributes | object | Internal metadata blob persisted with the transcription; mirrors fields above under different names (and repeats the full timestamps array). Prefer the named fields — treat this as unstable. |
summary | string | Always present. Empty string on plain transcription; carries the generated summary on minutes of meetings. |
audioUrl | string | Stored copy of the uploaded audio. See Audio retention. |
stats | object (fileName, fileSize, mimeType, creditsConsumed) | Upload metadata and the credits billed for this request. |
Audio retention
Audio submitted to the hosted API is stored server-side. Every successful response carries an audioUrl pointing at that stored copy, and the transcript text is persisted alongside it so it can be retrieved later through the history endpoints.
| What | Detail |
|---|---|
| What is stored | The uploaded audio file and the resulting transcript, keyed to your account. |
| Access | The response returns an audioUrl for the stored object. Do not treat it as a secret or hard-code it — the exact form is not part of the API contract and may change. |
| Removal | Delete a transcription and its stored audio through the history endpoints, or contact support for bulk removal. |
| Avoiding retention | If your deployment cannot retain audio at all, use self-hosting, where storage is under your control. |
Go further
Do more with your transcript.
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.
