---
title: "Start AI Assistant"
method: POST
path: "/calls/{call_control_id}/actions/ai_assistant_start"
tags: ["Call Commands"]
---

# Start AI Assistant

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

## Request

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

Start an AI assistant on the call.

**Expected Webhooks:**

- [`call.conversation.created`](/api-reference/callbacks/call-conversation-created) includes `conversation_id` during startup
- `call.conversation.ended`
- `call.conversation_insights.generated`

## Path parameters

- `call_control_id` string, required

## Request body

- AIAssistantStartRequest
  - `assistant` CallAssistantRequest: AI Assistant configuration and per-call overrides. All fields except `id` are optional. Omitted assistant fields use the stored configuration. Supplied `voice_settings` and `transcription` objects replace their stored objects rather than merging individual settings; include every setting you want to retain. `dynamic_variables` are merged, with request values taking precedence.
    - `id` string, required: The identifier of the AI assistant to use.
    - `model` string: LLM model override for this call. If omitted, the assistant's configured model is used.
    - `name` string: Assistant name override for this call.
    - `instructions` string: System instructions for the voice assistant. Can be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). This will overwrite the instructions set in the assistant configuration.
    - `greeting` string: Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.
    - `voice_settings` VoiceSettings
      - `voice` string, required: The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API. To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart). The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.
      - `voice_speed` number: The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected by the synthesis engine.
      - `api_key_ref` string: The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.
      - `temperature` number: Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.
      - `similarity_boost` number: Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.
      - `use_speaker_boost` boolean: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.
      - `style` number: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.
      - `speed` number: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.
      - `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. Only applicable when using MiniMax voices.
      - `expressive_mode` boolean: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.
      - `background_audio` union: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.
        - object
          - `type` 'predefined_media', required: Select from predefined media options.
          - `value` 'silence' | 'office', required: The predefined media to use. `silence` disables background audio.
          - `volume` number: Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments.
        - object
          - `type` 'media_url', required: Provide a direct URL to an MP3 file. The audio will loop during the call.
          - `value` string, uri, required: HTTPS URL to an MP3 file.
        - object
          - `type` 'media_name', required: Reference a previously uploaded media by its name from Telnyx Media Storage.
          - `value` string, required: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage). The audio will loop during the call.
    - `transcription` TranscriptionConfig: The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field.
      - `model` 'deepgram/flux' | 'flux' | 'deepgram/nova-3' | 'deepgram/nova-2' | 'speechmatics/standard' | 'speechmatics/enhanced' | 'speechmatics/linden-1' | 'assemblyai/universal-3-5-pro' | 'assemblyai/universal-streaming' | 'xai/grok-stt' | 'soniox/stt-rt-v4' | 'nvidia/parakeet-v3' | 'omi-health/omi-med-stt-v1' | 'humain/realtime' | 'reson8/turns' | 'cohere/ar-stt' | 'azure/fast' | 'azure/realtime' | 'google/latest_long' | 'distil-whisper/distil-large-v2' | 'openai/whisper-large-v3-turbo': The speech to text model to be used by the voice assistant. Supported models include: - `deepgram/flux` (or `flux`) for live streaming turn-taking. - `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription. - `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription. - `speechmatics/linden-1` (preview, vendor-hosted) for live streaming transcription; no auto-detect, so set `language` from Speechmatics' Realtime language list (defaults to `en`). - `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model. - `xai/grok-stt` for live streaming transcription. - `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection. - `nvidia/parakeet-v3` for multilingual transcription with automatic language detection. - `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based). - `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support. - `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection. - `cohere/ar-stt` for non-streaming Arabic and English transcription. - `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`. - `google/latest_long` for non-streaming multilingual transcription. - `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription. - `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.
      - `language` string: The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-5-pro` (and its legacy alias `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; ISO 639-1 codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted. For `speechmatics/linden-1`, there is no auto-detect; set a code from Speechmatics' Realtime language list (see `SpeechmaticsTranscriptionLanguage`); unset defaults to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected (unlike `speechmatics/standard`, which defaults to `en`).
    - `tools` union[]: Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.
      - union
        - BookAppointmentTool
          - `type` 'book_appointment', required
          - `book_appointment` BookAppointmentToolParams, required
            - `event_type_id` integer, required: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-event-type-id)
            - `api_key_ref` string, required: Reference to an integration secret that contains your Cal.com API key. You would pass 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 Cal.com API key.
            - `attendee_name` string: The name of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-name). If not provided, the assistant will ask for the attendee's name.
            - `attendee_timezone` string: The timezone of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-timezone). If not provided, the assistant will ask for the attendee's timezone.
        - CheckAvailabilityTool
          - `type` 'check_availability', required
          - `check_availability` CheckAvailabilityToolParams, required
            - `event_type_id` integer, required: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/slots/get-available-slots#parameter-event-type-id)
            - `api_key_ref` string, required: Reference to an integration secret that contains your Cal.com API key. You would pass 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 Cal.com API key.
        - WebhookTool
          - `type` 'webhook', required
          - `timeout_ms` integer: The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted. Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is not applied, and the tool runs at this default instead.
          - `webhook` CallControlWebhookToolParams, required
            - `name` string, required: The name of the tool.
            - `description` string, required: The description of the tool.
            - `url` string, required: The URL of the external tool to be called. This URL is going to be used by the assistant. The URL can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will be provided by the assistant if `path_parameters` are provided with the `id` attribute.
            - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH': The HTTP method to be used when calling the external tool.
            - `headers` object[]: The headers to be sent to the external tool.
              - …
            - `body_parameters` object: The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format
              - …
            - `path_parameters` object: The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format
              - …
            - `query_parameters` object: The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format
              - …
        - HangupTool
          - `type` 'hangup', required
          - `hangup` HangupToolParams, required
            - `description` string: The description of the function that will be passed to the assistant.
        - TransferTool
          - `type` 'transfer', required
          - `transfer` CallControlTransferToolParams, required
            - `targets` union, required: The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime.
              - …
            - `from` string, required: Number or SIP URI placing the call.
        - CallControlRetrievalTool
          - `type` 'retrieval', required
          - `retrieval` CallControlBucketIds, required
            - `bucket_ids` string[], required
            - `max_num_results` integer: The maximum number of results to retrieve as context for the language model.
    - `llm_api_key_ref` string: Integration secret identifier for the LLM provider API key. Use this field to reference an [integration secret](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) containing your LLM provider API key. Supports any LLM provider (OpenAI, Anthropic, etc.).
    - `openai_api_key_ref` string: Deprecated — use `llm_api_key_ref` instead. Integration secret identifier for the OpenAI API key. This field is maintained for backward compatibility; `llm_api_key_ref` is the canonical field name and supports all LLM providers.
    - `dynamic_variables` object: Map of dynamic variables and their default values. Dynamic variables can be referenced in instructions, greeting, and tool definitions using the `{{variable_name}}` syntax. Call-control-agent automatically merges in `telnyx_call_*` variables (telnyx_call_to, telnyx_call_from, telnyx_conversation_channel, telnyx_agent_target, telnyx_end_user_target, telnyx_call_caller_id_name) and custom header variables.
    - `fallback_config` object: Fallback LLM configuration used when the primary LLM provider is unavailable.
      - `model` string: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.
      - `llm_api_key_ref` string: Integration secret identifier for the fallback model API key.
      - `external_llm` object: External LLM fallback configuration.
        - `model` string: Model identifier to use with the external LLM endpoint.
        - `base_url` string: Base URL for the external LLM endpoint.
        - `llm_api_key_ref` string: Integration secret identifier for the external LLM API key.
        - `authentication_method` 'token' | 'certificate': Authentication method used when connecting to the external LLM endpoint.
        - `certificate_ref` string: Integration secret identifier for the client certificate used with certificate authentication.
        - `token_retrieval_url` string: URL used to retrieve an access token when certificate authentication is enabled.
        - `forward_metadata` boolean: When enabled, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.
    - `external_llm` object: External LLM configuration for bringing your own LLM endpoint.
      - `model` string: Model identifier to use with the external LLM endpoint.
      - `base_url` string: Base URL for the external LLM endpoint.
      - `llm_api_key_ref` string: Integration secret identifier for the external LLM API key.
      - `authentication_method` 'token' | 'certificate': Authentication method used when connecting to the external LLM endpoint.
      - `certificate_ref` string: Integration secret identifier for the client certificate used with certificate authentication.
      - `token_retrieval_url` string: URL used to retrieve an access token when certificate authentication is enabled.
      - `forward_metadata` boolean: When enabled, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint. Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.
    - `mcp_servers` object[]: MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.
    - `observability_settings` object: Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.
  - `greeting` string: Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.
  - `interruption_settings` InterruptionSettings: Settings for handling user interruptions during assistant speech
    - `enable` boolean: When true, allows users to interrupt the assistant while speaking
  - `transcription` TranscriptionConfig: The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field.
    - `model` 'deepgram/flux' | 'flux' | 'deepgram/nova-3' | 'deepgram/nova-2' | 'speechmatics/standard' | 'speechmatics/enhanced' | 'speechmatics/linden-1' | 'assemblyai/universal-3-5-pro' | 'assemblyai/universal-streaming' | 'xai/grok-stt' | 'soniox/stt-rt-v4' | 'nvidia/parakeet-v3' | 'omi-health/omi-med-stt-v1' | 'humain/realtime' | 'reson8/turns' | 'cohere/ar-stt' | 'azure/fast' | 'azure/realtime' | 'google/latest_long' | 'distil-whisper/distil-large-v2' | 'openai/whisper-large-v3-turbo': The speech to text model to be used by the voice assistant. Supported models include: - `deepgram/flux` (or `flux`) for live streaming turn-taking. - `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription. - `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription. - `speechmatics/linden-1` (preview, vendor-hosted) for live streaming transcription; no auto-detect, so set `language` from Speechmatics' Realtime language list (defaults to `en`). - `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model. - `xai/grok-stt` for live streaming transcription. - `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection. - `nvidia/parakeet-v3` for multilingual transcription with automatic language detection. - `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based). - `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support. - `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection. - `cohere/ar-stt` for non-streaming Arabic and English transcription. - `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`. - `google/latest_long` for non-streaming multilingual transcription. - `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription. - `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.
    - `language` string: The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language. For `assemblyai/universal-3-5-pro` (and its legacy alias `assemblyai/universal-streaming`), `auto` (or unset) enables native multilingual code-switching; ISO 639-1 codes (`en`, `es`, `de`, `fr`, `pt`, `it`, `tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`) bias the session to that language. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language` is omitted. For `speechmatics/linden-1`, there is no auto-detect; set a code from Speechmatics' Realtime language list (see `SpeechmaticsTranscriptionLanguage`); unset defaults to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected (unlike `speechmatics/standard`, which defaults to `en`).
  - `message_history` union[]: A list of messages to seed the conversation history before the assistant starts. Follows the same message format as the `ai_assistant_add_messages` command.
    - union
      - UserMessage: Messages sent by an end user
        - `role` 'user', required: The role of the messages author, in this case `user`.
        - `content` string, required: The contents of the user message.
        - `metadata` MessageMetadata: Metadata to add to the message
      - AssistantMessage: Messages sent by the model in response to user messages.
        - `role` 'assistant', required: The role of the messages author, in this case `assistant`.
        - `content` string: The contents of the assistant message. Required unless `tool_calls`
        - `tool_calls` ToolCall[]: The tool calls generated by the model, such as function calls.
          - `id` string, required: The ID of the tool call.
          - `type` 'function', required: The type of the tool. Currently, only `function` is supported.
          - `function` object, required: The function that the model called.
            - `name` string, required: The name of the function to call.
        - `metadata` MessageMetadata: Metadata to add to the message
      - ToolMessage
        - `role` 'tool', required: The role of the messages author, in this case `tool`.
        - `content` string, required: The contents of the tool message.
        - `tool_call_id` string, required: Tool call that this message is responding to.
        - `metadata` MessageMetadata: Metadata to add to the message
      - SystemMessage: Developer-provided instructions that the model should follow, regardless of messages sent by the user.
        - `role` 'system', required: The role of the messages author, in this case `system`.
        - `content` string, required: The contents of the system message.
        - `metadata` MessageMetadata: Metadata to add to the message
      - DeveloperMessage: Developer-provided instructions that the model should follow, regardless of messages sent by the user.
        - `role` 'developer', required: The role of the messages author, in this case developer.
        - `content` string, required: The contents of the developer message.
        - `metadata` MessageMetadata: Metadata to add to the message
  - `send_message_history_updates` boolean: When `true`, a `call.ai_gather.message_history_updated` webhook carrying the full message history is sent each time the conversation message history is updated. The assistant's own `telephony_settings.send_message_history_updates` overrides this value when it is set.
  - `participants` AIAssistantJoinParticipant[]: A list of participants to add to the conversation when it starts.
    - `id` string, required: The call_control_id of the participant to add to the conversation.
    - `role` 'user', required: The role of the participant in the conversation.
    - `name` string: Display name for the participant.
    - `on_hangup` 'continue_conversation' | 'end_conversation': Determines what happens to the conversation when this participant hangs up.
  - `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`.

## Response `200`

Successful response upon making a call control command that includes conversation_id.

- object
  - `data` CallControlCommandResultWithConversationId
    - `result` string
    - `conversation_id` string, uuid: The ID of the conversation 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-21** `279d149de88f`: 2 info
  - added the new `speechmatics/linden-1` enum value to the request property `assistant/transcription/model`
  - added the new `speechmatics/linden-1` enum value to the request property `transcription/model`
- **2026-10-21** `bf888fe6e3fb`: 2 warning
  - removed the request property `voice`
  - removed the request property `voice_settings`
- **2026-10-21** `6c91adf9fc1d`: 2 info
  - added the new optional request property `voice`
  - added the new optional request property `voice_settings`
- **2026-10-01** `3957c3463375`: 1 info
  - added the new optional request property `assistant/transcription`
- **2026-09-25** `88a6ea092777`: 1 info
  - added the new optional request property `assistant/tools/items/oneOf[subschema #3: WebhookTool]/timeout_ms`

[Operation history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/calls/:call_control_id/actions/ai_assistant_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)
