---
title: "Dial"
method: POST
path: "/calls"
tags: ["Call Commands"]
---

# Dial

`POST /calls`

Dial a number or SIP URI from a given connection. A successful response will include a `call_leg_id` which can be used to correlate the command with subsequent webhooks.

**Expected Webhooks:**

- `call.initiated`
- `call.answered` or `call.hangup`
- `call.hold` and `call.unhold` if the call is held/unheld
- `call.machine.detection.ended` if `answering_machine_detection` was requested
- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting
- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested
- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected
- `call.deepfake_detection.result` if `deepfake_detection` was enabled
- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred
- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set

When the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.

## Request body

- CallRequest
  - `assistant` CallAssistantRequest — AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.
    - `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.
    - `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
          - `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.
  - `conversation_relay_config` ConversationRelayEmbeddedConfig — Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on `answer` and `dial`. It uses public field names (`url`, `dtmf_detection`, `greeting`, `voice`, `language`, etc.) and maps them to the underlying Conversation Relay action. `client_state`, `tts_language`, and `transcription_language` inside this object are ignored; use the parent command's `client_state` and `command_id` fields instead.
    - `url` string, required — WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
    - `dtmf_detection` boolean — Enable DTMF detection for the relay session.
    - `greeting` string — Text played when the relay session starts.
    - `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`. - **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.
    - `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. The voice speed must be between 0.1 and 2.0. Default value is 1.0.
      - 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.
      - RimeVoiceSettings
        - `type` 'rime', required — Voice settings provider type
        - `voice_speed` number, float — Speech speed multiplier. Default is 1.0.
      - 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.
    - `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.
    - `language` string — Default language 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. The voice speed must be between 0.1 and 2.0. Default value is 1.0.
        - 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.
        - RimeVoiceSettings
          - `type` 'rime', required — Voice settings provider type
          - `voice_speed` number, float — Speech speed multiplier. Default is 1.0.
        - 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.
      - `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.
      - `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.
    - `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.
    - `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_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.
    - `custom_parameters` object — Custom key-value parameters forwarded to the relay session as assistant dynamic variables.
  - `to` union, required — The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings. For SIP URI destinations, append `;secure=true` or `;secure=srtp` to enable SRTP media encryption for that endpoint, or `;secure=dtls` to enable DTLS media encryption for that endpoint. If `media_encryption` is set to `SRTP` or `DTLS`, it takes precedence over any per-endpoint `secure` URI parameter. For a single string destination, you may append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits as DTMF once the called party answers — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer` parameter takes precedence. This shorthand is not supported when `to` is an array.
    - string
    - string[]
  - `from` string, required — The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format.
  - `from_display_name` string — The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from` field.
  - `privacy` 'id' | 'none' — Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally.
  - `connection_id` string, required — The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.
  - `audio_url` string — The URL of a file to be played back to the callee when the call is answered. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request.
  - `send_digits_on_answer` string — DTMF digits to send automatically after the called party answers. Useful for reaching an extension behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent. May also be supplied inline by appending `,<digits>` to `to` (e.g. `to=+18004247767,200`); if both forms are present, this explicit field takes precedence.
  - `media_name` string — The media_name of a file to be played back to the callee when the call is answered. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
  - `preferred_codecs` string — The list of comma-separated codecs in a preferred order for the forked media to be received.
  - `timeout_secs` integer — The number of seconds that Telnyx will wait for the call to be answered by the destination to which it is being called. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds.
  - `time_limit_secs` integer — Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length.
  - `answering_machine_detection` 'premium' | 'detect' | 'detect_beep' | 'detect_words' | 'greeting_end' | 'disabled' — Enables Answering Machine Detection. Telnyx offers Premium and Standard detections. With Premium detection, when a call is answered, Telnyx runs real-time detection and sends a `call.machine.premium.detection.ended` webhook with one of the following results: `human_residence`, `human_business`, `machine`, `silence` or `fax_detected`. If we detect a beep, we also send a `call.machine.premium.greeting.ended` webhook with the result of `beep_detected`. If we detect a beep before `call.machine.premium.detection.ended` we only send `call.machine.premium.greeting.ended`, and if we detect a beep after `call.machine.premium.detection.ended`, we send both webhooks. With Standard detection, when a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine and sends an `call.machine.detection.ended` webhook with the analysis result. If `greeting_end` or `detect_words` is used and a `machine` is detected, you will receive another `call.machine.greeting.ended` webhook when the answering machine greeting ends with a beep or silence. If `detect_beep` is used, you will only receive `call.machine.greeting.ended` if a beep is detected.
  - `answering_machine_detection_config` object — Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis` and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection.
    - `total_analysis_time_millis` integer — Maximum timeout threshold for overall detection.
    - `after_greeting_silence_millis` integer — Silence duration threshold after a greeting message or voice for it be considered human.
    - `between_words_silence_millis` integer — Maximum threshold for silence between words.
    - `greeting_duration_millis` integer — Maximum threshold of a human greeting. If greeting longer than this value, considered machine.
    - `initial_silence_millis` integer — If initial silence duration is greater than this value, consider it a machine.
    - `maximum_number_of_words` integer — If number of detected words is greater than this value, consder it a machine.
    - `maximum_word_length_millis` integer — If a single word lasts longer than this threshold, consider it a machine.
    - `silence_threshold` integer — Minimum noise threshold for any analysis.
    - `greeting_total_analysis_time_millis` integer — If machine already detected, maximum timeout threshold to determine the end of the machine greeting.
    - `greeting_silence_duration_millis` integer — If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended.
  - `deepfake_detection` object — Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a detection service that analyzes whether the voice is AI-generated. Results are delivered via the `call.deepfake_detection.result` webhook.
    - `enabled` boolean, required — Whether deepfake detection is enabled.
    - `timeout` integer — Maximum time in seconds to wait for a detection result before timing out.
    - `rtp_timeout` integer — Maximum time in seconds to wait for RTP audio before timing out. If no audio is received within this window, detection stops with an error.
  - `conference_config` object — Optional configuration parameters to dial new participant into a conference.
    - `id` string, uuid — Conference ID to be joined
    - `conference_name` string — Conference name to be joined
    - `early_media` boolean — Controls the moment when dialled call is joined into conference. If set to `true` user will be joined as soon as media is available (ringback). If `false` user will be joined when call is answered. Defaults to `true`
    - `end_conference_on_exit` boolean — Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to "false".
    - `soft_end_conference_on_exit` boolean — Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to "false".
    - `hold` boolean — Whether the participant should be put on hold immediately after joining the conference. Defaults to "false".
    - `hold_audio_url` string — The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true".
    - `hold_media_name` string — The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false". This property takes effect only if "hold" is set to "true".
    - `mute` boolean — Whether the participant should be muted immediately after joining the conference. Defaults to "false".
    - `start_conference_on_enter` boolean — Whether the conference should be started after the participant joins the conference. Defaults to "false".
    - `start_conference_on_create` boolean — Whether the conference should be started on creation. If the conference isn't started all participants that join are automatically put on hold. Defaults to "true".
    - `supervisor_role` 'barge' | 'monitor' | 'none' | 'whisper' — Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. "barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor" means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids" can hear the supervisor. Defaults to "none".
    - `whisper_call_control_ids` string[] — Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only.
    - `beep_enabled` 'always' | 'never' | 'on_enter' | 'on_exit' — Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting.
  - `custom_headers` CustomSipHeader[] — Custom headers to be added to the SIP INVITE.
    - `name` string, required — The name of the header to add.
    - `value` string, required — The value of the header.
  - `billing_group_id` string, uuid — Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.
  - `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 others Dial commands with the same `command_id`.
  - `link_to` string — Use another call's control id for sharing the same call session id
  - `bridge_intent` boolean — Indicates the intent to bridge this call with the call specified in link_to. When bridge_intent is true, link_to becomes required and the from number will be overwritten by the from number from the linked call.
  - `bridge_on_answer` boolean — Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required.
  - `prevent_double_bridge` boolean — Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.
  - `park_after_unbridge` string — If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior is to hang up the leg. When park_after_unbridge is set, link_to becomes required.
  - `media_encryption` 'disabled' | 'SRTP' | 'DTLS' — Defines whether media should be encrypted on the call. For SIP URI destinations, media encryption can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP, and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint `secure` value.
  - `sip_auth_username` string — SIP Authentication username used for SIP challenges.
  - `sip_auth_password` string — SIP Authentication password used for SIP challenges.
  - `sip_headers` SipHeader[] — SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.
    - `name` 'User-to-User', required — The name of the header to add.
    - `value` string, required — The value of the header.
  - `sip_transport_protocol` 'UDP' | 'TCP' | 'TLS' — Defines SIP transport protocol to be used on the call.
  - `sound_modifications` SoundModifications — Use this field to modify sound effects, for example adjust the pitch.
    - `pitch` number, float — Set the pitch directly, value should be > 0, default 1 (lower = lower tone)
    - `semitone` number, float — Adjust the pitch in semitones, values should be between -14 and 14, default 0
    - `octaves` number, float — Adjust the pitch in octaves, values should be between -1 and 1, default 0
    - `track` string — The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`
  - `stream_url` string — The destination WebSocket address where the stream is going to be delivered.
  - `stream_track` 'inbound_track' | 'outbound_track' | 'both_tracks' — Specifies which track should be streamed.
  - `stream_codec` 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default' — Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used.
  - `stream_bidirectional_mode` 'mp3' | 'rtp' — Configures method of bidirectional streaming (mp3, rtp).
  - `stream_bidirectional_codec` 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' — Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.
  - `stream_bidirectional_target_legs` 'both' | 'self' | 'opposite' — Specifies which call legs should receive the bidirectional stream audio.
  - `stream_bidirectional_sampling_rate` 8000 | 16000 | 22050 | 24000 | 48000 — Audio sampling rate.
  - `stream_establish_before_call_originate` boolean — Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish.
  - `send_silence_when_idle` boolean — Generate silence RTP packets when no transmission available.
  - `webhook_url` string — Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
  - `webhook_url_method` 'POST' | 'GET' — HTTP request type used for `webhook_url`.
  - `webhook_urls` object — A map of event types to webhook URLs. When an event of the specified type occurs, the webhook URL associated with that event type will be called instead of the default webhook URL. Events not mapped here will use the default webhook URL.
  - `webhook_urls_method` 'POST' | 'GET' — HTTP request method to invoke `webhook_urls`.
  - `webhook_retries_policies` object — A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
  - `record` 'record-from-answer' — Start recording automatically after an event. Disabled by default.
  - `record_channels` 'single' | 'dual' — Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
  - `record_format` 'wav' | 'mp3' — Defines the format of the recording ('wav' or 'mp3') when `record` is specified.
  - `record_max_length` integer — Defines the maximum length for the recording in seconds when `record` is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite).
  - `record_timeout_secs` integer — The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite).
  - `record_track` 'both' | 'inbound' | 'outbound' — The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single channel).
  - `record_trim` 'trim-silence' — When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
  - `record_custom_file_name` string — The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.
  - `supervise_call_control_id` string — The call leg which will be supervised by the new call.
  - `supervisor_role` 'barge' | 'whisper' | 'monitor' — The role of the supervisor call. 'barge' means that supervisor call hears and is being heard by both ends of the call (caller & callee). 'whisper' means that only supervised_call_control_id hears supervisor but supervisor can hear everything. 'monitor' means that nobody can hear supervisor call, but supervisor can hear everything on the call.
  - `enable_dialogflow` boolean — Enables Dialogflow for the current call. The default value is false.
  - `dialogflow_config` DialogflowConfig
    - `analyze_sentiment` boolean — Enable sentiment analysis from Dialogflow.
    - `partial_automated_agent_reply` boolean — Enable partial automated agent reply from Dialogflow.
  - `transcription` boolean — Enable transcription upon call answer. The default value is false.
  - `transcription_config` TranscriptionStartRequest
    - `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.
    - `transcription_engine_config` union
      - TranscriptionEngineGoogleConfig
        - `transcription_engine` 'Google' — Engine identifier for Google transcription service
        - `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
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `enable_speaker_diarization` boolean — Enables speaker diarization.
        - `min_speaker_count` integer — Defines minimum number of speakers in the conversation.
        - `max_speaker_count` integer — Defines maximum number of speakers in the conversation.
        - `profanity_filter` boolean — Enables profanity_filter.
        - `use_enhanced` boolean — Enables enhanced transcription, this works for models `phone_call` and `video`.
        - `model` 'latest_long' | 'latest_short' | 'command_and_search' | 'phone_call' | 'video' | 'default' | 'medical_conversation' | 'medical_dictation' — The model to use for transcription.
        - `hints` string[] — Hints to improve transcription accuracy.
        - `speech_context` object[] — Speech context to improve transcription accuracy.
          - `phrases` string[]
          - `boost` number — Boost factor for the speech context.
      - TranscriptionEngineTelnyxConfig
        - `transcription_engine` 'Telnyx' — Engine identifier for Telnyx transcription service
        - `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_model` 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo' — The model to use for transcription.
      - TranscriptionEngineAzureConfig
        - `transcription_engine` 'Azure', required — Engine identifier for Azure transcription service
        - `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
        - `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.
      - TranscriptionEngineXaiConfig
        - `transcription_engine` 'xAI' — Engine identifier for xAI transcription service
        - `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_model` 'xai/grok-stt' — The model to use for transcription.
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - TranscriptionEngineAssemblyaiConfig
        - `transcription_engine` 'AssemblyAI' — Engine identifier for AssemblyAI transcription service
        - `transcription_model` 'assemblyai/universal-streaming' — The model to use for transcription.
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - TranscriptionEngineSpeechmaticsConfig
        - `transcription_engine` 'Speechmatics' — Engine identifier for Speechmatics transcription service
        - `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_model` 'speechmatics/standard' — The model to use for transcription.
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
      - TranscriptionEngineSonioxConfig
        - `transcription_engine` 'Soniox', required — Engine identifier for Soniox transcription service
        - `transcription_model` 'soniox/stt-rt-v4' — The model to use for transcription.
        - `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.
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `enable_endpoint_detection` boolean — When true, Soniox emits end-of-utterance events at the cadence configured by `max_endpoint_delay_ms`.
        - `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.
      - TranscriptionEngineAConfig
        - `transcription_engine` 'A' — Engine identifier for Google transcription service
        - `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
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `enable_speaker_diarization` boolean — Enables speaker diarization.
        - `min_speaker_count` integer — Defines minimum number of speakers in the conversation.
        - `max_speaker_count` integer — Defines maximum number of speakers in the conversation.
        - `profanity_filter` boolean — Enables profanity_filter.
        - `use_enhanced` boolean — Enables enhanced transcription, this works for models `phone_call` and `video`.
        - `model` 'latest_long' | 'latest_short' | 'command_and_search' | 'phone_call' | 'video' | 'default' | 'medical_conversation' | 'medical_dictation' — The model to use for transcription.
        - `hints` string[] — Hints to improve transcription accuracy.
        - `speech_context` object[] — Speech context to improve transcription accuracy.
          - `phrases` string[]
          - `boost` number — Boost factor for the speech context.
      - TranscriptionEngineBConfig
        - `transcription_engine` 'B' — Engine identifier for Telnyx transcription service
        - `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_model` 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo' — The model to use for transcription.
      - DeepgramNova2Config
        - `transcription_engine` 'deepgram/nova-2', required
        - `transcription_model` 'deepgram/nova-2', required
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `utterance_end_ms` integer — Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
        - `language` 'bg' | 'ca' | 'zh-CN' | 'zh-Hans' | 'zh-TW' | 'zh-Hant' | 'zh-HK' | 'cs' | 'da-DK' | 'nl-BE' | 'en-US' | 'en-AU' | 'en-GB' | 'en-NZ' | 'en-IN' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'de-CH' | 'el' | 'hi' | 'hu' | 'id' | 'it' | 'ja' | 'ko-KR' | 'lv' | 'lt' | 'ms' | 'no' | 'pl' | 'pt-BR' | 'pt-PT' | 'ro' | 'ru' | 'sk' | 'es-419' | 'sv-SE' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'auto_detect' — Language to use for speech recognition with nova-2 model
        - `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}`.
      - DeepgramNova3Config
        - `transcription_engine` 'deepgram/nova-3', required
        - `transcription_model` 'deepgram/nova-3', required
        - `interim_results` boolean — Whether to send also interim results. If set to false, only final results will be sent.
        - `utterance_end_ms` integer — Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
        - `language` 'en-US' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'de' | 'nl' | 'sv-SE' | 'da-DK' | 'es' | 'es-419' | 'fr' | 'fr-CA' | 'pt-BR' | 'pt-PT' | 'auto_detect' — Language to use for speech recognition with nova-3 model
        - `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}`.
    - `client_state` string — Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
    - `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`.
    - `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`.
  - `sip_region` 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East' — Defines the SIP region to be used for the call.
  - `stream_auth_token` string — An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.

## Response `200`

Successful response with details about a call status that includes recording_id.

- object
  - `data` CallWithRecordingId
    - `record_type` 'call', required
    - `call_session_id` string, required — ID that is unique to the call session and can be used to correlate webhook events. Call session is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of a transferred call
    - `call_leg_id` string, required — ID that is unique to the call and can be used to correlate webhook events
    - `call_control_id` string, required — Unique identifier and token for controlling the call.
    - `is_alive` boolean, required — Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is asynchronous).
    - `client_state` string — State received from a command.
    - `call_duration` integer — Indicates the duration of the call in seconds
    - `recording_id` string, uuid — The ID of the recording. Only present when the record parameter is set to record-from-answer.
    - `start_time` string — ISO 8601 formatted date indicating when the call started
    - `end_time` string — ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive

## Other responses

- `400` — Bad request. The request was invalid or cannot be served. Common causes include: audio file download failures, attempting to delete non-empty queues, invalid characters in the request, or character encoding errors.
- `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.
- `500` — Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled exceptions or system failures.
- `503` — Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded.
- `default` — Unexpected error

---

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