{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-answer-request-schema.json", "title": "Answer 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/AnswerRequest", "properties": { "assistant": { "$ref": "#/$defs/CallAssistantRequest" }, "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" }, "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 any command with the same `command_id` for the same `call_control_id`.", "type": "string" }, "custom_headers": { "description": "Custom headers to be added to the SIP INVITE response.", "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" }, "preferred_codecs": { "description": "The list of comma-separated codecs in a preferred order for the forked media to be received.", "enum": [ "G722,PCMU,PCMA,G729,OPUS,VP8,H264" ], "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_headers": { "description": "SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported.", "items": { "$ref": "#/$defs/SipHeader" }, "type": "array" }, "sound_modifications": { "$ref": "#/$defs/SoundModifications" }, "stream_bidirectional_codec": { "$ref": "#/$defs/StreamBidirectionalCodec" }, "stream_bidirectional_mode": { "$ref": "#/$defs/StreamBidirectionalMode" }, "stream_bidirectional_target_legs": { "$ref": "#/$defs/StreamBidirectionalTargetLegs" }, "stream_codec": { "$ref": "#/$defs/StreamCodec" }, "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" }, "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 `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" } }, "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" } }, "type": "object" }, "llm_api_key_ref": { "description": "Integration secret identifier for the fallback model API key.", "type": "string" }, "model": { "description": "Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.", "type": "string" } }, "type": "object" }, "greeting": { "description": "Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit.", "maxLength": 3000, "type": "string" }, "id": { "description": "The identifier of the AI assistant to use.", "type": "string" }, "instructions": { "description": "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.", "type": "string" }, "llm_api_key_ref": { "description": "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.).", "type": "string" }, "mcp_servers": { "description": "MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.", "items": { "properties": {}, "type": "object" }, "type": "array" }, "model": { "description": "LLM model override for this call. If omitted, the assistant's configured model is used.", "type": "string" }, "name": { "description": "Assistant name override for this call.", "type": "string" }, "observability_settings": { "description": "Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.", "properties": {}, "type": "object" }, "openai_api_key_ref": { "deprecated": true, "description": "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.", "type": "string", "x-sdk-deprecation-message": "Use llm_api_key_ref instead" }, "tools": { "description": "Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.", "items": { "oneOf": [ { "$ref": "#/$defs/BookAppointmentTool" }, { "$ref": "#/$defs/CheckAvailabilityTool" }, { "$ref": "#/$defs/WebhookTool" }, { "$ref": "#/$defs/HangupTool" }, { "$ref": "#/$defs/TransferTool" }, { "$ref": "#/$defs/CallControlRetrievalTool" } ] }, "type": "array" } }, "required": [ "id" ], "type": "object" }, "CallControlBucketIds": { "properties": { "bucket_ids": { "items": { "type": "string" }, "title": "Bucket Ids", "type": "array" }, "max_num_results": { "description": "The maximum number of results to retrieve as context for the language model.", "type": "integer" } }, "required": [ "bucket_ids" ], "title": "BucketIds", "type": "object" }, "CallControlRetrievalTool": { "properties": { "retrieval": { "$ref": "#/$defs/CallControlBucketIds" }, "type": { "enum": [ "retrieval" ], "type": "string" } }, "required": [ "type", "retrieval" ], "title": "RetrievalTool", "type": "object" }, "CallControlTransferToolParams": { "properties": { "from": { "description": "Number or SIP URI placing the call.", "type": "string" }, "targets": { "description": "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.", "oneOf": [ { "items": { "properties": { "name": { "description": "The name of the target.", "type": "string" }, "to": { "description": "The destination number or SIP URI of the call.", "type": "string" } }, "required": [ "to" ], "type": "object" }, "type": "array" }, { "description": "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.", "type": "string" } ] } }, "required": [ "targets", "from" ], "title": "TransferToolParams", "type": "object" }, "CallControlWebhookToolParams": { "properties": { "body_parameters": { "description": "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", "properties": { "properties": { "description": "The properties of the body parameters.", "type": "object" }, "required": { "description": "The required properties of the body parameters.", "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "object" ], "type": "string" } }, "type": "object" }, "description": { "description": "The description of the tool.", "type": "string" }, "headers": { "description": "The headers to be sent to the external tool.", "items": { "properties": { "name": { "type": "string" }, "value": { "description": "The value of the header. Note that we support mustache templating for the value. For example you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret as the bearer token.", "type": "string" } }, "type": "object" }, "type": "array" }, "method": { "default": "POST", "description": "The HTTP method to be used when calling the external tool.", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ], "type": "string" }, "name": { "description": "The name of the tool.", "type": "string" }, "path_parameters": { "description": "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", "properties": { "properties": { "description": "The properties of the path parameters.", "type": "object" }, "required": { "description": "The required properties of the path parameters.", "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "object" ], "type": "string" } }, "type": "object" }, "query_parameters": { "description": "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", "properties": { "properties": { "description": "The properties of the query parameters.", "type": "object" }, "required": { "description": "The required properties of the query parameters.", "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "object" ], "type": "string" } }, "type": "object" }, "url": { "description": "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.", "type": "string" } }, "required": [ "url", "name", "description" ], "title": "WebhookToolParams", "type": "object" }, "CheckAvailabilityTool": { "properties": { "check_availability": { "$ref": "#/$defs/CheckAvailabilityToolParams" }, "type": { "enum": [ "check_availability" ], "type": "string" } }, "required": [ "type", "check_availability" ], "title": "CheckAvailabilityTool", "type": "object" }, "CheckAvailabilityToolParams": { "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" }, "event_type_id": { "description": "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)", "type": "integer" } }, "required": [ "event_type_id", "api_key_ref" ], "title": "CheckAvailabilityToolParams", "type": "object" }, "CustomSipHeader": { "properties": { "name": { "description": "The name of the header to add.", "type": "string" }, "value": { "description": "The value of the header.", "type": "string" } }, "required": [ "name", "value" ], "title": "Custom SIP Header", "type": "object" }, "DeepgramNova2Config": { "properties": { "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "keywords_boosting": { "additionalProperties": { "description": "Boost intensifier for the keyword. Higher values increase recognition confidence.", "type": "number" }, "default": null, "description": "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}`.", "type": "object" }, "language": { "$ref": "#/$defs/DeepgramNova2TranscriptionLanguage" }, "transcription_engine": { "enum": [ "Deepgram" ], "type": "string" }, "transcription_model": { "enum": [ "deepgram/nova-2" ], "type": "string" }, "utterance_end_ms": { "default": 1000, "description": "Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.", "maximum": 5000, "minimum": 0, "type": "integer" } }, "required": [ "transcription_engine", "transcription_model" ], "title": "DeepgramNova2Config", "type": "object" }, "DeepgramNova2TranscriptionLanguage": { "default": "en", "description": "Language to use for speech recognition with nova-2 model", "enum": [ "bg", "ca", "zh", "zh-CN", "zh-Hans", "zh-TW", "zh-Hant", "zh-HK", "cs", "da", "da-DK", "nl", "en", "en-US", "en-AU", "en-GB", "en-NZ", "en-IN", "et", "fi", "nl-BE", "fr", "fr-CA", "de", "de-CH", "el", "hi", "hu", "id", "it", "ja", "ko", "ko-KR", "lv", "lt", "ms", "no", "pl", "pt", "pt-BR", "pt-PT", "ro", "ru", "sk", "es", "es-419", "sv", "sv-SE", "th", "th-TH", "tr", "uk", "vi", "auto_detect" ], "title": "Deepgram nova-2 transcription engine list of languages", "type": "string" }, "DeepgramNova3Config": { "properties": { "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "keywords_boosting": { "additionalProperties": { "description": "Boost intensifier for the keyword. Higher values increase recognition confidence.", "type": "number" }, "default": null, "description": "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}`.", "type": "object" }, "language": { "$ref": "#/$defs/DeepgramNova3TranscriptionLanguage" }, "transcription_engine": { "enum": [ "Deepgram" ], "type": "string" }, "transcription_model": { "enum": [ "deepgram/nova-3" ], "type": "string" }, "utterance_end_ms": { "default": 1000, "description": "Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.", "maximum": 5000, "minimum": 0, "type": "integer" } }, "required": [ "transcription_engine", "transcription_model" ], "title": "DeepgramNova3Config", "type": "object" }, "DeepgramNova3TranscriptionLanguage": { "default": "en", "description": "Language to use for speech recognition with nova-3 model", "enum": [ "en", "en-US", "en-AU", "en-GB", "en-IN", "en-NZ", "de", "nl", "sv", "sv-SE", "da", "da-DK", "es", "es-419", "fr", "fr-CA", "pt", "pt-BR", "pt-PT", "auto_detect" ], "title": "Deepgram nova-3 transcription engine list of languages", "type": "string" }, "GoogleTranscriptionLanguage": { "default": "en", "description": "Language to use for speech recognition", "enum": [ "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" ], "title": "Google transcription engine list of languages", "type": "string" }, "HangupTool": { "properties": { "hangup": { "$ref": "#/$defs/HangupToolParams" }, "type": { "enum": [ "hangup" ], "type": "string" } }, "required": [ "type", "hangup" ], "title": "HangupTool", "type": "object" }, "HangupToolParams": { "properties": { "description": { "default": "This tool is used to hang up the call.", "description": "The description of the function that will be passed to the assistant.", "type": "string" } }, "title": "HangupToolParams", "type": "object" }, "SipHeader": { "properties": { "name": { "description": "The name of the header to add.", "enum": [ "User-to-User" ], "type": "string" }, "value": { "description": "The value of the header.", "type": "string" } }, "required": [ "name", "value" ], "title": "SIP Header", "type": "object" }, "SoundModifications": { "description": "Use this field to modify sound effects, for example adjust the pitch.", "properties": { "octaves": { "description": "Adjust the pitch in octaves, values should be between -1 and 1, default 0", "format": "float", "type": "number" }, "pitch": { "description": "Set the pitch directly, value should be > 0, default 1 (lower = lower tone)", "format": "float", "type": "number" }, "semitone": { "description": "Adjust the pitch in semitones, values should be between -14 and 14, default 0", "format": "float", "type": "number" }, "track": { "default": "outbound", "description": "The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`", "type": "string" } }, "title": "Sound modifications", "type": "object" }, "StreamBidirectionalCodec": { "default": "PCMU", "description": "Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.", "enum": [ "PCMU", "PCMA", "G722", "OPUS", "AMR-WB", "L16" ], "title": "Bidirectional Stream Codec", "type": "string" }, "StreamBidirectionalMode": { "default": "mp3", "description": "Configures method of bidirectional streaming (mp3, rtp).", "enum": [ "mp3", "rtp" ], "title": "Bidirectional Stream Mode", "type": "string" }, "StreamBidirectionalTargetLegs": { "default": "opposite", "description": "Specifies which call legs should receive the bidirectional stream audio.", "enum": [ "both", "self", "opposite" ], "title": "Bidirectional Stream Target Legs", "type": "string" }, "StreamCodec": { "default": "default", "description": "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.", "enum": [ "PCMU", "PCMA", "G722", "OPUS", "AMR-WB", "L16", "default" ], "title": "Stream Codec", "type": "string" }, "TelnyxTranscriptionLanguage": { "default": "en", "description": "Language to use for speech recognition", "enum": [ "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" ], "title": "Telnyx transcription engine list of languages", "type": "string" }, "TranscriptionEngineAConfig": { "properties": { "enable_speaker_diarization": { "default": false, "description": "Enables speaker diarization.", "type": "boolean" }, "hints": { "default": [], "description": "Hints to improve transcription accuracy.", "items": { "type": "string" }, "type": "array" }, "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "language": { "$ref": "#/$defs/GoogleTranscriptionLanguage" }, "max_speaker_count": { "default": 6, "description": "Defines maximum number of speakers in the conversation.", "format": "int32", "type": "integer" }, "min_speaker_count": { "default": 2, "description": "Defines minimum number of speakers in the conversation.", "format": "int32", "type": "integer" }, "model": { "description": "The model to use for transcription.", "enum": [ "latest_long", "latest_short", "command_and_search", "phone_call", "video", "default", "medical_conversation", "medical_dictation" ], "type": "string" }, "profanity_filter": { "default": false, "description": "Enables profanity_filter.", "type": "boolean" }, "speech_context": { "description": "Speech context to improve transcription accuracy.", "items": { "properties": { "boost": { "default": 1.0, "description": "Boost factor for the speech context.", "maximum": 20.0, "minimum": 0.0, "type": "number" }, "phrases": { "default": [], "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": "array" }, "transcription_engine": { "description": "Engine identifier for Google transcription service", "enum": [ "A" ], "type": "string" }, "use_enhanced": { "default": false, "description": "Enables enhanced transcription, this works for models `phone_call` and `video`.", "type": "boolean" } }, "title": "Transcription engine A config", "type": "object" }, "TranscriptionEngineAssemblyaiConfig": { "properties": { "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "transcription_engine": { "description": "Engine identifier for AssemblyAI transcription service", "enum": [ "AssemblyAI" ], "type": "string" }, "transcription_model": { "default": "assemblyai/universal-streaming", "description": "The model to use for transcription.", "enum": [ "assemblyai/universal-streaming" ], "type": "string" } }, "title": "Transcription engine AssemblyAI config", "type": "object" }, "TranscriptionEngineAzureConfig": { "properties": { "api_key_ref": { "description": "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.", "type": "string" }, "language": { "$ref": "#/$defs/AzureTranscriptionLanguage" }, "region": { "$ref": "#/$defs/AzureTranscriptionRegion" }, "transcription_engine": { "description": "Engine identifier for Azure transcription service", "enum": [ "Azure" ], "type": "string" } }, "required": [ "transcription_engine", "region" ], "title": "Transcription engine Azure config", "type": "object" }, "TranscriptionEngineBConfig": { "properties": { "language": { "$ref": "#/$defs/TelnyxTranscriptionLanguage" }, "transcription_engine": { "description": "Engine identifier for Telnyx transcription service", "enum": [ "B" ], "type": "string" }, "transcription_model": { "default": "openai/whisper-tiny", "description": "The model to use for transcription.", "enum": [ "openai/whisper-tiny", "openai/whisper-large-v3-turbo" ], "type": "string" } }, "title": "Transcription engine B config", "type": "object" }, "TranscriptionEngineDeepgramConfig": { "oneOf": [ { "$ref": "#/$defs/DeepgramNova2Config" }, { "$ref": "#/$defs/DeepgramNova3Config" } ] }, "TranscriptionEngineGoogleConfig": { "properties": { "enable_speaker_diarization": { "default": false, "description": "Enables speaker diarization.", "type": "boolean" }, "hints": { "default": [], "description": "Hints to improve transcription accuracy.", "items": { "type": "string" }, "type": "array" }, "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "language": { "$ref": "#/$defs/GoogleTranscriptionLanguage" }, "max_speaker_count": { "default": 6, "description": "Defines maximum number of speakers in the conversation.", "format": "int32", "type": "integer" }, "min_speaker_count": { "default": 2, "description": "Defines minimum number of speakers in the conversation.", "format": "int32", "type": "integer" }, "model": { "description": "The model to use for transcription.", "enum": [ "latest_long", "latest_short", "command_and_search", "phone_call", "video", "default", "medical_conversation", "medical_dictation" ], "type": "string" }, "profanity_filter": { "default": false, "description": "Enables profanity_filter.", "type": "boolean" }, "speech_context": { "description": "Speech context to improve transcription accuracy.", "items": { "properties": { "boost": { "default": 1.0, "description": "Boost factor for the speech context.", "maximum": 20.0, "minimum": 0.0, "type": "number" }, "phrases": { "default": [], "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": "array" }, "transcription_engine": { "description": "Engine identifier for Google transcription service", "enum": [ "Google" ], "type": "string" }, "use_enhanced": { "default": false, "description": "Enables enhanced transcription, this works for models `phone_call` and `video`.", "type": "boolean" } }, "title": "Transcription engine Google config", "type": "object" }, "TranscriptionEngineTelnyxConfig": { "properties": { "language": { "$ref": "#/$defs/TelnyxTranscriptionLanguage" }, "transcription_engine": { "description": "Engine identifier for Telnyx transcription service", "enum": [ "Telnyx" ], "type": "string" }, "transcription_model": { "default": "openai/whisper-tiny", "description": "The model to use for transcription.", "enum": [ "openai/whisper-tiny", "openai/whisper-large-v3-turbo" ], "type": "string" } }, "title": "Transcription engine Telnyx config", "type": "object" }, "TranscriptionEngineXaiConfig": { "properties": { "interim_results": { "default": false, "description": "Whether to send also interim results. If set to false, only final results will be sent.", "type": "boolean" }, "language": { "$ref": "#/$defs/XaiTranscriptionLanguage" }, "transcription_engine": { "description": "Engine identifier for xAI transcription service", "enum": [ "xAI" ], "type": "string" }, "transcription_model": { "default": "xai/grok-stt", "description": "The model to use for transcription.", "enum": [ "xai/grok-stt" ], "type": "string" } }, "title": "Transcription engine xAI config", "type": "object" }, "TranscriptionStartRequest": { "properties": { "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 any command with the same `command_id` for the same `call_control_id`.", "type": "string" }, "transcription_engine": { "default": "Google", "description": "Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.", "enum": [ "Google", "Telnyx", "Deepgram", "Azure", "xAI", "AssemblyAI", "A", "B" ], "type": "string" }, "transcription_engine_config": { "oneOf": [ { "$ref": "#/$defs/TranscriptionEngineGoogleConfig" }, { "$ref": "#/$defs/TranscriptionEngineTelnyxConfig" }, { "$ref": "#/$defs/TranscriptionEngineDeepgramConfig" }, { "$ref": "#/$defs/TranscriptionEngineAzureConfig" }, { "$ref": "#/$defs/TranscriptionEngineXaiConfig" }, { "$ref": "#/$defs/TranscriptionEngineAssemblyaiConfig" }, { "$ref": "#/$defs/TranscriptionEngineAConfig" }, { "$ref": "#/$defs/TranscriptionEngineBConfig" } ] }, "transcription_tracks": { "default": "inbound", "description": "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`.", "type": "string" } }, "title": "Transcription start request", "type": "object" }, "TransferTool": { "properties": { "transfer": { "$ref": "#/$defs/CallControlTransferToolParams" }, "type": { "enum": [ "transfer" ], "type": "string" } }, "required": [ "type", "transfer" ], "title": "TransferTool", "type": "object" }, "WebhookTool": { "properties": { "type": { "enum": [ "webhook" ], "type": "string" }, "webhook": { "$ref": "#/$defs/CallControlWebhookToolParams" } }, "required": [ "type", "webhook" ], "title": "WebhookTool", "type": "object" }, "XaiTranscriptionLanguage": { "default": "en", "description": "Language to use for speech recognition", "enum": [ "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" ], "title": "xAI transcription engine list of languages", "type": "string" } } }