---
title: "Transcription start"
method: POST
path: "/calls/{call_control_id}/actions/transcription_start"
tags: ["Call Commands"]
---

# Transcription start

`POST /calls/{call_control_id}/actions/transcription_start`

Start real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command.

**Expected Webhooks:**

- `call.transcription`

## Path parameters

- `call_control_id` string, required

## Request body

- TranscriptionStartRequest
  - `client_state` string — Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
  - `command_id` string — Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.
  - `transcription_engine` 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'Speechmatics' | 'Soniox' | 'Parakeet' | 'Humain' | 'Reson8' | 'A' | 'B' — Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.
  - `transcription_engine_config` union
    - TranscriptionEngineGoogleConfig
      - `enable_speaker_diarization` boolean — Enables speaker diarization.
      - `hints` string[] — Hints to improve transcription accuracy.
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `language` 'af' | 'sq' | 'am' | 'ar' | 'hy' | 'az' | 'eu' | 'bn' | 'bs' | 'bg' | 'my' | 'ca' | 'yue' | 'zh' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'et' | 'fil' | 'fi' | 'fr' | 'gl' | 'ka' | 'de' | 'el' | 'gu' | 'iw' | 'hi' | 'hu' | 'is' | 'id' | 'it' | 'ja' | 'jv' | 'kn' | 'kk' | 'km' | 'ko' | 'lo' | 'lv' | 'lt' | 'mk' | 'ms' | 'ml' | 'mr' | 'mn' | 'ne' | 'no' | 'fa' | 'pl' | 'pt' | 'pa' | 'ro' | 'ru' | 'rw' | 'sr' | 'si' | 'sk' | 'sl' | 'ss' | 'st' | 'es' | 'su' | 'sw' | 'sv' | 'ta' | 'te' | 'th' | 'tn' | 'tr' | 'ts' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'xh' | 'zu' — Language to use for speech recognition
      - `max_speaker_count` integer — Defines maximum number of speakers in the conversation.
      - `min_speaker_count` integer — Defines minimum number of speakers in the conversation.
      - `model` 'latest_long' | 'latest_short' | 'command_and_search' | 'phone_call' | 'video' | 'default' | 'medical_conversation' | 'medical_dictation' — The model to use for transcription.
      - `profanity_filter` boolean — Enables profanity_filter.
      - `speech_context` object[] — Speech context to improve transcription accuracy.
        - `boost` number — Boost factor for the speech context.
        - `phrases` string[]
      - `transcription_engine` 'Google' — Engine identifier for Google transcription service
      - `use_enhanced` boolean — Enables enhanced transcription, this works for models `phone_call` and `video`.
    - TranscriptionEngineTelnyxConfig
      - `language` 'en' | 'zh' | 'de' | 'es' | 'ru' | 'ko' | 'fr' | 'ja' | 'pt' | 'tr' | 'pl' | 'ca' | 'nl' | 'ar' | 'sv' | 'it' | 'id' | 'hi' | 'fi' | 'vi' | 'he' | 'uk' | 'el' | 'ms' | 'cs' | 'ro' | 'da' | 'hu' | 'ta' | 'no' | 'th' | 'ur' | 'hr' | 'bg' | 'lt' | 'la' | 'mi' | 'ml' | 'cy' | 'sk' | 'te' | 'fa' | 'lv' | 'bn' | 'sr' | 'az' | 'sl' | 'kn' | 'et' | 'mk' | 'br' | 'eu' | 'is' | 'hy' | 'ne' | 'mn' | 'bs' | 'kk' | 'sq' | 'sw' | 'gl' | 'mr' | 'pa' | 'si' | 'km' | 'sn' | 'yo' | 'so' | 'af' | 'oc' | 'ka' | 'be' | 'tg' | 'sd' | 'gu' | 'am' | 'yi' | 'lo' | 'uz' | 'fo' | 'ht' | 'ps' | 'tk' | 'nn' | 'mt' | 'sa' | 'lb' | 'my' | 'bo' | 'tl' | 'mg' | 'as' | 'tt' | 'haw' | 'ln' | 'ha' | 'ba' | 'jw' | 'su' | 'auto_detect' — Language to use for speech recognition
      - `transcription_engine` 'Telnyx' — Engine identifier for Telnyx transcription service
      - `transcription_model` 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo' — The model to use for transcription.
    - union
      - DeepgramNova2Config
        - `hints` string[] — Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted biasing, use `keywords_boosting` instead. Nova-2-only; use `keyterms` on Nova-3.
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `keywords_boosting` object — Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.
        - `language` 'bg' | 'ca' | 'zh' | 'zh-CN' | 'zh-Hans' | 'zh-TW' | 'zh-Hant' | 'zh-HK' | 'cs' | 'da' | 'da-DK' | 'nl' | 'en' | 'en-US' | 'en-AU' | 'en-GB' | 'en-NZ' | 'en-IN' | 'et' | 'fi' | 'nl-BE' | 'fr' | 'fr-CA' | 'de' | 'de-CH' | 'el' | 'hi' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lv' | 'lt' | 'ms' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'pt-PT' | 'ro' | 'ru' | 'sk' | 'es' | 'es-419' | 'sv' | 'sv-SE' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'auto_detect' — Language to use for speech recognition with nova-2 model
        - `smart_format` boolean — Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.
        - `transcription_engine` 'Deepgram', required
        - `transcription_model` 'deepgram/nova-2', required
        - `utterance_end_ms` integer — Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
      - DeepgramNova3Config
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `keyterms` string[] — Nova-3 keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Nova-3-only; use `hints` on Nova-2.
        - `keywords_boosting` object — Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom": 2, "krieger": 1}`.
        - `language` 'en' | 'en-US' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'de' | 'nl' | 'sv' | 'sv-SE' | 'da' | 'da-DK' | 'es' | 'es-419' | 'fr' | 'fr-CA' | 'pt' | 'pt-BR' | 'pt-PT' | 'auto_detect' — Language to use for speech recognition with nova-3 model
        - `smart_format` boolean — Enable Deepgram's smart formatting (capitalization, punctuation, and digit normalization). Note: Telnyx defaults this to `true`, overriding Deepgram's underlying default of `false` — omit the field to get a smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.
        - `transcription_engine` 'Deepgram', required
        - `transcription_model` 'deepgram/nova-3', required
        - `utterance_end_ms` integer — Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
    - TranscriptionEngineAzureConfig
      - `api_key_ref` string — Reference to the API key for authentication. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. The parameter is optional as defaults are available for some regions.
      - `language` 'af' | 'am' | 'ar' | 'bg' | 'bn' | 'bs' | 'ca' | 'cs' | 'cy' | 'da' | 'de' | 'el' | 'en' | 'es' | 'et' | 'eu' | 'fa' | 'fi' | 'fr' | 'ga' | 'gl' | 'gu' | 'he' | 'hi' | 'hr' | 'hu' | 'hy' | 'id' | 'is' | 'it' | 'ja' | 'ka' | 'kk' | 'km' | 'kn' | 'ko' | 'lo' | 'lt' | 'lv' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'nb' | 'ne' | 'nl' | 'pl' | 'ps' | 'pt' | 'ro' | 'ru' | 'si' | 'sk' | 'sl' | 'so' | 'sq' | 'sr' | 'sv' | 'sw' | 'ta' | 'te' | 'th' | 'tr' | 'uk' | 'ur' | 'uz' | 'vi' | 'wuu' | 'yue' | 'zh' | 'zu' | 'auto' — Language to use for speech recognition
      - `region` 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2', required — Azure region to use for speech recognition
      - `transcription_engine` 'Azure', required — Engine identifier for Azure transcription service
    - TranscriptionEngineXaiConfig
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `language` 'ar' | 'cs' | 'da' | 'de' | 'en' | 'es' | 'fa' | 'fil' | 'fr' | 'hi' | 'id' | 'it' | 'ja' | 'ko' | 'mk' | 'ms' | 'nl' | 'pl' | 'pt' | 'ro' | 'ru' | 'sv' | 'th' | 'tr' | 'vi' — Language to use for speech recognition
      - `transcription_engine` 'xAI' — Engine identifier for xAI transcription service
      - `transcription_model` 'xai/grok-stt' — The model to use for transcription.
    - TranscriptionEngineAssemblyaiConfig
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `transcription_engine` 'AssemblyAI' — Engine identifier for AssemblyAI transcription service
      - `transcription_model` 'assemblyai/universal-streaming' — The model to use for transcription.
    - TranscriptionEngineSpeechmaticsConfig
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `language` 'en' | 'ba' | 'eu' | 'gl' | 'ga' | 'mt' | 'mn' | 'sw' | 'ug' | 'cy' | 'ar_en' | 'cmn_en' | 'en_ms' | 'en_ta' | 'tl' | 'es-bilingual-en' | 'cmn_en_ms_ta' — Language to use for speech recognition
      - `transcription_engine` 'Speechmatics' — Engine identifier for Speechmatics transcription service
      - `transcription_model` 'speechmatics/standard' — The model to use for transcription.
    - TranscriptionEngineSonioxConfig
      - `enable_endpoint_detection` boolean — When true, Soniox emits end-of-utterance events at the cadence configured by `max_endpoint_delay_ms`.
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `language` string — ISO 639-1 language hint (e.g. `en`, `es`), or `auto` to omit the hint and let Soniox auto-detect supported languages multilingually.
      - `max_endpoint_delay_ms` integer — Maximum silence (in milliseconds) before Soniox emits an end-of-utterance event. Only honored when `enable_endpoint_detection` is true. Range: 500-3000 ms.
      - `transcription_engine` 'Soniox', required — Engine identifier for Soniox transcription service
      - `transcription_model` 'soniox/stt-rt-v4' — The model to use for transcription.
    - TranscriptionEngineParakeetConfig
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `transcription_engine` 'Parakeet' — Engine identifier for Parakeet transcription service
      - `transcription_model` 'nvidia/parakeet-v3' — The model to use for transcription.
    - TranscriptionEngineHumainConfig
      - `language` 'ar' | 'en' | 'codeswitch' | 'auto' — The language of the audio to be transcribed. `codeswitch` enables Arabic/English code-switching. `auto` resolves server-side to code-switching.
      - `transcription_engine` 'Humain' — Engine identifier for Humain transcription service
      - `transcription_model` 'humain/realtime' — The model to use for transcription.
    - TranscriptionEngineReson8Config
      - `language` 'auto' | 'nl' | 'en' | 'fr' | 'fy' | 'de' | 'it' | 'pl' | 'pt' | 'es' | 'sv' — The language of the audio to be transcribed. `auto` (the default, also applied when `language` is omitted) enables automatic language detection.
      - `transcription_engine` 'Reson8' — Engine identifier for Reson8 transcription service
      - `transcription_model` 'reson8/turns' — The model to use for transcription.
    - TranscriptionEngineAConfig
      - `enable_speaker_diarization` boolean — Enables speaker diarization.
      - `hints` string[] — Hints to improve transcription accuracy.
      - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - `language` 'af' | 'sq' | 'am' | 'ar' | 'hy' | 'az' | 'eu' | 'bn' | 'bs' | 'bg' | 'my' | 'ca' | 'yue' | 'zh' | 'hr' | 'cs' | 'da' | 'nl' | 'en' | 'et' | 'fil' | 'fi' | 'fr' | 'gl' | 'ka' | 'de' | 'el' | 'gu' | 'iw' | 'hi' | 'hu' | 'is' | 'id' | 'it' | 'ja' | 'jv' | 'kn' | 'kk' | 'km' | 'ko' | 'lo' | 'lv' | 'lt' | 'mk' | 'ms' | 'ml' | 'mr' | 'mn' | 'ne' | 'no' | 'fa' | 'pl' | 'pt' | 'pa' | 'ro' | 'ru' | 'rw' | 'sr' | 'si' | 'sk' | 'sl' | 'ss' | 'st' | 'es' | 'su' | 'sw' | 'sv' | 'ta' | 'te' | 'th' | 'tn' | 'tr' | 'ts' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'xh' | 'zu' — Language to use for speech recognition
      - `max_speaker_count` integer — Defines maximum number of speakers in the conversation.
      - `min_speaker_count` integer — Defines minimum number of speakers in the conversation.
      - `model` 'latest_long' | 'latest_short' | 'command_and_search' | 'phone_call' | 'video' | 'default' | 'medical_conversation' | 'medical_dictation' — The model to use for transcription.
      - `profanity_filter` boolean — Enables profanity_filter.
      - `speech_context` object[] — Speech context to improve transcription accuracy.
        - `boost` number — Boost factor for the speech context.
        - `phrases` string[]
      - `transcription_engine` 'A' — Engine identifier for Google transcription service
      - `use_enhanced` boolean — Enables enhanced transcription, this works for models `phone_call` and `video`.
    - TranscriptionEngineBConfig
      - `language` 'en' | 'zh' | 'de' | 'es' | 'ru' | 'ko' | 'fr' | 'ja' | 'pt' | 'tr' | 'pl' | 'ca' | 'nl' | 'ar' | 'sv' | 'it' | 'id' | 'hi' | 'fi' | 'vi' | 'he' | 'uk' | 'el' | 'ms' | 'cs' | 'ro' | 'da' | 'hu' | 'ta' | 'no' | 'th' | 'ur' | 'hr' | 'bg' | 'lt' | 'la' | 'mi' | 'ml' | 'cy' | 'sk' | 'te' | 'fa' | 'lv' | 'bn' | 'sr' | 'az' | 'sl' | 'kn' | 'et' | 'mk' | 'br' | 'eu' | 'is' | 'hy' | 'ne' | 'mn' | 'bs' | 'kk' | 'sq' | 'sw' | 'gl' | 'mr' | 'pa' | 'si' | 'km' | 'sn' | 'yo' | 'so' | 'af' | 'oc' | 'ka' | 'be' | 'tg' | 'sd' | 'gu' | 'am' | 'yi' | 'lo' | 'uz' | 'fo' | 'ht' | 'ps' | 'tk' | 'nn' | 'mt' | 'sa' | 'lb' | 'my' | 'bo' | 'tl' | 'mg' | 'as' | 'tt' | 'haw' | 'ln' | 'ha' | 'ba' | 'jw' | 'su' | 'auto_detect' — Language to use for speech recognition
      - `transcription_engine` 'B' — Engine identifier for Telnyx transcription service
      - `transcription_model` 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo' — The model to use for transcription.
  - `transcription_tracks` string — Indicates which leg of the call will be transcribed. Use `inbound` for the leg that requested the transcription, `outbound` for the other leg, and `both` for both legs of the call. Will default to `inbound`.

## Response `200`

Successful response upon making a call control command.

- object
  - `data` CallControlCommandResult
    - `result` string

## Other responses

- `422` — Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations.
- `default` — Unexpected error

---

[API](https://skmtc.net/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.net/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api-2/revisions/ec31f78cf002/schema)
