Telnyx · Schema

Dial Request

CommunicationsCPaaSVoiceSMSIoTTelecommunicationsMessagingArtificial IntelligenceMCPVoice AIPhone NumbersInference

Properties

Name Type Description
answering_machine_detection string 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.d
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 sele
assistant object
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.
billing_group_id string Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group 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 li
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.
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`.
conference_config object Optional configuration parameters to dial new participant into a conference.
connection_id string The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.
custom_headers array Custom headers to be added to the SIP INVITE.
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 `cal
dialogflow_config object
enable_dialogflow boolean Enables Dialogflow for the current call. The default value is false.
from string 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
link_to string Use another call's control id for sharing the same call session id
media_encryption string 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` e
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. Th
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.
preferred_codecs string The list of comma-separated codecs in a preferred order for the forked media to be received.
prevent_double_bridge boolean Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.
privacy string 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 sh
record string Start recording automatically after an event. Disabled by default.
record_channels string Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
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.
record_format string 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
record_track string 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
record_trim string When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
send_silence_when_idle boolean Generate silence RTP packets when no transmission available.
sip_auth_password string SIP Authentication password used for SIP challenges.
sip_auth_username string SIP Authentication username used for SIP challenges.
sip_headers array SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.
sip_region string Defines the SIP region to be used for the call.
sip_transport_protocol string Defines SIP transport protocol to be used on the call.
sound_modifications object
stream_auth_token string An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.
stream_bidirectional_codec object
stream_bidirectional_mode object
stream_bidirectional_sampling_rate object
stream_bidirectional_target_legs object
stream_codec object
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.
stream_track string Specifies which track should be streamed.
stream_url string The destination WebSocket address where the stream is going to be delivered.
supervise_call_control_id string The call leg which will be supervised by the new call.
supervisor_role string 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 supe
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 examp
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
to object 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
transcription boolean Enable transcription upon call answer. The default value is false.
transcription_config object
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 6
webhook_url string Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
webhook_url_method string 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 h
webhook_urls_method string HTTP request method to invoke `webhook_urls`.
View JSON Schema on GitHub

JSON Schema

telnyx-call-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-call-request-schema.json",
  "title": "Dial Request",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-call-commands-api-openapi.yml#/components/schemas/CallRequest",
  "properties": {
    "answering_machine_detection": {
      "default": "disabled",
      "description": "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.",
      "enum": [
        "premium",
        "detect",
        "detect_beep",
        "detect_words",
        "greeting_end",
        "disabled"
      ],
      "type": "string"
    },
    "answering_machine_detection_config": {
      "description": "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.",
      "properties": {
        "after_greeting_silence_millis": {
          "default": 800,
          "description": "Silence duration threshold after a greeting message or voice for it be considered human.",
          "format": "int32",
          "type": "integer"
        },
        "between_words_silence_millis": {
          "default": 50,
          "description": "Maximum threshold for silence between words.",
          "format": "int32",
          "type": "integer"
        },
        "greeting_duration_millis": {
          "default": 3500,
          "description": "Maximum threshold of a human greeting. If greeting longer than this value, considered machine.",
          "format": "int32",
          "type": "integer"
        },
        "greeting_silence_duration_millis": {
          "default": 1500,
          "description": "If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended.",
          "format": "int32",
          "type": "integer"
        },
        "greeting_total_analysis_time_millis": {
          "default": 5000,
          "description": "If machine already detected, maximum timeout threshold to determine the end of the machine greeting.",
          "format": "int32",
          "type": "integer"
        },
        "initial_silence_millis": {
          "default": 3500,
          "description": "If initial silence duration is greater than this value, consider it a machine.",
          "format": "int32",
          "type": "integer"
        },
        "maximum_number_of_words": {
          "default": 5,
          "description": "If number of detected words is greater than this value, consder it a machine.",
          "format": "int32",
          "type": "integer"
        },
        "maximum_word_length_millis": {
          "default": 3500,
          "description": "If a single word lasts longer than this threshold, consider it a machine.",
          "format": "int32",
          "type": "integer"
        },
        "silence_threshold": {
          "default": 256,
          "description": "Minimum noise threshold for any analysis.",
          "format": "int32",
          "type": "integer"
        },
        "total_analysis_time_millis": {
          "default": 3500,
          "description": "Maximum timeout threshold for overall detection.",
          "format": "int32",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "assistant": {
      "$ref": "#/$defs/CallAssistantRequest"
    },
    "audio_url": {
      "description": "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.",
      "type": "string"
    },
    "billing_group_id": {
      "description": "Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.",
      "format": "uuid",
      "type": "string"
    },
    "bridge_intent": {
      "default": false,
      "description": "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.",
      "type": "boolean"
    },
    "bridge_on_answer": {
      "default": false,
      "description": "Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required.",
      "type": "boolean"
    },
    "client_state": {
      "description": "Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.",
      "type": "string"
    },
    "command_id": {
      "description": "Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`.",
      "type": "string"
    },
    "conference_config": {
      "description": "Optional configuration parameters to dial new participant into a conference.",
      "properties": {
        "beep_enabled": {
          "description": "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.",
          "enum": [
            "always",
            "never",
            "on_enter",
            "on_exit"
          ],
          "type": "string"
        },
        "conference_name": {
          "description": "Conference name to be joined",
          "type": "string"
        },
        "early_media": {
          "default": true,
          "description": "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`",
          "type": "boolean"
        },
        "end_conference_on_exit": {
          "description": "Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".",
          "type": "boolean"
        },
        "hold": {
          "description": "Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".",
          "type": "boolean"
        },
        "hold_audio_url": {
          "description": "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\".",
          "type": "string"
        },
        "hold_media_name": {
          "description": "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\".",
          "type": "string"
        },
        "id": {
          "description": "Conference ID to be joined",
          "format": "uuid",
          "type": "string"
        },
        "mute": {
          "description": "Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".",
          "type": "boolean"
        },
        "soft_end_conference_on_exit": {
          "description": "Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".",
          "type": "boolean"
        },
        "start_conference_on_create": {
          "description": "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\".",
          "type": "boolean"
        },
        "start_conference_on_enter": {
          "description": "Whether the conference should be started after the participant joins the conference. Defaults to \"false\".",
          "type": "boolean"
        },
        "supervisor_role": {
          "description": "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\".",
          "enum": [
            "barge",
            "monitor",
            "none",
            "whisper"
          ],
          "type": "string"
        },
        "whisper_call_control_ids": {
          "description": "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.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "connection_id": {
      "description": "The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.",
      "type": "string"
    },
    "custom_headers": {
      "description": "Custom headers to be added to the SIP INVITE.",
      "items": {
        "$ref": "#/$defs/CustomSipHeader"
      },
      "type": "array"
    },
    "deepfake_detection": {
      "description": "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.",
      "properties": {
        "enabled": {
          "default": false,
          "description": "Whether deepfake detection is enabled.",
          "type": "boolean"
        },
        "rtp_timeout": {
          "default": 30,
          "description": "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.",
          "format": "int32",
          "maximum": 120,
          "minimum": 5,
          "type": "integer"
        },
        "timeout": {
          "default": 15,
          "description": "Maximum time in seconds to wait for a detection result before timing out.",
          "format": "int32",
          "maximum": 60,
          "minimum": 5,
          "type": "integer"
        }
      },
      "required": [
        "enabled"
      ],
      "type": "object"
    },
    "dialogflow_config": {
      "$ref": "#/$defs/DialogflowConfig"
    },
    "enable_dialogflow": {
      "default": false,
      "description": "Enables Dialogflow for the current call. The default value is false.",
      "type": "boolean"
    },
    "from": {
      "description": "The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format.",
      "type": "string"
    },
    "from_display_name": {
      "description": "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.",
      "type": "string"
    },
    "link_to": {
      "description": "Use another call's control id for sharing the same call session id",
      "type": "string"
    },
    "media_encryption": {
      "default": "disabled",
      "description": "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.",
      "enum": [
        "disabled",
        "SRTP",
        "DTLS"
      ],
      "type": "string"
    },
    "media_name": {
      "description": "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.",
      "type": "string"
    },
    "park_after_unbridge": {
      "description": "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.",
      "type": "string"
    },
    "preferred_codecs": {
      "description": "The list of comma-separated codecs in a preferred order for the forked media to be received.",
      "type": "string"
    },
    "prevent_double_bridge": {
      "default": false,
      "description": "Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.",
      "type": "boolean"
    },
    "privacy": {
      "description": "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.",
      "enum": [
        "id",
        "none"
      ],
      "type": "string"
    },
    "record": {
      "description": "Start recording automatically after an event. Disabled by default.",
      "enum": [
        "record-from-answer"
      ],
      "type": "string"
    },
    "record_channels": {
      "default": "dual",
      "description": "Defines which channel should be recorded ('single' or 'dual') when `record` is specified.",
      "enum": [
        "single",
        "dual"
      ],
      "type": "string"
    },
    "record_custom_file_name": {
      "description": "The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.",
      "maxLength": 40,
      "minLength": 1,
      "type": "string"
    },
    "record_format": {
      "default": "mp3",
      "description": "Defines the format of the recording ('wav' or 'mp3') when `record` is specified.",
      "enum": [
        "wav",
        "mp3"
      ],
      "type": "string"
    },
    "record_max_length": {
      "default": 0,
      "description": "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).",
      "format": "int32",
      "type": "integer"
    },
    "record_timeout_secs": {
      "default": 0,
      "description": "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).",
      "format": "int32",
      "type": "integer"
    },
    "record_track": {
      "default": "both",
      "description": "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).",
      "enum": [
        "both",
        "inbound",
        "outbound"
      ],
      "type": "string"
    },
    "record_trim": {
      "description": "When set to `trim-silence`, silence will be removed from the beginning and end of the recording.",
      "enum": [
        "trim-silence"
      ],
      "type": "string"
    },
    "send_silence_when_idle": {
      "default": false,
      "description": "Generate silence RTP packets when no transmission available.",
      "type": "boolean"
    },
    "sip_auth_password": {
      "description": "SIP Authentication password used for SIP challenges.",
      "type": "string"
    },
    "sip_auth_username": {
      "description": "SIP Authentication username used for SIP challenges.",
      "type": "string"
    },
    "sip_headers": {
      "description": "SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.",
      "items": {
        "$ref": "#/$defs/SipHeader"
      },
      "type": "array"
    },
    "sip_region": {
      "default": "US",
      "description": "Defines the SIP region to be used for the call.",
      "enum": [
        "US",
        "Europe",
        "Canada",
        "Australia",
        "Middle East"
      ],
      "type": "string"
    },
    "sip_transport_protocol": {
      "default": "UDP",
      "description": "Defines SIP transport protocol to be used on the call.",
      "enum": [
        "UDP",
        "TCP",
        "TLS"
      ],
      "type": "string"
    },
    "sound_modifications": {
      "$ref": "#/$defs/SoundModifications"
    },
    "stream_auth_token": {
      "description": "An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.",
      "maxLength": 4000,
      "type": "string"
    },
    "stream_bidirectional_codec": {
      "$ref": "#/$defs/StreamBidirectionalCodec"
    },
    "stream_bidirectional_mode": {
      "$ref": "#/$defs/StreamBidirectionalMode"
    },
    "stream_bidirectional_sampling_rate": {
      "$ref": "#/$defs/StreamBidirectionalSamplingRate"
    },
    "stream_bidirectional_target_legs": {
      "$ref": "#/$defs/StreamBidirectionalTargetLegs"
    },
    "stream_codec": {
      "$ref": "#/$defs/StreamCodec"
    },
    "stream_establish_before_call_originate": {
      "default": false,
      "description": "Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish.",
      "type": "boolean"
    },
    "stream_track": {
      "default": "inbound_track",
      "description": "Specifies which track should be streamed.",
      "enum": [
        "inbound_track",
        "outbound_track",
        "both_tracks"
      ],
      "type": "string"
    },
    "stream_url": {
      "description": "The destination WebSocket address where the stream is going to be delivered.",
      "type": "string"
    },
    "supervise_call_control_id": {
      "description": "The call leg which will be supervised by the new call.",
      "type": "string"
    },
    "supervisor_role": {
      "default": "barge",
      "description": "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.",
      "enum": [
        "barge",
        "whisper",
        "monitor"
      ],
      "type": "string"
    },
    "time_limit_secs": {
      "default": 14400,
      "description": "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.",
      "format": "int32",
      "maximum": 14400,
      "minimum": 30,
      "type": "integer"
    },
    "timeout_secs": {
      "default": 30,
      "description": "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.",
      "format": "int32",
      "type": "integer"
    },
    "to": {
      "description": "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.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ]
    },
    "transcription": {
      "default": false,
      "description": "Enable transcription upon call answer. The default value is false.",
      "type": "boolean"
    },
    "transcription_config": {
      "$ref": "#/$defs/TranscriptionStartRequest"
    },
    "webhook_retries_policies": {
      "additionalProperties": {
        "properties": {
          "retries_ms": {
            "description": "Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms.",
            "items": {
              "type": "integer"
            },
            "maxItems": 5,
            "type": "array"
          }
        },
        "type": "object"
      },
      "description": "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.",
      "type": "object"
    },
    "webhook_url": {
      "description": "Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.",
      "type": "string"
    },
    "webhook_url_method": {
      "default": "POST",
      "description": "HTTP request type used for `webhook_url`.",
      "enum": [
        "POST",
        "GET"
      ],
      "type": "string"
    },
    "webhook_urls": {
      "additionalProperties": {
        "format": "uri",
        "type": "string"
      },
      "description": "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.",
      "type": "object"
    },
    "webhook_urls_method": {
      "default": "POST",
      "description": "HTTP request method to invoke `webhook_urls`.",
      "enum": [
        "POST",
        "GET"
      ],
      "type": "string"
    }
  },
  "required": [
    "connection_id",
    "to",
    "from"
  ],
  "type": "object",
  "$defs": {
    "AzureTranscriptionLanguage": {
      "default": "en",
      "description": "Language to use for speech recognition",
      "enum": [
        "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"
      ],
      "title": "Azure transcription engine list of languages",
      "type": "string"
    },
    "AzureTranscriptionRegion": {
      "description": "Azure region to use for speech recognition",
      "enum": [
        "australiaeast",
        "centralindia",
        "eastus",
        "northcentralus",
        "westeurope",
        "westus2"
      ],
      "title": "Azure transcription engine list of regions",
      "type": "string"
    },
    "BookAppointmentTool": {
      "properties": {
        "book_appointment": {
          "$ref": "#/$defs/BookAppointmentToolParams"
        },
        "type": {
          "enum": [
            "book_appointment"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "book_appointment"
      ],
      "title": "BookAppointmentTool",
      "type": "object"
    },
    "BookAppointmentToolParams": {
      "properties": {
        "api_key_ref": {
          "description": "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.",
          "type": "string"
        },
        "attendee_name": {
          "description": "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.",
          "type": "string"
        },
        "attendee_timezone": {
          "description": "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.",
          "type": "string"
        },
        "event_type_id": {
          "description": "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)",
          "type": "integer"
        }
      },
      "required": [
        "event_type_id",
        "api_key_ref"
      ],
      "title": "BookAppointmentToolParams",
      "type": "object"
    },
    "CallAssistantRequest": {
      "description": "AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.",
      "properties": {
        "dynamic_variables": {
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          },
          "description": "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.",
          "type": "object"
        },
        "external_llm": {
          "description": "External LLM configuration for bringing your own LLM endpoint.",
          "properties": {
            "authentication_method": {
              "default": "token",
              "description": "Authentication method used when connecting to the external LLM endpoint.",
              "enum": [
                "token",
                "certificate"
              ],
              "type": "string"
            },
            "base_url": {
              "description": "Base URL for the external LLM endpoint.",
              "type": "string"
            },
            "certificate_ref": {
              "description": "Integration secret identifier for the client certificate used with certificate authentication.",
              "type": "string"
            },
            "forward_metadata": {
              "default": false,
              "description": "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\"}}`.",
              "type": "boolean"
            },
            "llm_api_key_ref": {
              "description": "Integration secret identifier for the external LLM API key.",
              "type": "string"
            },
            "model": {
              "description": "Model identifier to use with the external LLM endpoint.",
              "type": "string"
            },
            "token_retrieval_url": {
              "description": "URL used to retrieve an access token when certificate authentication is enabled.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "fallback_config": {
          "description": "Fallback LLM configuration used when the primary LLM provider is unavailable.",
          "properties": {
            "external_llm": {
              "description": "External LLM fallback configuration.",
              "properties": {
                "authentication_method": {
                  "default": "token",
                  "description": "Authentication method used when connecting to the external LLM endpoint.",
                  "enum": [
                    "token",
                    "certificate"
                  ],
                  "type": "string"
                },
                "base_url": {
                  "description": "Base URL for the external LLM endpoint.",
                  "type": "string"
                },
                "certificate_ref": {
                  "description": "Integration secret identifier for the client certificate used with certificate authentication.",
                  "type": "string"
                },
                "forward_metadata": {
                  "default": false,
                  "description": "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\"}}`.",
                  "type": "boolean"
                },
                "llm_api_key_ref": {
                  "description": "Integration secret identifier for the external LLM API key.",
                  "type": "string"
                },
                "model": {
                  "description": "Model identifier to use with the external LLM endpoint.",
                  "type": "string"
                },
                "token_retrieval_url": {
                  "description": "URL used to retrieve an access token when certificate authentication is enabled.",
                  "type": "string"
    

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/telnyx/refs/heads/main/json-schema/telnyx-call-request-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/telnyx-call-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.