---
title: "Start Conversation Relay"
method: POST
path: "/calls/{call_control_id}/actions/conversation_relay_start"
tags: ["Call Commands"]
---

# Start Conversation Relay

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

## Request

- Base URL: `https://api.telnyx.com/v2`
- URL: `https://api.telnyx.com/v2/calls/{call_control_id}/actions/conversation_relay_start`
- Auth: HTTP bearer

Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.

**Expected Webhooks:**

- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.

## Path parameters

- `call_control_id` string, required

## Request body

- ConversationRelayStartRequest: Start a Conversation Relay session. A WebSocket URL is required: provide it as `url`, `conversation_relay_url`, or `conversation_relay_settings.url`; top-level values take precedence over nested settings. Use `transcription_engine` and `transcription_engine_config` for speech-to-text configuration; the `transcription` object is not supported.
  - `conversation_relay_settings` ConversationRelaySettings: Conversation Relay connection settings. This object can provide `url`, `dtmf_detection`, `interruptible`, `interruptible_greeting`, and `languages`. Top-level aliases override nested values when both are present.
    - `url` string, required: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
    - `dtmf_detection` boolean: Whether to enable DTMF detection during the relay session.
    - `interruptible` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
    - `interruptible_greeting` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
    - `languages` ConversationRelayLanguage[]: Language-specific TTS and transcription settings.
      - `language` string, required: BCP 47 language tag for this language configuration.
      - `tts_provider` string: Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.
      - `voice` string: Voice identifier for this language.
      - `voice_settings` union: The settings associated with the voice selected
        - ElevenLabsVoiceSettings
          - `type` 'elevenlabs', required: Voice settings provider type
          - `api_key_ref` string: The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.
        - TelnyxVoiceSettings
          - `type` 'telnyx', required: Voice settings provider type
          - `voice_speed` number, float: The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.
        - AWSVoiceSettings
          - `type` 'aws', required: Voice settings provider type
        - MinimaxVoiceSettings
          - `type` 'minimax', required: Voice settings provider type
          - `speed` number, float: Speech speed multiplier. Default is 1.0.
          - `vol` number, float: Speech volume multiplier. Default is 1.0.
          - `pitch` integer: Voice pitch adjustment. Default is 0.
          - `language_boost` 'null' | 'auto' | 'Chinese' | 'Chinese,Yue' | 'English' | 'Arabic' | 'Russian' | 'Spanish' | 'French' | 'Portuguese' | 'German' | 'Turkish' | 'Dutch' | 'Ukrainian' | 'Vietnamese' | 'Indonesian' | 'Japanese' | 'Italian' | 'Korean' | 'Thai' | 'Polish' | 'Romanian' | 'Greek' | 'Czech' | 'Finnish' | 'Hindi' | 'Bulgarian' | 'Danish' | 'Hebrew' | 'Malay' | 'Persian' | 'Slovak' | 'Swedish' | 'Croatian' | 'Filipino' | 'Hungarian' | 'Norwegian' | 'Slovenian' | 'Catalan' | 'Nynorsk' | 'Tamil' | 'Afrikaans', nullable: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.
        - AzureVoiceSettings
          - `type` 'azure', required: Voice settings provider type
          - `api_key_ref` string: The `identifier` for an integration secret that refers to your Azure Speech API key.
          - `region` string: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.
          - `deployment_id` string: The deployment ID for a custom Azure neural voice.
          - `effect` 'eq_car' | 'eq_telecomhp8k': Audio effect to apply.
          - `gender` 'Male' | 'Female': Voice gender filter.
        - ResembleVoiceSettings
          - `type` 'resemble', required: Voice settings provider type
          - `precision` 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW': Audio precision format.
          - `sample_rate` '8000' | '16000' | '22050' | '32000' | '44100' | '48000': Audio sample rate in Hz.
          - `format` 'wav' | 'mp3': Output audio format.
        - InworldVoiceSettings
          - `type` 'inworld', required: Voice settings provider type
          - `delivery_mode` 'STABLE' | 'BALANCED' | 'CREATIVE': Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.
        - XAIVoiceSettings
          - `type` 'xai', required: Voice settings provider type
          - `language` string: Language code, or `auto` to detect automatically.
        - SonioxVoiceSettings
          - `type` 'soniox', required: Voice settings provider type
          - `speed` number, float: Speaking rate. 1.0 is normal speed.
          - `reduce_silence` boolean: Shortens the pauses between words.
      - `transcription_engine` 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'Speechmatics' | 'Soniox' | 'A' | 'B': Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.
      - `transcription_engine_config` ConversationRelayTranscriptionEngineConfig: Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.
        - `interim_results` boolean: Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.
        - `eot_threshold` number: Deepgram Flux: confidence required to end the caller's turn.
        - `eager_eot_threshold` number: Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.
      - `transcription_provider` string: Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.
      - `speech_model` string: Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.
  - `url` string: Public alias for `conversation_relay_url`. Must start with `ws://` or `wss://`. If both are present, this value wins.
  - `dtmf_detection` boolean: Public alias for `conversation_relay_dtmf_detection`. If both are present, this value wins.
  - `conversation_relay_url` string: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
  - `conversation_relay_dtmf_detection` boolean: Enable DTMF detection for the relay session.
  - `voice` string: The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices. **Supported Providers:** - **AWS:** Use `AWS.Polly.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility. - **Azure:** Use `Azure.<VoiceId>` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-CA-LiamNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery). - **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `"voice_settings": {"api_key_ref": "<secret_id>"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices). - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>` - **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. - **Fish Audio:** Use `FishAudio.<ModelId>.<VoiceId>` (e.g., `FishAudio.s2.1-pro.<reference_id>`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library reference ID. - **Soniox:** Use `Soniox.<ModelId>.<VoiceId>` (e.g., `Soniox.tts-rt-v2.Emma`). Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices). Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`. - **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`. - **Humain:** Use `Humain.<VoiceId>` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`, `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.
  - `voice_settings` union: The settings associated with the voice selected
    - ElevenLabsVoiceSettings
      - `type` 'elevenlabs', required: Voice settings provider type
      - `api_key_ref` string: The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.
    - TelnyxVoiceSettings
      - `type` 'telnyx', required: Voice settings provider type
      - `voice_speed` number, float: The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.
    - AWSVoiceSettings
      - `type` 'aws', required: Voice settings provider type
    - MinimaxVoiceSettings
      - `type` 'minimax', required: Voice settings provider type
      - `speed` number, float: Speech speed multiplier. Default is 1.0.
      - `vol` number, float: Speech volume multiplier. Default is 1.0.
      - `pitch` integer: Voice pitch adjustment. Default is 0.
      - `language_boost` 'null' | 'auto' | 'Chinese' | 'Chinese,Yue' | 'English' | 'Arabic' | 'Russian' | 'Spanish' | 'French' | 'Portuguese' | 'German' | 'Turkish' | 'Dutch' | 'Ukrainian' | 'Vietnamese' | 'Indonesian' | 'Japanese' | 'Italian' | 'Korean' | 'Thai' | 'Polish' | 'Romanian' | 'Greek' | 'Czech' | 'Finnish' | 'Hindi' | 'Bulgarian' | 'Danish' | 'Hebrew' | 'Malay' | 'Persian' | 'Slovak' | 'Swedish' | 'Croatian' | 'Filipino' | 'Hungarian' | 'Norwegian' | 'Slovenian' | 'Catalan' | 'Nynorsk' | 'Tamil' | 'Afrikaans', nullable: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.
    - AzureVoiceSettings
      - `type` 'azure', required: Voice settings provider type
      - `api_key_ref` string: The `identifier` for an integration secret that refers to your Azure Speech API key.
      - `region` string: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.
      - `deployment_id` string: The deployment ID for a custom Azure neural voice.
      - `effect` 'eq_car' | 'eq_telecomhp8k': Audio effect to apply.
      - `gender` 'Male' | 'Female': Voice gender filter.
    - ResembleVoiceSettings
      - `type` 'resemble', required: Voice settings provider type
      - `precision` 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW': Audio precision format.
      - `sample_rate` '8000' | '16000' | '22050' | '32000' | '44100' | '48000': Audio sample rate in Hz.
      - `format` 'wav' | 'mp3': Output audio format.
    - InworldVoiceSettings
      - `type` 'inworld', required: Voice settings provider type
      - `delivery_mode` 'STABLE' | 'BALANCED' | 'CREATIVE': Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.
    - XAIVoiceSettings
      - `type` 'xai', required: Voice settings provider type
      - `language` string: Language code, or `auto` to detect automatically.
    - SonioxVoiceSettings
      - `type` 'soniox', required: Voice settings provider type
      - `speed` number, float: Speaking rate. 1.0 is normal speed.
      - `reduce_silence` boolean: Shortens the pauses between words.
  - `greeting` string: Text played when the relay session starts.
  - `language` string: Default language for the relay session. This value is used for both text-to-speech and speech recognition.
  - `languages` ConversationRelayLanguage[]: Per-language TTS and transcription settings.
    - `language` string, required: BCP 47 language tag for this language configuration.
    - `tts_provider` string: Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider from the voice identifier.
    - `voice` string: Voice identifier for this language.
    - `voice_settings` union: The settings associated with the voice selected
      - ElevenLabsVoiceSettings
        - `type` 'elevenlabs', required: Voice settings provider type
        - `api_key_ref` string: The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.
      - TelnyxVoiceSettings
        - `type` 'telnyx', required: Voice settings provider type
        - `voice_speed` number, float: The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.
      - AWSVoiceSettings
        - `type` 'aws', required: Voice settings provider type
      - MinimaxVoiceSettings
        - `type` 'minimax', required: Voice settings provider type
        - `speed` number, float: Speech speed multiplier. Default is 1.0.
        - `vol` number, float: Speech volume multiplier. Default is 1.0.
        - `pitch` integer: Voice pitch adjustment. Default is 0.
        - `language_boost` 'null' | 'auto' | 'Chinese' | 'Chinese,Yue' | 'English' | 'Arabic' | 'Russian' | 'Spanish' | 'French' | 'Portuguese' | 'German' | 'Turkish' | 'Dutch' | 'Ukrainian' | 'Vietnamese' | 'Indonesian' | 'Japanese' | 'Italian' | 'Korean' | 'Thai' | 'Polish' | 'Romanian' | 'Greek' | 'Czech' | 'Finnish' | 'Hindi' | 'Bulgarian' | 'Danish' | 'Hebrew' | 'Malay' | 'Persian' | 'Slovak' | 'Swedish' | 'Croatian' | 'Filipino' | 'Hungarian' | 'Norwegian' | 'Slovenian' | 'Catalan' | 'Nynorsk' | 'Tamil' | 'Afrikaans', nullable: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection.
      - AzureVoiceSettings
        - `type` 'azure', required: Voice settings provider type
        - `api_key_ref` string: The `identifier` for an integration secret that refers to your Azure Speech API key.
        - `region` string: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key.
        - `deployment_id` string: The deployment ID for a custom Azure neural voice.
        - `effect` 'eq_car' | 'eq_telecomhp8k': Audio effect to apply.
        - `gender` 'Male' | 'Female': Voice gender filter.
      - ResembleVoiceSettings
        - `type` 'resemble', required: Voice settings provider type
        - `precision` 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW': Audio precision format.
        - `sample_rate` '8000' | '16000' | '22050' | '32000' | '44100' | '48000': Audio sample rate in Hz.
        - `format` 'wav' | 'mp3': Output audio format.
      - InworldVoiceSettings
        - `type` 'inworld', required: Voice settings provider type
        - `delivery_mode` 'STABLE' | 'BALANCED' | 'CREATIVE': Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE` favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between. Optional and only supported by `TTS2`; when omitted, the provider default applies.
      - XAIVoiceSettings
        - `type` 'xai', required: Voice settings provider type
        - `language` string: Language code, or `auto` to detect automatically.
      - SonioxVoiceSettings
        - `type` 'soniox', required: Voice settings provider type
        - `speed` number, float: Speaking rate. 1.0 is normal speed.
        - `reduce_silence` boolean: Shortens the pauses between words.
    - `transcription_engine` 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'Speechmatics' | 'Soniox' | 'A' | 'B': Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider` and `speech_model` for that language.
    - `transcription_engine_config` ConversationRelayTranscriptionEngineConfig: Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.
      - `interim_results` boolean: Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.
      - `eot_threshold` number: Deepgram Flux: confidence required to end the caller's turn.
      - `eager_eot_threshold` number: Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.
    - `transcription_provider` string: Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.
    - `speech_model` string: Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring speech-to-text.
  - `interruption_settings` ConversationRelayInterruptionSettings: Settings for handling caller interruptions during Conversation Relay speech.
    - `enable` boolean: Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.
    - `interruptible` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
    - `interruptible_greeting` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
    - `welcome_greeting_interruptible` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
  - `transcription` object: Not supported for Conversation Relay start requests. Use `transcription_engine` and `transcription_engine_config` instead.
  - `assistant` ConversationRelayAssistant: Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session.
    - `dynamic_variables` object: Custom key-value parameters forwarded to the Conversation Relay session.
  - `client_state` string: Use this field to add state to subsequent webhooks. 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`.
  - `tts_provider` string: Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.
  - `provider` string: Structured voice provider. Must be supplied together with `structured_provider`.
  - `structured_provider` ConversationRelayStructuredProvider: Provider-specific structured voice settings. Must be supplied together with `provider`; Telnyx sends the value as the nested provider configuration for Conversation Relay.
  - `transcription_engine` 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'Speechmatics' | 'Soniox' | 'A' | 'B': Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription` object is not supported.
  - `transcription_engine_config` ConversationRelayTranscriptionEngineConfig: Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold` and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your WebSocket server.
    - `interim_results` boolean: Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.
    - `eot_threshold` number: Deepgram Flux: confidence required to end the caller's turn.
    - `eager_eot_threshold` number: Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.
  - `interruptible` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
  - `interruptible_greeting` 'none' | 'any' | 'speech' | 'dtmf': Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
  - `custom_parameters` object: Custom key-value parameters forwarded to the relay session as `assistant.dynamic_variables`. If `assistant.dynamic_variables` is also present, these values are merged in.

## Response `200`

Successful response upon starting Conversation Relay.

- object
  - `data` CallControlCommandResultWithConversationRelayId
    - `result` string
    - `conversation_relay_id` string: The ID of the Conversation Relay session created by the command.

## 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

## Changes

> 152 revisions in range; 1 not diffed.

- **2026-10-15** `da303e40b51e`: 2 breaking, 9 info
  - added `subschema #1` to the request body `allOf` list
  - removed `subschema #1, subschema #2, subschema #3` from the request body `anyOf` list
  - added the new optional request property `conversation_relay_settings/languages/items/transcription_engine_config/eager_eot_threshold`
  - added the new optional request property `conversation_relay_settings/languages/items/transcription_engine_config/eot_threshold`
  - …7 more
- **2026-09-25** `d8b8159753ee`: 6 info
  - added `soniox` discriminator mapping keys to the `conversation_relay_settings/languages/items/voice_settings` request property
  - added `soniox` discriminator mapping keys to the `languages/items/voice_settings` request property
  - added `soniox` discriminator mapping keys to the `voice_settings` request property
  - added `#/components/schemas/SonioxVoiceSettings` to the `conversation_relay_settings/languages/items/voice_settings` request property `oneOf` list
  - …2 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/calls/:call_control_id/actions/conversation_relay_start/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api-2.md) - [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/llms.txt) - [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/revisions/f82938f53ff4?raw)
