openapi: 3.1.0 info: contact: email: support@telnyx.com description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform. title: Telnyx Access Tokens Call Commands API version: 2.0.0 x-endpoint-cost: light servers: - description: Version 2.0.0 of the Telnyx API url: https://api.telnyx.com/v2 security: - bearerAuth: [] tags: - description: Call Control command operations name: Call Commands paths: /calls: post: description: '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. ' operationId: DialCall requestBody: content: application/json: schema: $ref: '#/components/schemas/CallRequest' description: Call request required: true responses: '200': $ref: '#/components/responses/RetrieveCallStatusResponseWithRecordingId' '400': $ref: '#/components/responses/BadRequestResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' '500': $ref: '#/components/responses/InternalServerErrorResponse' '503': $ref: '#/components/responses/ServiceUnavailableResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Dial tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/ai_assistant_add_messages: post: description: Add messages to the conversation started by an AI assistant on the call. operationId: CallAddMessagesToAIAssistant parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/AIAssistantAddMessagesRequest' description: AI Assistant add messages request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Add messages to AI Assistant tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/ai_assistant_join: post: description: Add a participant to an existing AI assistant conversation. Use this command to bring an additional call leg into a running AI conversation. operationId: CallJoinAIAssistant parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/AIAssistantJoinRequest' description: AI Assistant Join request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponseWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Join AI Assistant Conversation tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/ai_assistant_start: post: description: 'Start an AI assistant on the call. **Expected Webhooks:** - `call.conversation.ended` - `call.conversation_insights.generated` ' operationId: CallStartAIAssistant parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/AIAssistantStartRequest' description: AI Assistant request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponseWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Start AI Assistant tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/ai_assistant_stop: post: description: Stop an AI assistant on the call. operationId: CallStopAIAssistant parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/AIAssistantStopRequest' description: AI Assistant request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Stop AI Assistant tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/answer: post: description: 'Answer an incoming call. You must issue this command before executing subsequent commands on an incoming call. **Expected Webhooks:** - `call.answered` - `call.hold` and `call.unhold` if the call is held/unheld - `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. ' operationId: AnswerCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/AnswerRequest' description: Answer call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponseWithRecordingId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Answer call tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/bridge: post: description: 'Bridge two call control calls. **Expected Webhooks:** - `call.bridged` for Leg A - `call.bridged` for Leg B ' operationId: BridgeCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/BridgeRequest' description: Bridge call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Bridge calls tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/client_state_update: put: description: Updates client state operationId: UpdateClientState parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/ClientStateUpdateRequest' description: Updates client state for every subsequent webhook required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Update client state tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/enqueue: post: description: Put the call in a queue. operationId: EnqueueCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/EnqueueRequest' description: Enqueue call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Enqueue call tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/fork_start: post: description: "Call forking allows you to stream the media from a call to a specific target in realtime. \nThis stream can be used to enable realtime audio analysis to support a \nvariety of use cases, including fraud detection, or the creation of AI-generated audio responses. \nRequests must specify either the `target` attribute or the `rx` and `tx` attributes.\n\n**Expected Webhooks:**\n\n- `call.fork.started`\n- `call.fork.stopped`\n\n" operationId: StartCallFork parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StartForkingRequest' description: Fork media request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Forking start tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/fork_stop: post: description: 'Stop forking a call. **Expected Webhooks:** - `call.fork.stopped` ' operationId: StopCallFork parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StopForkingRequest' description: Stop forking media request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Forking stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/gather: post: description: 'Gather DTMF signals to build interactive menus. You can pass a list of valid digits. The `Answer` command must be issued before the `gather` command. **Expected Webhooks:** - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/GatherRequest' description: Gather required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Gather tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/gather_stop: post: description: 'Stop current gather. **Expected Webhooks:** - `call.gather.ended` ' operationId: StopCallGather parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StopGatherRequest' description: Stop current gather required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Gather stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/gather_using_ai: post: description: "Gather parameters defined in the request payload using a voice assistant.\n\n You can pass parameters described as a JSON Schema object and the voice assistant will attempt to gather these informations. \n\n**Expected Webhooks:**\n\n- `call.ai_gather.ended`\n- `call.conversation.ended`\n- `call.ai_gather.partial_results` (if `send_partial_results` is set to `true`)\n- `call.ai_gather.message_history_updated` (if `send_message_history_updates` is set to `true`)\n" operationId: callGatherUsingAI parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/GatherUsingAIRequest' description: Gather using AI request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponseWithConversationId' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Gather using AI tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/gather_using_audio: post: description: 'Play an audio file on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an ''invalid_audio_url'', which will be played back at the beginning of each prompt. Playback will be interrupted when a DTMF signal is received. The `Answer command must be issued before the `gather_using_audio` command. **Expected Webhooks:** - `call.playback.started` - `call.playback.ended` - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherUsingAudio parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/GatherUsingAudioRequest' description: Gather using audio request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Gather using audio tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/gather_using_speak: post: description: 'Convert text to speech and play it on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an ''invalid_payload'', which will be played back at the beginning of each prompt. Speech will be interrupted when a DTMF signal is received. The `Answer` command must be issued before the `gather_using_speak` command. **Expected Webhooks:** - `call.dtmf.received` (you may receive many of these webhooks) - `call.gather.ended` ' operationId: GatherUsingSpeak parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/GatherUsingSpeakRequest' description: Gather using speak request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Gather using speak tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/hangup: post: description: 'Hang up the call. **Expected Webhooks:** - `call.hangup` - `call.recording.saved` ' operationId: HangupCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/HangupRequest' description: Hangup request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Hangup call tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/leave_queue: post: description: Removes the call from a queue. operationId: LeaveQueue parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/LeaveQueueRequest' description: Removes the call from the queue, the call currently is enqueued in. required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Remove call from a queue tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/playback_start: post: description: 'Play an audio file on the call. If multiple play audio commands are issued consecutively, the audio files will be placed in a queue awaiting playback. *Notes:* - When `overlay` is enabled, `target_legs` is limited to `self`. - A customer cannot Play Audio with `overlay=true` unless there is a Play Audio with `overlay=false` actively playing. **Expected Webhooks:** - `call.playback.started` - `call.playback.ended` ' operationId: StartCallPlayback parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/PlayAudioUrlRequest' description: Play audio URL request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Play audio URL tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/playback_stop: post: description: 'Stop audio being played on the call. **Expected Webhooks:** - `call.playback.ended` or `call.speak.ended` ' operationId: StopCallPlayback parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/PlaybackStopRequest' description: Stop audio playback request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Stop audio playback tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/record_pause: post: description: 'Pause recording the call. Recording can be resumed via Resume recording command. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: PauseCallRecording parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/PauseRecordingRequest' description: Pause recording call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Record pause tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/record_resume: post: description: 'Resume recording the call. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: ResumeCallRecording parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/ResumeRecordingRequest' description: Resume recording call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Record resume tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/record_start: post: description: 'Start recording the call. Recording will stop on call hang-up, or can be initiated via the Stop Recording command. **Expected Webhooks:** - `call.recording.saved` - `call.recording.transcription.saved` - `call.recording.error` ' operationId: StartCallRecord parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StartRecordingRequest' description: Start recording audio request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Recording start tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/record_stop: post: description: 'Stop recording the call. **Expected Webhooks:** - `call.recording.saved` ' operationId: StopCallRecording parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StopRecordingRequest' description: Stop recording call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Recording stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/refer: post: description: 'Initiate a SIP Refer on a Call Control call. You can initiate a SIP Refer at any point in the duration of a call. **Expected Webhooks:** - `call.refer.started` - `call.refer.completed` - `call.refer.failed` ' operationId: ReferCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/ReferRequest' description: Refer request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: SIP Refer a call tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/reject: post: description: 'Reject an incoming call. **Expected Webhooks:** - `call.hangup` ' operationId: RejectCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/RejectRequest' description: Reject request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Reject a call tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/send_dtmf: post: description: 'Sends DTMF tones from this leg. DTMF tones will be heard by the other end of the call. **Expected Webhooks:** There are no webhooks associated with this command. ' operationId: SendDTMF parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SendDTMFRequest' description: Send DTMF request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Send DTMF tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/send_sip_info: post: description: 'Sends SIP info from this leg. **Expected Webhooks:** - `call.sip_info.received` (to be received on the target call leg) ' operationId: SendSIPInfo parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SendSIPInfoRequest' description: Send SIP INFO request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Send SIP info tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/siprec_start: post: description: "Start siprec session to configured in SIPREC connector SRS. \n\n**Expected Webhooks:**\n\n- `siprec.started`\n- `siprec.stopped`\n- `siprec.failed`\n" operationId: StartSiprecSession parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StartSiprecRequest' description: Start siprec session to configured in SIPREC connector SRS. required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: SIPREC start tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/siprec_stop: post: description: 'Stop SIPREC session. **Expected Webhooks:** - `siprec.stopped` ' operationId: StopSiprecSession parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StopSiprecRequest' description: Stop siprec session required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: SIPREC stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/speak: post: description: 'Convert text to speech and play it back on the call. If multiple speak text commands are issued consecutively, the audio files will be placed in a queue awaiting playback. **Expected Webhooks:** - `call.speak.started` - `call.speak.ended` ' operationId: SpeakCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SpeakRequest' description: Speak request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Speak text tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/streaming_start: post: description: 'Start streaming the media from a call to a specific WebSocket address or Dialogflow connection in near-realtime. Audio will be delivered as base64-encoded RTP payload (raw audio), wrapped in JSON payloads. Please find more details about media streaming messages specification under the [link](https://developers.telnyx.com/docs/voice/programmable-voice/media-streaming).' operationId: StartCallStreaming parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StartStreamingRequest' description: Start streaming media request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Streaming start tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/streaming_stop: post: description: 'Stop streaming a call to a WebSocket. **Expected Webhooks:** - `streaming.stopped` ' operationId: StopCallStreaming parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/StopStreamingRequest' description: Stop streaming media request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Streaming stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/suppression_start: post: operationId: noiseSuppressionStart parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/NoiseSuppressionStart' description: Start noise suppression request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Noise Suppression Start (BETA) tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/suppression_stop: post: operationId: noiseSuppressionStop parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/NoiseSuppressionStop' description: Stop noise suppression request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Noise Suppression Stop (BETA) tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/switch_supervisor_role: post: description: Switch the supervisor role for a bridged call. This allows switching between different supervisor modes during an active call operationId: SwitchSupervisorRole parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SwitchSupervisorRoleRequest' description: Switch supervisor role request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Switch supervisor role tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/transcription_start: post: description: 'Start real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command. **Expected Webhooks:** - `call.transcription` ' operationId: StartCallTranscription parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/TranscriptionStartRequest' description: Transcription start request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Transcription start tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/transcription_stop: post: description: Stop real-time transcription. operationId: StopCallTranscription parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/TranscriptionStopRequest' description: Transcription stop request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Transcription stop tags: - Call Commands x-latency-category: interactive /calls/{call_control_id}/actions/transfer: post: description: 'Transfer a call to a new destination. If the transfer is unsuccessful, a `call.hangup` webhook for the other call (Leg B) will be sent indicating that the transfer could not be completed. The original call will remain active and may be issued additional commands, potentially transfering the call to an alternate destination. **Expected Webhooks:** - `call.initiated` - `call.bridged` to Leg B - `call.answered` or `call.hangup` - `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 ' operationId: TransferCall parameters: - $ref: '#/components/parameters/CallControlId' requestBody: content: application/json: schema: $ref: '#/components/schemas/TransferCallRequest' description: Transfer call request required: true responses: '200': $ref: '#/components/responses/CallControlCommandResponse' '422': $ref: '#/components/responses/UnprocessableEntityResponse' default: $ref: '#/components/responses/call-control_GenericErrorResponse' summary: Transfer call tags: - Call Commands x-latency-category: interactive components: schemas: Assistant: description: Assistant configuration including choice of LLM, custom instructions, and tools. properties: instructions: description: The system instructions that the voice assistant uses during the gather command example: You are a friendly voice assistant. type: string model: default: Qwen/Qwen3-235B-A22B description: The model to be used by the voice assistant. example: Qwen/Qwen3-235B-A22B type: string openai_api_key_ref: description: 'This is necessary only if the model selected is from OpenAI. 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 OpenAI API Key. Warning: Free plans are unlikely to work with this integration.' example: my_openai_api_key type: string tools: description: The tools that the voice assistant can use. items: discriminator: mapping: book_appointment: '#/components/schemas/BookAppointmentTool' check_availability: '#/components/schemas/CheckAvailabilityTool' hangup: '#/components/schemas/HangupTool' retrieval: '#/components/schemas/CallControlRetrievalTool' transfer: '#/components/schemas/TransferTool' webhook: '#/components/schemas/WebhookTool' propertyName: type oneOf: - $ref: '#/components/schemas/BookAppointmentTool' - $ref: '#/components/schemas/CheckAvailabilityTool' - $ref: '#/components/schemas/WebhookTool' - $ref: '#/components/schemas/HangupTool' - $ref: '#/components/schemas/TransferTool' - $ref: '#/components/schemas/CallControlRetrievalTool' type: array title: Assistant type: object StartSiprecRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d connector_name: my-siprec-connector siprec_track: both_tracks properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string connector_name: description: Name of configured SIPREC connector to be used. example: my-siprec-connector type: string include_metadata_custom_headers: description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise, they’ll be added to sip headers. enum: - true - false example: true type: boolean secure: description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure SRS port in your connector to 5061. enum: - true - false example: true type: boolean session_timeout_secs: default: 1800 description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for session keep alive. Minimum value is 90, set to 0 to disable. example: 900 type: integer sip_transport: default: udp description: Specifies SIP transport protocol. enum: - udp - tcp - tls example: tcp type: string siprec_track: default: both_tracks description: Specifies which track should be sent on siprec session. enum: - inbound_track - outbound_track - both_tracks example: outbound_track type: string title: Start Siprec Request 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. example: true type: boolean language: $ref: '#/components/schemas/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 DeepgramNova3Config: example: keywords_boosting: krieger: 1 snuffleupagus: 5 systrom: 2 language: en transcription_engine: Deepgram transcription_model: deepgram/nova-3 properties: interim_results: default: false description: Whether to send also interim results. If set to false, only final results will be sent. example: true 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}`.' example: krieger: 1 snuffleupagus: 5 systrom: 2 type: object language: $ref: '#/components/schemas/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. example: 800 maximum: 5000 minimum: 0 type: integer required: - transcription_engine - transcription_model title: DeepgramNova3Config type: object NoiseSuppressionStart: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 direction: both noise_suppression_engine: DeepFilterNet noise_suppression_engine_config: attenuation_limit: 100 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string direction: $ref: '#/components/schemas/NoiseSuppressionDirection' noise_suppression_engine: $ref: '#/components/schemas/NoiseSuppressionEngine' noise_suppression_engine_config: $ref: '#/components/schemas/NoiseSuppressionEngineConfig' title: Noise Suppression Start Request type: object PauseRecordingRequest: properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string recording_id: description: Uniquely identifies the resource. example: 6e00ab49-9487-4364-8ad6-23965965afb2 format: uuid type: string title: Pause Recording Request type: object AnswerRequest: example: assistant: greeting: Hi, I'm your assistant. How can I help? id: asst_123 tools: - hangup: {} type: hangup client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 deepfake_detection: enabled: true rtp_timeout: 30 timeout: 15 send_silence_when_idle: true webhook_url: https://www.example.com/server-b/ webhook_url_method: POST properties: assistant: $ref: '#/components/schemas/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. example: f5586561-8ff0-4291-a0ac-84fe544797bd 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. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_headers: description: Custom headers to be added to the SIP INVITE response. example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/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 example: G722,PCMU,PCMA,G729,OPUS,VP8,H264 type: string record: description: Start recording automatically after an event. Disabled by default. enum: - record-from-answer example: 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 example: single 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. example: my_recording_file_name 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 example: wav 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). example: 1000 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). example: 100 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 example: 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 example: trim-silence type: string send_silence_when_idle: default: false description: Generate silence RTP packets when no transmission available. example: true type: boolean sip_headers: description: SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported. example: - name: User-to-User value: value items: $ref: '#/components/schemas/SipHeader' type: array sound_modifications: $ref: '#/components/schemas/SoundModifications' stream_bidirectional_codec: $ref: '#/components/schemas/StreamBidirectionalCodec' stream_bidirectional_mode: $ref: '#/components/schemas/StreamBidirectionalMode' stream_bidirectional_target_legs: $ref: '#/components/schemas/StreamBidirectionalTargetLegs' stream_codec: $ref: '#/components/schemas/StreamCodec' stream_track: default: inbound_track description: Specifies which track should be streamed. enum: - inbound_track - outbound_track - both_tracks example: both_tracks type: string stream_url: description: The destination WebSocket address where the stream is going to be delivered. example: wss://www.example.com/websocket type: string transcription: default: false description: Enable transcription upon call answer. The default value is false. example: true type: boolean transcription_config: $ref: '#/components/schemas/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. example: call.hangup: retries_ms: - 1000 - 2000 - 5000 type: object webhook_url: description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call. example: https://www.example.com/server-b/ type: string webhook_url_method: default: POST description: HTTP request type used for `webhook_url`. enum: - POST - GET example: 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`. example: call.bridge: https://www.example.com/webhooks/bridge call.hangup: https://www.example.com/webhooks/hangup type: object webhook_urls_method: default: POST description: HTTP request method to invoke `webhook_urls`. enum: - POST - GET example: POST type: string title: Answer Request type: object DeepgramNova2Config: example: keywords_boosting: krieger: 1 snuffleupagus: 5 systrom: 2 language: en transcription_engine: Deepgram transcription_model: deepgram/nova-2 properties: interim_results: default: false description: Whether to send also interim results. If set to false, only final results will be sent. example: true 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}`.' example: krieger: 1 snuffleupagus: 5 systrom: 2 type: object language: $ref: '#/components/schemas/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. example: 800 maximum: 5000 minimum: 0 type: integer required: - transcription_engine - transcription_model title: DeepgramNova2Config type: object ElevenLabsVoiceSettings: properties: api_key_ref: description: '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.' example: my_elevenlabs_api_key type: string type: description: Voice settings provider type enum: - elevenlabs type: string required: - type title: ElevenLabs Voice Settings type: object AWSVoiceSettings: properties: type: description: Voice settings provider type enum: - aws type: string required: - type title: AWS Voice Settings type: object MessageMetadata: description: Metadata to add to the message type: object TranscriptionEngineBConfig: properties: language: $ref: '#/components/schemas/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 TransferTool: properties: transfer: $ref: '#/components/schemas/CallControlTransferToolParams' type: enum: - transfer type: string required: - type - transfer title: TransferTool type: object TranscriptionStartRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 transcription_engine: Google transcription_engine_config: language: en transcription_engine: Google properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 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 example: Google type: string transcription_engine_config: discriminator: mapping: A: '#/components/schemas/TranscriptionEngineAConfig' AssemblyAI: '#/components/schemas/TranscriptionEngineAssemblyaiConfig' Azure: '#/components/schemas/TranscriptionEngineAzureConfig' B: '#/components/schemas/TranscriptionEngineBConfig' Deepgram: '#/components/schemas/TranscriptionEngineDeepgramConfig' Google: '#/components/schemas/TranscriptionEngineGoogleConfig' Telnyx: '#/components/schemas/TranscriptionEngineTelnyxConfig' xAI: '#/components/schemas/TranscriptionEngineXaiConfig' propertyName: transcription_engine oneOf: - $ref: '#/components/schemas/TranscriptionEngineGoogleConfig' - $ref: '#/components/schemas/TranscriptionEngineTelnyxConfig' - $ref: '#/components/schemas/TranscriptionEngineDeepgramConfig' - $ref: '#/components/schemas/TranscriptionEngineAzureConfig' - $ref: '#/components/schemas/TranscriptionEngineXaiConfig' - $ref: '#/components/schemas/TranscriptionEngineAssemblyaiConfig' - $ref: '#/components/schemas/TranscriptionEngineAConfig' - $ref: '#/components/schemas/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`. example: both type: string title: Transcription start request type: object CallWithRecordingId: example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg call_duration: 50 call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768 call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768 client_state: aGF2ZSBhIG5pY2UgZGF5ID1d end_time: '2019-01-23T18:11:52.574Z' is_alive: false record_type: call recording_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a start_time: '2019-01-23T18:10:02.574Z' properties: call_control_id: description: Unique identifier and token for controlling the call. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg type: string call_duration: description: Indicates the duration of the call in seconds example: 50 type: integer call_leg_id: description: ID that is unique to the call and can be used to correlate webhook events example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1 type: string call_session_id: description: 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 example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1 type: string client_state: description: State received from a command. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string end_time: description: ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive example: '2019-01-23T18:11:52.574Z' type: string is_alive: description: Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is asynchronous). example: true type: boolean record_type: enum: - call example: call type: string recording_id: description: The ID of the recording. Only present when the record parameter is set to record-from-answer. example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a format: uuid type: string start_time: description: ISO 8601 formatted date indicating when the call started example: '2019-01-23T18:10:02.574Z' type: string required: - call_control_id - call_leg_id - call_session_id - is_alive - record_type title: Call With Recording ID type: object 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 example: PCMA title: Stream Codec type: string call-control_Error: properties: code: format: integer type: string detail: type: string meta: type: object source: properties: parameter: description: Indicates which query parameter caused the error. type: string pointer: description: JSON pointer (RFC6901) to the offending entity. format: json-pointer type: string type: object title: type: string required: - code - title ToolCall: description: A call to a function tool created by the model. example: function: name: get_weather id: call_123 type: function properties: function: description: The function that the model called. properties: name: description: The name of the function to call. type: string required: - name type: object id: description: The ID of the tool call. type: string type: description: The type of the tool. Currently, only `function` is supported. enum: - function type: string required: - id - type - function title: Tool Call type: object VoiceConfig: default: Telnyx.KokoroTTS.af description: "The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.` (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.\n- **Azure:** Use `Azure.. (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).)\n- **ElevenLabs:** Use `ElevenLabs..` (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\": \"\"}`. 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).\n - **Telnyx:** Use `Telnyx..`\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`." example: Telnyx.KokoroTTS.af type: string CallControlRetrievalTool: properties: retrieval: $ref: '#/components/schemas/CallControlBucketIds' type: enum: - retrieval type: string required: - type - retrieval title: RetrievalTool type: object WebhookTool: properties: type: enum: - webhook type: string webhook: $ref: '#/components/schemas/CallControlWebhookToolParams' required: - type - webhook title: WebhookTool type: object LeaveQueueRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: Leave Queue Request type: object PlaybackStopRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 overlay: false stop: all properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string overlay: default: false description: When enabled, it stops the audio being played in the overlay queue. example: true type: boolean stop: default: all description: Use `current` to stop the current audio being played. Use `all` to stop the current audio file being played and clear all audio files from the queue. example: current type: string title: Playback Stop Request type: object UserMessage: description: Messages sent by an end user example: content: Hello, I would like some help. role: user properties: content: description: The contents of the user message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' role: description: The role of the messages author, in this case `user`. enum: - user type: string required: - role - content title: User message. type: object CallRequest: example: answering_machine_detection: detect answering_machine_detection_config: after_greeting_silence_millis: 1000 between_words_silence_millis: 1000 greeting_duration_millis: 1000 greeting_silence_duration_millis: 2000 greeting_total_analysis_time_millis: 50000 initial_silence_millis: 1000 maximum_number_of_words: 1000 maximum_word_length_millis: 2000 silence_threshold: 512 total_analysis_time_millis: 5000 audio_url: http://www.example.com/sounds/greeting.wav bridge_intent: true bridge_on_answer: true client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 conference_config: conference_name: telnyx-conference start_conference_on_enter: true connection_id: 7267xxxxxxxxxxxxxx custom_headers: - name: head_1 value: val_1 - name: head_2 value: val_2 deepfake_detection: enabled: true rtp_timeout: 30 timeout: 15 dialogflow_config: analyze_sentiment: false partial_automated_agent_reply: false enable_dialogflow: false from: '+18005550101' from_display_name: Company Name link_to: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg== media_encryption: SRTP send_silence_when_idle: true sip_auth_password: password sip_auth_username: username sip_headers: - name: User-to-User value: '12345' sip_transport_protocol: TLS stream_track: both_tracks stream_url: wss://www.example.com/websocket time_limit_secs: 60 timeout_secs: 60 to: +18005550100 or sip:username@sip.telnyx.com;secure=srtp webhook_retries_policies: call.hangup: retries_ms: - 1000 - 2000 - 5000 webhook_url: https://www.example.com/server-b/ webhook_url_method: POST webhook_urls: call.bridge: https://www.example.com/webhooks/bridge call.hangup: https://www.example.com/webhooks/hangup webhook_urls_method: POST 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. example: 1000 format: int32 type: integer between_words_silence_millis: default: 50 description: Maximum threshold for silence between words. example: 100 format: int32 type: integer greeting_duration_millis: default: 3500 description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. example: 1500 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. example: 2000 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. example: 7500 format: int32 type: integer initial_silence_millis: default: 3500 description: If initial silence duration is greater than this value, consider it a machine. example: 1800 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. example: 3 format: int32 type: integer maximum_word_length_millis: default: 3500 description: If a single word lasts longer than this threshold, consider it a machine. example: 2000 format: int32 type: integer silence_threshold: default: 256 description: Minimum noise threshold for any analysis. example: 512 format: int32 type: integer total_analysis_time_millis: default: 3500 description: Maximum timeout threshold for overall detection. example: 5000 format: int32 type: integer type: object assistant: $ref: '#/components/schemas/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. example: http://example.com/message.wav 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. example: f5586561-8ff0-4291-a0ac-84fe544797bd 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. example: true 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. example: true type: boolean client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string command_id: description: Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 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 example: on_exit type: string conference_name: description: Conference name to be joined example: telnyx-conference 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` example: false 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". example: true type: boolean hold: description: Whether the participant should be put on hold immediately after joining the conference. Defaults to "false". example: true 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". example: http://example.com/message.wav 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". example: my_media_uploaded_to_media_storage_api type: string id: description: Conference ID to be joined example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 format: uuid type: string mute: description: Whether the participant should be muted immediately after joining the conference. Defaults to "false". example: true 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". example: true 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". example: false type: boolean start_conference_on_enter: description: Whether the conference should be started after the participant joins the conference. Defaults to "false". example: true 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 example: 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. example: - v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ - v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw 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. example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/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: '#/components/schemas/DialogflowConfig' enable_dialogflow: default: false description: Enables Dialogflow for the current call. The default value is false. example: true 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. example: '+18005550101' 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. example: Company Name type: string link_to: description: Use another call's control id for sharing the same call session id example: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg== 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. example: my_media_uploaded_to_media_storage_api 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. example: self type: string preferred_codecs: description: The list of comma-separated codecs in a preferred order for the forked media to be received. example: G722,PCMU,PCMA,G729,OPUS,VP8,H264 type: string prevent_double_bridge: default: false description: Prevents bridging and hangs up the call if the target is already bridged. Disabled by default. example: true 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 example: id type: string record: description: Start recording automatically after an event. Disabled by default. enum: - record-from-answer example: 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 example: single 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. example: my_recording_file_name 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 example: wav 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). example: 1000 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). example: 100 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 example: 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 example: trim-silence type: string send_silence_when_idle: default: false description: Generate silence RTP packets when no transmission available. example: true 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. example: - name: User-to-User value: value items: $ref: '#/components/schemas/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 example: Canada 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: '#/components/schemas/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. example: your-auth-token maxLength: 4000 type: string stream_bidirectional_codec: $ref: '#/components/schemas/StreamBidirectionalCodec' stream_bidirectional_mode: $ref: '#/components/schemas/StreamBidirectionalMode' stream_bidirectional_sampling_rate: $ref: '#/components/schemas/StreamBidirectionalSamplingRate' stream_bidirectional_target_legs: $ref: '#/components/schemas/StreamBidirectionalTargetLegs' stream_codec: $ref: '#/components/schemas/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. example: true type: boolean stream_track: default: inbound_track description: Specifies which track should be streamed. enum: - inbound_track - outbound_track - both_tracks example: both_tracks type: string stream_url: description: The destination WebSocket address where the stream is going to be delivered. example: wss://www.example.com/websocket type: string supervise_call_control_id: description: The call leg which will be supervised by the new call. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg 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. example: 600 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. example: 60 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: - example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp type: string - example: - '+18005550100' - sip:username@sip.telnyx.com;secure=srtp items: type: string type: array transcription: default: false description: Enable transcription upon call answer. The default value is false. example: true type: boolean transcription_config: $ref: '#/components/schemas/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. example: call.hangup: retries_ms: - 1000 - 2000 - 5000 type: object webhook_url: description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call. example: https://www.example.com/server-b/ type: string webhook_url_method: default: POST description: HTTP request type used for `webhook_url`. enum: - POST - GET example: 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. example: call.bridge: https://www.example.com/webhooks/bridge call.hangup: https://www.example.com/webhooks/hangup type: object webhook_urls_method: default: POST description: HTTP request method to invoke `webhook_urls`. enum: - POST - GET example: POST type: string required: - connection_id - to - from title: Dial Request type: object AzureTranscriptionRegion: description: Azure region to use for speech recognition enum: - australiaeast - centralindia - eastus - northcentralus - westeurope - westus2 example: eastus title: Azure transcription engine list of regions type: string SwitchSupervisorRoleRequest: example: role: barge properties: role: description: The supervisor role to switch to. 'barge' allows speaking to both parties, 'whisper' allows speaking to caller only, 'monitor' allows listening only. enum: - barge - whisper - monitor example: barge type: string required: - role title: Switch Supervisor Role Request type: object PlayAudioUrlRequest: example: audio_url: http://www.example.com/sounds/greeting.wav client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 loop: infinity overlay: true stop: current target_legs: self properties: audio_type: default: mp3 description: Specifies the type of audio provided in `audio_url` or `playback_content`. enum: - mp3 - wav example: wav type: string audio_url: description: The URL of a file to be played back on the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. example: http://example.com/message.wav type: string cache_audio: default: true description: Caches the audio file. Useful when playing the same audio file multiple times during the call. example: true type: boolean client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string loop: $ref: '#/components/schemas/Loopcount' default: 1 description: The number of times the audio file should be played. If supplied, the value must be an integer between 1 and 100, or the special string `infinity` for an endless loop. example: infinity media_name: description: The media_name of a file to be played back on the call. 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. example: my_media_uploaded_to_media_storage_api type: string overlay: default: false description: 'When enabled, audio will be mixed on top of any other audio that is actively being played back. Note that `overlay: true` will only work if there is another audio file already being played on the call.' example: true type: boolean playback_content: description: 'Allows a user to provide base64 encoded mp3 or wav. Note: when using this parameter, `media_url` and `media_name` in the `playback_started` and `playback_ended` webhooks will be empty' example: SUQzAwAAAAADf1... type: string stop: description: When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue. example: current type: string target_legs: default: self description: Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`, `opposite` or `both`. example: self type: string title: Play Audio URL Request 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 CheckAvailabilityTool: properties: check_availability: $ref: '#/components/schemas/CheckAvailabilityToolParams' type: enum: - check_availability type: string required: - type - check_availability title: CheckAvailabilityTool type: object NoiseSuppressionEngine: default: Denoiser description: "The engine to use for noise suppression.\nFor backward compatibility, engines A, B, C, and D are also supported, but are deprecated:\n A - Denoiser\n B - DeepFilterNet\n C - Krisp\n D - AiCoustics" enum: - Denoiser - DeepFilterNet - Krisp - AiCoustics example: Denoiser title: Noise Suppression Engine type: string CustomSipHeader: example: name: head_1 value: val_1 properties: name: description: The name of the header to add. example: head_1 type: string value: description: The value of the header. example: val_1 type: string required: - name - value title: Custom SIP Header type: object AIAssistantAddMessagesRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 messages: - content: Get the user's favorite color role: system properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string messages: description: The messages to add to the conversation. items: discriminator: mapping: assistant: '#/components/schemas/AssistantMessage' developer: '#/components/schemas/DeveloperMessage' system: '#/components/schemas/SystemMessage' tool: '#/components/schemas/ToolMessage' user: '#/components/schemas/UserMessage' propertyName: role oneOf: - $ref: '#/components/schemas/UserMessage' - $ref: '#/components/schemas/AssistantMessage' - $ref: '#/components/schemas/ToolMessage' - $ref: '#/components/schemas/SystemMessage' - $ref: '#/components/schemas/DeveloperMessage' type: array title: AI Assistant Add Messages Request type: object SendSIPInfoRequest: example: body: '{"key": "value", "numValue": 100}' client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 content_type: application/json properties: body: description: Content of the SIP INFO example: '{"key": "value", "numValue": 100}' type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string content_type: description: Content type of the INFO body. Must be MIME type compliant. There is a 1,400 bytes limit example: application/json type: string required: - content_type - body title: Send SIP Info Request type: object SpeakRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 language: arb payload: Say this on the call payload_type: text service_level: basic stop: current voice: female properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string language: description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified. enum: - arb - cmn-CN - cy-GB - da-DK - de-DE - en-AU - en-GB - en-GB-WLS - en-IN - en-US - es-ES - es-MX - es-US - fr-CA - fr-FR - hi-IN - is-IS - it-IT - ja-JP - ko-KR - nb-NO - nl-NL - pl-PL - pt-BR - pt-PT - ro-RO - ru-RU - sv-SE - tr-TR example: en-US type: string loop: $ref: '#/components/schemas/Loopcount' description: The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1. payload: description: The text or SSML to be converted into speech. There is a 3,000 character limit. example: Say this on the call type: string payload_type: default: text description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML). enum: - text - ssml example: ssml type: string service_level: default: premium description: This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed. enum: - basic - premium example: premium type: string stop: description: When specified, it stops the current audio being played. Specify `current` to stop the current audio being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played and to also clear all audio files from the queue. example: current type: string target_legs: default: self description: Specifies which legs of the call should receive the spoken audio. enum: - self - opposite - both example: both type: string voice: description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`. Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.` (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.\n- **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `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). Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\"}`. 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).\n- **Telnyx:** Use `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost.\n- **Rime:** Use `Rime..` (e.g., `Rime.Arcana.cove`). Supported model_ids: `Arcana`, `Mist`. Use `voice_settings` to configure voice_speed.\n- **Resemble:** Use `Resemble.Turbo.` (e.g., `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate, and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\nFor service_level basic, you may define the gender of the speaker (male or female)." example: Telnyx.KokoroTTS.af type: string voice_settings: description: The settings associated with the voice selected discriminator: mapping: aws: '#/components/schemas/AWSVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' rime: '#/components/schemas/RimeVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' propertyName: type oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/RimeVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' required: - payload - voice title: Speak Request type: object AzureVoiceSettings: properties: api_key_ref: description: The `identifier` for an integration secret that refers to your Azure Speech API key. example: my_azure_api_key type: string deployment_id: description: The deployment ID for a custom Azure neural voice. example: my-custom-voice-deployment type: string effect: description: Audio effect to apply. enum: - eq_car - eq_telecomhp8k type: string gender: description: Voice gender filter. enum: - Male - Female type: string region: description: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom API key. example: eastus type: string type: description: Voice settings provider type enum: - azure type: string required: - type title: Azure Voice Settings type: object InterruptionSettings: description: Settings for handling user interruptions during assistant speech properties: enable: default: true description: When true, allows users to interrupt the assistant while speaking type: boolean type: object Loopcount: oneOf: - type: string - type: integer TranscriptionEngineDeepgramConfig: discriminator: mapping: deepgram/nova-2: '#/components/schemas/DeepgramNova2Config' deepgram/nova-3: '#/components/schemas/DeepgramNova3Config' propertyName: transcription_model oneOf: - $ref: '#/components/schemas/DeepgramNova2Config' - $ref: '#/components/schemas/DeepgramNova3Config' TransferCallRequest: example: answering_machine_detection: detect answering_machine_detection_config: after_greeting_silence_millis: 1000 between_words_silence_millis: 1000 greeting_duration_millis: 1000 greeting_silence_duration_millis: 2000 greeting_total_analysis_time_millis: 50000 initial_silence_millis: 1000 maximum_number_of_words: 1000 maximum_word_length_millis: 2000 silence_threshold: 512 total_analysis_time_millis: 5000 audio_url: http://www.example.com/sounds/greeting.wav client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 custom_headers: - name: head_1 value: val_1 - name: head_2 value: val_2 early_media: true from: '+18005550101' from_display_name: Company Name media_encryption: SRTP sip_auth_password: password sip_auth_username: username sip_headers: - name: User-to-User value: value sip_transport_protocol: TLS time_limit_secs: 60 timeout_secs: 60 to: +18005550100 or sip:username@sip.telnyx.com;secure=srtp webhook_url: https://www.example.com/server-b/ webhook_url_method: POST properties: answering_machine_detection: default: disabled description: Enables Answering Machine 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. example: 1000 format: int32 type: integer between_words_silence_millis: default: 50 description: Maximum threshold for silence between words. example: 100 format: int32 type: integer greeting_duration_millis: default: 3500 description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. example: 1500 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. example: 2000 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. example: 7500 format: int32 type: integer initial_silence_millis: default: 3500 description: If initial silence duration is greater than this value, consider it a machine. example: 1800 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. example: 3 format: int32 type: integer maximum_word_length_millis: default: 3500 description: If a single word lasts longer than this threshold, consider it a machine. example: 2000 format: int32 type: integer silence_threshold: default: 256 description: Minimum noise threshold for any analysis. example: 512 format: int32 type: integer total_analysis_time_millis: default: 3500 description: Maximum timeout threshold for overall detection. example: 5000 format: int32 type: integer type: object audio_url: description: The URL of a file to be played back when the transfer destination answers before bridging the call. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. example: http://example.com/message.wav type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_headers: description: Custom headers to be added to the SIP INVITE. example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' type: array early_media: default: true description: If set to false, early media will not be passed to the originating leg. example: 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. This attribute will default to the `to` number of the original call if omitted. example: '+18005550101' 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. example: Company Name type: string media_encryption: default: disabled description: 'Defines whether media should be encrypted on the new call leg. 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 when the transfer destination answers before bridging the call. 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. example: my_media_uploaded_to_media_storage_api type: string mute_dtmf: default: none description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent. enum: - none - both - self - opposite example: opposite type: string park_after_unbridge: description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred). 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. example: self type: string preferred_codecs: description: The list of comma-separated codecs in order of preference to be used during the call. The codecs supported are `G722`, `PCMU`, `PCMA`, `G729`, `OPUS`, `VP8`, `H264`, `AMR-WB`. example: G722,PCMU,PCMA,G729,OPUS,VP8,H264 type: string 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 example: id type: string record: description: Start recording automatically after an event. Disabled by default. enum: - record-from-answer example: 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 example: single 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. example: my_recording_file_name 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 example: wav 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). example: 1000 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). example: 100 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 example: 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 example: trim-silence type: string sip_auth_password: description: SIP Authentication password used for SIP challenges. example: password type: string sip_auth_username: description: SIP Authentication username used for SIP challenges. example: username type: string sip_headers: description: SIP headers to be added to the SIP INVITE. Currently only User-to-User header is supported. example: - name: User-to-User value: value items: $ref: '#/components/schemas/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 example: Canada 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: '#/components/schemas/SoundModifications' target_leg_client_state: description: Use this field to add state to every subsequent webhook for the new leg. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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. example: 600 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 transferred. 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. example: 60 format: int32 type: integer to: description: The DID or SIP URI to dial out to. 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. example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp type: string 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. example: call.answered: retries_ms: - 1000 - 2000 - 5000 type: object webhook_url: description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call. example: https://www.example.com/server-b/ type: string webhook_url_method: default: POST description: HTTP request type used for `webhook_url`. enum: - POST - GET example: 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`. example: call.answered: https://www.example.com/webhooks/answered call.hangup: https://www.example.com/webhooks/hangup type: object webhook_urls_method: default: POST description: HTTP request method to invoke `webhook_urls`. enum: - POST - GET example: POST type: string required: - to title: Transfer Call Request 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: '#/components/schemas/AzureTranscriptionLanguage' region: $ref: '#/components/schemas/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 RejectRequest: example: cause: USER_BUSY client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: cause: description: Cause for call rejection. enum: - CALL_REJECTED - USER_BUSY example: USER_BUSY type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string required: - cause title: Reject Request type: object TranscriptionEngineGoogleConfig: properties: enable_speaker_diarization: default: false description: Enables speaker diarization. example: true type: boolean hints: default: [] description: Hints to improve transcription accuracy. example: [] 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. example: true type: boolean language: $ref: '#/components/schemas/GoogleTranscriptionLanguage' max_speaker_count: default: 6 description: Defines maximum number of speakers in the conversation. example: 4 format: int32 type: integer min_speaker_count: default: 2 description: Defines minimum number of speakers in the conversation. example: 4 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. example: true type: boolean speech_context: description: Speech context to improve transcription accuracy. items: properties: boost: default: 1.0 description: Boost factor for the speech context. example: 1.0 maximum: 20.0 minimum: 0.0 type: number phrases: default: [] example: [] 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`. example: true type: boolean title: Transcription engine Google config type: object HangupTool: properties: hangup: $ref: '#/components/schemas/HangupToolParams' type: enum: - hangup type: string required: - type - hangup title: HangupTool type: object SipHeader: example: name: User-to-User value: value properties: name: description: The name of the header to add. enum: - User-to-User example: User-to-User type: string value: description: The value of the header. example: value type: string required: - name - value title: SIP Header type: object TranscriptionConfig: description: The settings associated with speech to text for the voice assistant. This is only relevant if the assistant uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`) will ignore this field. properties: language: default: auto description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`.' example: auto type: string model: default: distil-whisper/distil-large-v2 description: 'The speech to text model to be used by the voice assistant. Supported models include: - `deepgram/flux` (or `flux`) for live streaming turn-taking. - `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription. - `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription. - `assemblyai/universal-streaming` for live streaming transcription. - `xai/grok-stt` for live streaming transcription. - `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`. - `google/latest_long` for non-streaming multilingual transcription. - `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription. - `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.' enum: - deepgram/flux - flux - deepgram/nova-3 - deepgram/nova-2 - speechmatics/standard - speechmatics/enhanced - assemblyai/universal-streaming - xai/grok-stt - azure/fast - azure/realtime - google/latest_long - distil-whisper/distil-large-v2 - openai/whisper-large-v3-turbo example: distil-whisper/distil-large-v2 type: string type: object ResembleSampleRate: default: '48000' description: Audio sample rate in Hz. enum: - '8000' - '16000' - '22050' - '32000' - '44100' - '48000' title: Resemble Sample Rate type: string TranscriptionStopRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: Transcription stop request type: object XAIVoiceSettings: properties: language: default: auto description: Language code, or `auto` to detect automatically. type: string type: description: Voice settings provider type enum: - xai type: string required: - type title: xAI Voice Settings type: object AIAssistantJoinParticipant: properties: id: description: The call_control_id of the participant to add to the conversation. example: v3:abc123def456 type: string name: description: Display name for the participant. example: John Doe type: string on_hangup: default: continue_conversation description: Determines what happens to the conversation when this participant hangs up. enum: - continue_conversation - end_conversation example: continue_conversation type: string role: description: The role of the participant in the conversation. enum: - user example: user type: string required: - id - role type: object StartForkingRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 rx: udp:192.0.2.1:9000 tx: udp:192.0.2.1:9001 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string rx: description: The network target, , where the call's incoming RTP media packets should be forwarded. example: udp:192.0.2.1:9000 type: string stream_type: default: decrypted description: Optionally specify a media type to stream. If `decrypted` selected, Telnyx will decrypt incoming SIP media before forking to the target. `rx` and `tx` are required fields if `decrypted` selected. enum: - decrypted example: decrypted type: string tx: description: The network target, , where the call's outgoing RTP media packets should be forwarded. example: udp:192.0.2.1:9001 type: string title: Start Forking Request type: object DeveloperMessage: description: Developer-provided instructions that the model should follow, regardless of messages sent by the user. example: content: Get the user's favorite color role: developer properties: content: description: The contents of the developer message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' role: description: The role of the messages author, in this case developer. enum: - developer type: string required: - role - content title: Developer Message type: object CallControlCommandResultWithRecordingId: example: recording_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a result: ok properties: recording_id: description: The ID of the recording. Only present when the record parameter is set to record-from-answer. example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a format: uuid type: string result: example: ok type: string title: Call Control Command Result With Recording ID type: object GatherRequest: properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string gather_id: description: An id that will be sent back in the corresponding `call.gather.ended` webhook. Will be randomly generated if not specified. example: my_gather_id maxLength: 40 minLength: 1 type: string initial_timeout_millis: default: 5000 description: The number of milliseconds to wait for the first DTMF. example: 10000 format: int32 type: integer inter_digit_timeout_millis: default: 5000 description: The number of milliseconds to wait for input between digits. example: 10000 format: int32 type: integer maximum_digits: default: 128 description: The maximum number of digits to fetch. This parameter has a maximum value of 128. example: 10 format: int32 type: integer minimum_digits: default: 1 description: The minimum number of digits to fetch. This parameter has a minimum value of 1. example: 1 format: int32 type: integer terminating_digit: default: '#' description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. example: '#' type: string timeout_millis: default: 60000 description: The number of milliseconds to wait to complete the request. example: 60000 format: int32 type: integer valid_digits: default: 0123456789#* description: A list of all digits accepted as valid. example: '123' type: string title: Gather 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 DialogflowConfig: properties: analyze_sentiment: default: false description: Enable sentiment analysis from Dialogflow. example: true type: boolean partial_automated_agent_reply: default: false description: Enable partial automated agent reply from Dialogflow. example: true type: boolean title: Dialogflow Config type: object CallControlCommandResult: example: result: ok properties: result: example: ok type: string title: Call Control Command Result 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. example: my_calcom_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. example: account_id: ACC-12345 customer_name: John 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. example: You are a friendly voice assistant. 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.). example: my_llm_api_key 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. example: gpt-4o 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. example: my_openai_api_key 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: discriminator: mapping: book_appointment: '#/components/schemas/BookAppointmentTool' check_availability: '#/components/schemas/CheckAvailabilityTool' hangup: '#/components/schemas/HangupTool' retrieval: '#/components/schemas/CallControlRetrievalTool' transfer: '#/components/schemas/TransferTool' webhook: '#/components/schemas/WebhookTool' propertyName: type oneOf: - $ref: '#/components/schemas/BookAppointmentTool' - $ref: '#/components/schemas/CheckAvailabilityTool' - $ref: '#/components/schemas/WebhookTool' - $ref: '#/components/schemas/HangupTool' - $ref: '#/components/schemas/TransferTool' - $ref: '#/components/schemas/CallControlRetrievalTool' type: array required: - id type: object ClientStateUpdateRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string required: - client_state title: Update client state Request type: object ToolMessage: example: content: Hello, I'm John. role: tool tool_call_id: call_123 properties: content: description: The contents of the tool message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' role: description: The role of the messages author, in this case `tool`. enum: - tool type: string tool_call_id: description: Tool call that this message is responding to. type: string required: - role - content - tool_call_id title: Tool Message type: object CallControlCommandResultWithConversationId: example: conversation_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a result: ok properties: conversation_id: description: The ID of the conversation created by the command. example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a format: uuid type: string result: example: ok type: string title: Call Control Command Result With Conversation ID type: object AssistantMessage: description: Messages sent by the model in response to user messages. example: content: Hello, I'm John. role: assistant properties: content: description: The contents of the assistant message. Required unless `tool_calls` type: string metadata: $ref: '#/components/schemas/MessageMetadata' role: description: The role of the messages author, in this case `assistant`. enum: - assistant type: string tool_calls: description: The tool calls generated by the model, such as function calls. items: $ref: '#/components/schemas/ToolCall' type: array required: - role title: Assistant Message type: object call-control_Errors: properties: errors: items: $ref: '#/components/schemas/call-control_Error' type: array TranscriptionEngineAssemblyaiConfig: properties: interim_results: default: false description: Whether to send also interim results. If set to false, only final results will be sent. example: true 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 SoundModifications: description: Use this field to modify sound effects, for example adjust the pitch. example: octaves: 0.1 pitch: 0.8 semitone: -2 track: both properties: octaves: description: Adjust the pitch in octaves, values should be between -1 and 1, default 0 example: -0.5 format: float type: number pitch: description: Set the pitch directly, value should be > 0, default 1 (lower = lower tone) example: 0.8 format: float type: number semitone: description: Adjust the pitch in semitones, values should be between -14 and 14, default 0 example: -10 format: float type: number track: default: outbound description: The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound` example: inbound type: string title: Sound modifications type: object ResembleVoiceSettings: properties: format: default: mp3 description: Output audio format. enum: - wav - mp3 type: string precision: default: PCM_32 description: Audio precision format. enum: - PCM_16 - PCM_24 - PCM_32 - MULAW type: string sample_rate: $ref: '#/components/schemas/ResembleSampleRate' type: description: Voice settings provider type enum: - resemble type: string required: - type title: Resemble Voice Settings type: object TranscriptionEngineAConfig: properties: enable_speaker_diarization: default: false description: Enables speaker diarization. example: true type: boolean hints: default: [] description: Hints to improve transcription accuracy. example: - Telnyx 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. example: true type: boolean language: $ref: '#/components/schemas/GoogleTranscriptionLanguage' max_speaker_count: default: 6 description: Defines maximum number of speakers in the conversation. example: 4 format: int32 type: integer min_speaker_count: default: 2 description: Defines minimum number of speakers in the conversation. example: 4 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. example: true type: boolean speech_context: description: Speech context to improve transcription accuracy. items: properties: boost: default: 1.0 description: Boost factor for the speech context. example: 1.0 maximum: 20.0 minimum: 0.0 type: number phrases: default: [] example: - Telnyx 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`. example: true type: boolean title: Transcription engine A config type: object NoiseSuppressionDirection: default: inbound description: The direction of the audio stream to be noise suppressed. enum: - inbound - outbound - both example: outbound title: Noise Suppression Direction type: string StartStreamingRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 dialogflow_config: analyze_sentiment: false partial_automated_agent_reply: false enable_dialogflow: false stream_track: both_tracks stream_url: wss://www.example.com/websocket properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_parameters: description: Custom parameters to be sent as part of the WebSocket connection. example: - name: param1 value: value1 - name: param2 value: value2 items: properties: name: description: The name of the custom parameter. type: string value: description: The value of the custom parameter. type: string type: object type: array dialogflow_config: $ref: '#/components/schemas/DialogflowConfig' enable_dialogflow: default: false description: Enables Dialogflow for the current call. The default value is false. example: true type: boolean stream_auth_token: description: An authentication token to be sent as part of the WebSocket connection. Maximum length is 4000 characters. example: your-auth-token maxLength: 4000 type: string stream_bidirectional_codec: $ref: '#/components/schemas/StreamBidirectionalCodec' stream_bidirectional_mode: $ref: '#/components/schemas/StreamBidirectionalMode' stream_bidirectional_sampling_rate: $ref: '#/components/schemas/StreamBidirectionalSamplingRate' stream_bidirectional_target_legs: $ref: '#/components/schemas/StreamBidirectionalTargetLegs' stream_codec: $ref: '#/components/schemas/StreamCodec' stream_track: default: inbound_track description: Specifies which track should be streamed. enum: - inbound_track - outbound_track - both_tracks example: both_tracks type: string stream_url: description: The destination WebSocket address where the stream is going to be delivered. example: wss://www.example.com/websocket type: string title: Start Streaming Request type: object BookAppointmentTool: properties: book_appointment: $ref: '#/components/schemas/BookAppointmentToolParams' type: enum: - book_appointment type: string required: - type - book_appointment title: BookAppointmentTool type: object StartRecordingRequest: example: channels: single client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 format: wav max_length: 0 play_beep: true timeout_secs: 0 transcription: true transcription_engine: B transcription_language: en properties: channels: description: When `dual`, final audio file will be stereo recorded with the first leg on channel A, and the rest on channel B. enum: - single - dual example: single type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string 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. example: my_recording_file_name maxLength: 40 minLength: 1 type: string format: description: The audio file format used when storing the call recording. Can be either `mp3` or `wav`. enum: - wav - mp3 example: mp3 type: string max_length: default: 0 description: Defines the maximum length for the recording in seconds. The minimum value is 0. The maximum value is 14400. The default value is 0 (infinite) example: 100 format: int32 type: integer play_beep: description: If enabled, a beep sound will be played at the start of a recording. example: true type: boolean recording_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 example: outbound type: string timeout_secs: default: 0 description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected. 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) example: 100 format: int32 type: integer transcription: default: false description: Enable post recording transcription. The default value is false. example: true type: boolean transcription_engine: default: A description: 'Engine to use for speech recognition. `A` - `Google`, `B` - `Telnyx`, `deepgram/nova-3` - `Deepgram Nova-3`. Note: `deepgram/nova-3` supports only `en` and `en-{Region}` languages.' enum: - A - B - deepgram/nova-3 example: A type: string transcription_language: $ref: '#/components/schemas/TranscriptionLanguage' transcription_max_speaker_count: default: 6 description: Defines maximum number of speakers in the conversation. Applies to `google` engine only. example: 4 format: int32 type: integer transcription_min_speaker_count: default: 2 description: Defines minimum number of speakers in the conversation. Applies to `google` engine only. example: 4 format: int32 type: integer transcription_profanity_filter: default: false description: Enables profanity_filter. Applies to `google` engine only. example: true type: boolean transcription_speaker_diarization: default: false description: Enables speaker diarization. Applies to `google` engine only. example: true type: boolean trim: description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording. enum: - trim-silence example: trim-silence type: string required: - format - channels title: Start Recording Request 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. example: my_calcom_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 StopGatherRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: Stop Gather Request type: object TelnyxVoiceSettings: properties: type: description: Voice settings provider type enum: - telnyx type: string voice_speed: default: 1.0 description: 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. example: 1.0 format: float maximum: 2.0 minimum: 0.1 type: number required: - type title: Telnyx Voice Settings type: object CallControlTransferToolParams: properties: from: description: Number or SIP URI placing the call. example: '+35319605860' 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. example: Support type: string to: description: The destination number or SIP URI of the call. example: '+13129457420' 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. example: '{{ targets }}' type: string required: - targets - from title: TransferToolParams type: object SendDTMFRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 digits: 1www2WABCDw9 duration_millis: 500 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string digits: description: 'DTMF digits to send. Valid digits are 0-9, A-D, *, and #. Pauses can be added using w (0.5s) and W (1s).' example: 1www2WABCDw9 type: string duration_millis: default: 250 description: Specifies for how many milliseconds each digit will be played in the audio stream. Ranges from 100 to 500ms example: 500 format: int32 type: integer required: - digits title: Send DTMF Request type: object RimeVoiceSettings: properties: type: description: Voice settings provider type enum: - rime type: string voice_speed: default: 1.0 description: Speech speed multiplier. Default is 1.0. example: 1.0 format: float type: number required: - type title: Rime Voice Settings type: object SystemMessage: description: Developer-provided instructions that the model should follow, regardless of messages sent by the user. example: content: Get the user's favorite color role: system properties: content: description: The contents of the system message. type: string metadata: $ref: '#/components/schemas/MessageMetadata' role: description: The role of the messages author, in this case `system`. enum: - system type: string required: - role - content title: System Message type: object TranscriptionEngineTelnyxConfig: properties: language: $ref: '#/components/schemas/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 AIAssistantStartRequest: properties: assistant: $ref: '#/components/schemas/CallAssistantRequest' client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string greeting: description: Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit. example: Hello, can you tell me your age and where you live? type: string interruption_settings: $ref: '#/components/schemas/InterruptionSettings' message_history: default: [] description: A list of messages to seed the conversation history before the assistant starts. Follows the same message format as the `ai_assistant_add_messages` command. items: discriminator: mapping: assistant: '#/components/schemas/AssistantMessage' developer: '#/components/schemas/DeveloperMessage' system: '#/components/schemas/SystemMessage' tool: '#/components/schemas/ToolMessage' user: '#/components/schemas/UserMessage' propertyName: role oneOf: - $ref: '#/components/schemas/UserMessage' - $ref: '#/components/schemas/AssistantMessage' - $ref: '#/components/schemas/ToolMessage' - $ref: '#/components/schemas/SystemMessage' - $ref: '#/components/schemas/DeveloperMessage' type: array participants: default: [] description: A list of participants to add to the conversation when it starts. items: $ref: '#/components/schemas/AIAssistantJoinParticipant' type: array send_message_history_updates: default: false description: When `true`, a webhook is sent each time the conversation message history is updated. type: boolean transcription: $ref: '#/components/schemas/TranscriptionConfig' voice: $ref: '#/components/schemas/VoiceConfig' voice_settings: description: The settings associated with the voice selected discriminator: mapping: aws: '#/components/schemas/AWSVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' rime: '#/components/schemas/RimeVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' propertyName: type oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/RimeVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' type: object AIAssistantJoinRequest: properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string conversation_id: description: The ID of the AI assistant conversation to join. example: v3:abc123 type: string participant: $ref: '#/components/schemas/AIAssistantJoinParticipant' required: - conversation_id - participant type: object 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 example: en title: Telnyx transcription engine list of languages type: string StreamBidirectionalSamplingRate: default: 8000 description: Audio sampling rate. enum: - 8000 - 16000 - 22050 - 24000 - 48000 example: 16000 title: Bidirectional Stream Sampling Rate type: integer InworldVoiceSettings: properties: type: description: Voice settings provider type enum: - inworld type: string required: - type title: Inworld Voice Settings type: object ReferRequest: example: sip_address: sip:username@sip.non-telnyx-address.com properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d type: string command_id: description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_headers: description: Custom headers to be added to the SIP INVITE. example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' type: array sip_address: description: The SIP URI to which the call will be referred to. example: sip:username@sip.non-telnyx-address.com type: string 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 request. Currently only User-to-User header is supported. example: - name: User-to-User value: value items: $ref: '#/components/schemas/SipHeader' type: array required: - sip_address title: Refer request type: object GatherUsingAudioRequest: example: audio_url: http://example.com/message.wav client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 inter_digit_timeout_millis: 10000 invalid_audio_url: http://example.com/message.wav maximum_digits: 10 minimum_digits: 1 terminating_digit: '#' timeout_millis: 10000 valid_digits: '123' properties: audio_url: description: The URL of a file to be played back at the beginning of each prompt. The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request. example: http://example.com/message.wav type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string inter_digit_timeout_millis: default: 5000 description: The number of milliseconds to wait for input between digits. example: 10000 format: int32 type: integer invalid_audio_url: description: The URL of a file to play when digits don't match the `valid_digits` parameter or the number of digits is not between `min` and `max`. The URL can point to either a WAV or MP3 file. invalid_media_name and invalid_audio_url cannot be used together in one request. example: http://example.com/invalid.wav type: string invalid_media_name: description: The media_name of a file to be played back when digits don't match the `valid_digits` parameter or the number of digits is not between `min` and `max`. 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. example: my_media_uploaded_to_media_storage_api type: string maximum_digits: default: 128 description: The maximum number of digits to fetch. This parameter has a maximum value of 128. example: 10 format: int32 type: integer maximum_tries: default: 3 description: The maximum number of times the file should be played if there is no input from the user on the call. example: 3 format: int32 type: integer media_name: description: The media_name of a file to be played back at the beginning of each prompt. 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. example: my_media_uploaded_to_media_storage_api type: string minimum_digits: default: 1 description: The minimum number of digits to fetch. This parameter has a minimum value of 1. example: 1 format: int32 type: integer terminating_digit: default: '#' description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. example: '#' type: string timeout_millis: default: 60000 description: The number of milliseconds to wait for a DTMF response after file playback ends before a replaying the sound file. example: 60000 format: int32 type: integer valid_digits: default: 0123456789#* description: A list of all digits accepted as valid. example: '123' type: string title: Gather Using Audio Request type: object BridgeRequest: example: call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 park_after_unbridge: self properties: call_control_id: description: The Call Control ID of the call you want to bridge with, can't be used together with queue parameter or video_room_id parameter. example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg type: string client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string hold_after_unbridge: description: Specifies behavior after the bridge ends. If set to `true`, the current leg will be put on hold after unbridge instead of being hung up. example: true type: boolean mute_dtmf: default: none description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information will be sent. enum: - none - both - self - opposite example: opposite type: string park_after_unbridge: description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred). 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. example: self type: string play_ringtone: default: false description: Specifies whether to play a ringtone if the call you want to bridge with has not yet been answered. example: true type: boolean prevent_double_bridge: default: false description: When set to `true`, it prevents bridging if the target call is already bridged to another call. Disabled by default. example: true type: boolean queue: description: The name of the queue you want to bridge with, can't be used together with call_control_id parameter or video_room_id parameter. Bridging with a queue means bridging with the first call in the queue. The call will always be removed from the queue regardless of whether bridging succeeds. Returns an error when the queue is empty. example: support type: string record: description: Start recording automatically after an event. Disabled by default. enum: - record-from-answer example: 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 example: single 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. example: my_recording_file_name 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 example: wav 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). example: 1000 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). example: 100 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 example: 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 example: trim-silence type: string ringtone: default: us description: Specifies which country ringtone to play when `play_ringtone` is set to `true`. If not set, the US ringtone will be played. enum: - at - au - be - bg - br - ch - cl - cn - cz - de - dk - ee - es - fi - fr - gr - hu - il - in - it - jp - lt - mx - my - nl - 'no' - nz - ph - pl - pt - ru - se - sg - th - tw - uk - us-old - us - ve - za example: pl type: string video_room_context: description: The additional parameter that will be passed to the video conference. It is a text field and the user can decide how to use it. For example, you can set the participant name or pass JSON text. It can be used only with video_room_id parameter. example: Alice type: string video_room_id: description: The ID of the video room you want to bridge with, can't be used together with call_control_id parameter or queue parameter. example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0 format: uuid type: string required: - call_control_id title: Bridge Request type: object StreamBidirectionalMode: default: mp3 description: Configures method of bidirectional streaming (mp3, rtp). enum: - mp3 - rtp example: rtp title: Bidirectional Stream Mode type: string GatherUsingAIRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 greeting: Hello, can you tell me your age and where you live? message_history: - content: Hello, what's your name? role: assistant - content: Hello, I'm John. role: user parameters: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object send_message_history_updates: true send_partial_results: true user_response_timeout_ms: 5000 voice: Telnyx.KokoroTTS.af properties: assistant: $ref: '#/components/schemas/Assistant' client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string gather_ended_speech: description: Text that will be played when the gathering has finished. There is a 3,000 character limit. example: Thank you for providing the information. maxLength: 3000 type: string greeting: description: Text that will be played when the gathering starts, if none then nothing will be played when the gathering starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character limit. example: Hello, can you tell me your age and where you live? type: string interruption_settings: $ref: '#/components/schemas/InterruptionSettings' language: oneOf: - $ref: '#/components/schemas/GoogleTranscriptionLanguage' message_history: description: The message history you want the voice assistant to be aware of, this can be useful to keep the context of the conversation, or to pass additional information to the voice assistant. items: properties: content: description: The content of the message example: Hello, I'm 29 and I live in Paris. type: string role: description: The role of the message sender enum: - assistant - user example: user type: string type: object type: array parameters: description: The parameters described as a JSON Schema object that needs to be gathered by the voice assistant. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format example: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object type: object send_message_history_updates: description: Default is `false`. If set to `true`, the voice assistant will send updates to the message history via the `call.ai_gather.message_history_updated` callback in real time as the message history is updated. example: false type: boolean send_partial_results: description: Default is `false`. If set to `true`, the voice assistant will send partial results via the `call.ai_gather.partial_results` callback in real time as individual fields are gathered. If set to `false`, the voice assistant will only send the final result via the `call.ai_gather.ended` callback. example: false type: boolean transcription: $ref: '#/components/schemas/TranscriptionConfig' user_response_timeout_ms: default: 10000 description: The maximum time in milliseconds to wait for user response before timing out. example: 15000 type: integer voice: $ref: '#/components/schemas/VoiceConfig' voice_settings: description: The settings associated with the voice selected discriminator: mapping: aws: '#/components/schemas/AWSVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' rime: '#/components/schemas/RimeVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' propertyName: type oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/RimeVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' required: - parameters title: Gather Using AI Request type: object NoiseSuppressionEngineConfig: description: Configuration parameters for noise suppression engines. Different engines support different parameters. properties: attenuation_limit: default: 100 description: The attenuation limit for noise suppression (0-100). Only applicable for DeepFilterNet. example: 100 maximum: 100 minimum: 0 type: integer enhancement_level: description: Enhancement intensity (0.0-1.0). Only applicable for AiCoustics. example: 0.5 maximum: 1.0 minimum: 0.0 type: number family: description: AiCoustics model family. 'sparrow' optimized for human-to-human calls, 'quail' optimized for Voice AI/STT. Only applicable for AiCoustics. enum: - sparrow - quail example: sparrow type: string mode: description: Processing mode. Only applicable for DeepFilterNet. enum: - standard - advanced example: standard type: string model: description: The Krisp model to use. Only applicable for Krisp. enum: - krisp-viva-tel-v2.kef - krisp-viva-tel-lite-v1.kef - krisp-viva-pro-v1.kef - krisp-viva-ss-v1.kef example: krisp-viva-tel-v2.kef type: string size: description: AiCoustics model size. 's' and 'l' work with both families. 'xs' and 'xxs' are sparrow-only. 'vf_l' and 'vf_1_1_l' are quail-only. Only applicable for AiCoustics. enum: - s - l - xs - xxs - vf_l - vf_1_1_l example: l type: string suppression_level: description: Suppression level (0.0-100.0). Only applicable for Krisp. example: 50.0 maximum: 100.0 minimum: 0.0 type: number voice_gain: description: Voice gain multiplier (0.1-4.0). Only applicable for AiCoustics. example: 1.0 maximum: 4.0 minimum: 0.1 type: number title: Noise Suppression Engine Configuration 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 example: en title: Deepgram nova-3 transcription engine list of languages type: string MinimaxVoiceSettings: properties: language_boost: default: null description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. enum: - 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 type: - string - 'null' pitch: default: 0 description: Voice pitch adjustment. Default is 0. example: 0 type: integer speed: default: 1.0 description: Speech speed multiplier. Default is 1.0. example: 1.0 format: float type: number type: description: Voice settings provider type enum: - minimax type: string vol: default: 1.0 description: Speech volume multiplier. Default is 1.0. example: 1.0 format: float type: number required: - type title: Minimax Voice Settings type: object 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 example: en title: Azure transcription engine list of languages type: string 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 example: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object 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 example: properties: id: description: The id of the customer. type: string required: - id type: object 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 example: properties: page: description: The page number. type: integer required: - page type: object 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.' example: https://example.com/api/v1/function type: string required: - url - name - description title: WebhookToolParams type: object HangupRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string custom_headers: description: Custom headers to be added to the SIP BYE message. example: - name: head_1 value: val_1 - name: head_2 value: val_2 items: $ref: '#/components/schemas/CustomSipHeader' type: array title: Hangup Request 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 example: G722 title: Bidirectional Stream Codec type: string StreamBidirectionalTargetLegs: default: opposite description: Specifies which call legs should receive the bidirectional stream audio. enum: - both - self - opposite example: both title: Bidirectional Stream Target Legs type: string AIAssistantStopRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: AI Assistant Stop Request type: object StopSiprecRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: Stop Siprec Request type: object EnqueueRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 max_size: 20 max_wait_time_secs: 600 queue_name: support properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string keep_after_hangup: default: false description: If set to true, the call will remain in the queue after hangup. In this case bridging to such call will fail with necessary information needed to re-establish the call. example: true type: boolean max_size: default: 100 description: The maximum number of calls allowed in the queue at a given time. Can't be modified for an existing queue. example: 200 type: integer max_wait_time_secs: description: The number of seconds after which the call will be removed from the queue. example: 600 type: integer queue_name: description: The name of the queue the call should be put in. If a queue with a given name doesn't exist yet it will be created. example: tier_1_support type: string required: - queue_name title: Enqueue Request type: object ResumeRecordingRequest: properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string recording_id: description: Uniquely identifies the resource. example: 6e00ab49-9487-4364-8ad6-23965965afb2 format: uuid type: string title: Resume Recording Request type: object TranscriptionLanguage: default: en-US description: 'Language code for transcription. Note: Not all languages are supported by all transcription engines (google, telnyx, deepgram). See engine-specific documentation for supported values.' enum: - af - af-ZA - am - am-ET - ar - ar-AE - ar-BH - ar-DZ - ar-EG - ar-IL - ar-IQ - ar-JO - ar-KW - ar-LB - ar-MA - ar-MR - ar-OM - ar-PS - ar-QA - ar-SA - ar-TN - ar-YE - as - auto_detect - az - az-AZ - ba - be - bg - bg-BG - bn - bn-BD - bn-IN - bo - br - bs - bs-BA - ca - ca-ES - cs - cs-CZ - cy - da - da-DK - de - de-AT - de-CH - de-DE - el - el-GR - en - en-AU - en-CA - en-GB - en-GH - en-HK - en-IE - en-IN - en-KE - en-NG - en-NZ - en-PH - en-PK - en-SG - en-TZ - en-US - en-ZA - es - es-419 - es-AR - es-BO - es-CL - es-CO - es-CR - es-DO - es-EC - es-ES - es-GT - es-HN - es-MX - es-NI - es-PA - es-PE - es-PR - es-PY - es-SV - es-US - es-UY - es-VE - et - et-EE - eu - eu-ES - fa - fa-IR - fi - fi-FI - fil-PH - fo - fr - fr-BE - fr-CA - fr-CH - fr-FR - gl - gl-ES - gu - gu-IN - ha - haw - he - hi - hi-IN - hr - hr-HR - ht - hu - hu-HU - hy - hy-AM - id - id-ID - is - is-IS - it - it-CH - it-IT - iw-IL - ja - ja-JP - jv-ID - jw - ka - ka-GE - kk - kk-KZ - km - km-KH - kn - kn-IN - ko - ko-KR - la - lb - ln - lo - lo-LA - lt - lt-LT - lv - lv-LV - mg - mi - mk - mk-MK - ml - ml-IN - mn - mn-MN - mr - mr-IN - ms - ms-MY - mt - my - my-MM - ne - ne-NP - nl - nl-BE - nl-NL - nn - 'no' - no-NO - oc - pa - pa-Guru-IN - pl - pl-PL - ps - pt - pt-BR - pt-PT - ro - ro-RO - ru - ru-RU - rw-RW - sa - sd - si - si-LK - sk - sk-SK - sl - sl-SI - sn - so - sq - sq-AL - sr - sr-RS - ss-latn-za - st-ZA - su - su-ID - sv - sv-SE - sw - sw-KE - sw-TZ - ta - ta-IN - ta-LK - ta-MY - ta-SG - te - te-IN - tg - th - th-TH - tk - tl - tn-latn-za - tr - tr-TR - ts-ZA - tt - uk - uk-UA - ur - ur-IN - ur-PK - uz - uz-UZ - ve-ZA - vi - vi-VN - xh-ZA - yi - yo - yue-Hant-HK - zh - zh-TW - zu-ZA example: en-US title: Transcription Language type: string StopForkingRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string stream_type: default: raw description: Optionally specify a `stream_type`. This should match the `stream_type` that was used in `fork_start` command to properly stop the fork. enum: - raw - decrypted example: decrypted type: string title: Stop Forking Request 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 example: en title: Deepgram nova-2 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 example: en title: Google transcription engine list of languages type: string StopRecordingRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 recording_id: 6e00ab49-9487-4364-8ad6-23965965afb2 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string recording_id: description: Uniquely identifies the resource. example: 6e00ab49-9487-4364-8ad6-23965965afb2 format: uuid type: string title: Stop Recording Request type: object StopStreamingRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string stream_id: description: Identifies the stream. If the `stream_id` is not provided the command stops all streams associated with a given `call_control_id`. example: 1edb94f9-7ef0-4150-b502-e0ebadfd9491 format: uuid type: string title: Stop Streaming Request type: object NoiseSuppressionStop: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string title: Noise Suppression Stop Request type: object GatherUsingSpeakRequest: example: client_state: aGF2ZSBhIG5pY2UgZGF5ID1d command_id: 891510ac-f3e4-11e8-af5b-de00688a4901 inter_digit_timeout_millis: 10000 invalid_payload: say this on call language: arb maximum_digits: 10 minimum_digits: 1 payload: say this on call payload_type: text service_level: premium terminating_digit: '#' valid_digits: '123' voice: male properties: client_state: description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. example: aGF2ZSBhIG5pY2UgZGF5ID1d 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`. example: 891510ac-f3e4-11e8-af5b-de00688a4901 type: string inter_digit_timeout_millis: default: 5000 description: The number of milliseconds to wait for input between digits. example: 10000 format: int32 type: integer invalid_payload: description: The text or SSML to be converted into speech when digits don't match the `valid_digits` parameter or the number of digits is not between `min` and `max`. There is a 3,000 character limit. example: Say this on the call type: string language: description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified. enum: - arb - cmn-CN - cy-GB - da-DK - de-DE - en-AU - en-GB - en-GB-WLS - en-IN - en-US - es-ES - es-MX - es-US - fr-CA - fr-FR - hi-IN - is-IS - it-IT - ja-JP - ko-KR - nb-NO - nl-NL - pl-PL - pt-BR - pt-PT - ro-RO - ru-RU - sv-SE - tr-TR example: en-US type: string maximum_digits: default: 128 description: The maximum number of digits to fetch. This parameter has a maximum value of 128. example: 10 format: int32 type: integer maximum_tries: default: 3 description: The maximum number of times that a file should be played back if there is no input from the user on the call. example: 3 format: int32 type: integer minimum_digits: default: 1 description: The minimum number of digits to fetch. This parameter has a minimum value of 1. example: 1 format: int32 type: integer payload: description: The text or SSML to be converted into speech. There is a 3,000 character limit. example: Say this on the call type: string payload_type: default: text description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup Language (SSML). enum: - text - ssml example: ssml type: string service_level: default: premium description: This parameter impacts speech quality, language options and payload types. When using `basic`, only the `en-US` language and payload type `text` are allowed. enum: - basic - premium example: premium type: string terminating_digit: default: '#' description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. example: '#' type: string timeout_millis: default: 60000 description: The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound file. example: 60000 format: int32 type: integer valid_digits: default: 0123456789#* description: A list of all digits accepted as valid. example: '123' type: string voice: description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`. Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.` (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.\n- **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `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). Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\": \"\"}`. 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).\n- **Telnyx:** Use `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed and other synthesis parameters.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`). Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings` to configure speed, volume, pitch, and language_boost.\n- **Rime:** Use `Rime..` (e.g., `Rime.Arcana.cove`). Supported model_ids: `Arcana`, `Mist`. Use `voice_settings` to configure voice_speed.\n- **Resemble:** Use `Resemble.Turbo.` (e.g., `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate, and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\nFor service_level basic, you may define the gender of the speaker (male or female)." example: Telnyx.KokoroTTS.af type: string voice_settings: description: The settings associated with the voice selected discriminator: mapping: aws: '#/components/schemas/AWSVoiceSettings' azure: '#/components/schemas/AzureVoiceSettings' elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings' inworld: '#/components/schemas/InworldVoiceSettings' minimax: '#/components/schemas/MinimaxVoiceSettings' resemble: '#/components/schemas/ResembleVoiceSettings' rime: '#/components/schemas/RimeVoiceSettings' telnyx: '#/components/schemas/TelnyxVoiceSettings' xai: '#/components/schemas/XAIVoiceSettings' propertyName: type oneOf: - $ref: '#/components/schemas/ElevenLabsVoiceSettings' - $ref: '#/components/schemas/TelnyxVoiceSettings' - $ref: '#/components/schemas/AWSVoiceSettings' - $ref: '#/components/schemas/MinimaxVoiceSettings' - $ref: '#/components/schemas/AzureVoiceSettings' - $ref: '#/components/schemas/RimeVoiceSettings' - $ref: '#/components/schemas/ResembleVoiceSettings' - $ref: '#/components/schemas/InworldVoiceSettings' - $ref: '#/components/schemas/XAIVoiceSettings' required: - voice - payload title: Gather Using Speak Request 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 example: en title: xAI transcription engine list of languages type: string responses: CallControlCommandResponseWithConversationId: content: application/json: schema: properties: data: $ref: '#/components/schemas/CallControlCommandResultWithConversationId' title: Call Control Command Response With Conversation ID type: object description: Successful response upon making a call control command that includes conversation_id. ServiceUnavailableResponse: content: application/json: example: errors: - code: '10007' detail: Service unavailable title: Service unavailable schema: $ref: '#/components/schemas/call-control_Errors' description: Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when the service is overloaded. RetrieveCallStatusResponseWithRecordingId: content: application/json: schema: properties: data: $ref: '#/components/schemas/CallWithRecordingId' title: Retrieve Call Status Response With Recording ID type: object description: Successful response with details about a call status that includes recording_id. call-control_GenericErrorResponse: content: application/json: schema: $ref: '#/components/schemas/call-control_Errors' description: Unexpected error UnprocessableEntityResponse: content: application/json: examples: ai_assistant_already_active: summary: AI Assistant already active value: errors: - code: '90061' detail: AI Assistant cannot be started more than once. title: AI Assistant is already in progress call_already_ended: summary: Call has already ended value: errors: - code: '90018' detail: This call is no longer active and can't receive commands. title: Call has already ended call_already_in_queue: summary: Call already in queue value: errors: - code: '90038' detail: Call can't be added to a queue it's already in. title: Call already in queue call_not_answered: summary: Call not answered yet value: errors: - code: '90034' detail: This call can't receive this command because it has not been answered yet. title: Call not answered yet cannot_record_before_audio_started: summary: Cannot record before audio started value: errors: - code: '90020' detail: Call recording cannot be started until audio has commenced on the call. title: Call recording triggered before audio started conference_already_ended: summary: Conference has already ended value: errors: - code: '90019' detail: This conference is no longer active and can't receive commands. title: Conference has already ended conference_name_conflict: summary: Conference name conflict value: errors: - code: '90033' detail: Conference with given name already exists and it's active. title: Unable to execute command fork_not_found: summary: Call is not forked value: errors: - code: '90031' detail: Can't stop forking, because the call isn't currently forked. title: Call is not currently forked invalid_call_control_id: summary: Invalid call control ID value: errors: - code: '90015' detail: The call_control_id provided was not valid. source: pointer: /call_control_id title: Invalid Call Control ID invalid_connection_id: summary: Invalid connection ID value: errors: - code: '10015' detail: The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call Control Apps with valid webhook URL are accepted. source: pointer: /connection_id title: Invalid value for connection_id (Call Control App ID) invalid_enumerated_value: summary: Invalid enumerated value value: errors: - code: '10032' detail: 'The value must be one of: dual, single.' source: pointer: /record_channels title: Invalid enumerated value invalid_phone_number_format: summary: Invalid phone number format value: errors: - code: '10016' detail: The 'to' parameter must be in E164 format. source: pointer: /to title: Phone number must be in +E164 format max_participants_reached: summary: Maximum participants reached value: errors: - code: '90032' detail: The maximum allowed value of `max_participants` has been reached at 100. title: Maximum number of participants reached media_streaming_used: summary: Media streaming in use value: errors: - code: '90045' detail: This command can't be issued when media streaming is used. title: Media Streaming is used missing_required_parameter: summary: Missing required parameter value: errors: - code: '10004' detail: The 'to' parameter is required and cannot be blank. source: pointer: /to title: Missing required parameter queue_full: summary: Queue is full value: errors: - code: '90036' detail: The 'support' queue is full and can't accept more calls. title: Queue full srtp_not_supported_for_pstn: summary: SRTP not supported for PSTN calls value: errors: - code: '10011' detail: SRTP media encryption is not supported for PSTN calls. source: pointer: /media_encryption title: Media encryption not supported for PSTN calls transcription_already_active: summary: Transcription already active value: errors: - code: '90054' detail: Call transcription can not be started more than once. title: Call transcription is already in progress value_outside_range: summary: Value outside of range value: errors: - code: '10033' detail: The value is outside of allowed range 1 to 5000 source: pointer: /max_participants title: Value outside of range schema: $ref: '#/components/schemas/call-control_Errors' description: 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. CallControlCommandResponse: content: application/json: schema: properties: data: $ref: '#/components/schemas/CallControlCommandResult' title: Call Control Command Response type: object description: Successful response upon making a call control command. CallControlCommandResponseWithRecordingId: content: application/json: schema: properties: data: $ref: '#/components/schemas/CallControlCommandResultWithRecordingId' title: Call Control Command Response With Recording ID type: object description: Successful response upon making a call control command that includes recording_id. BadRequestResponse: content: application/json: examples: audio_file_download_failed: summary: Audio file download failed value: errors: - code: '90040' detail: Provided audio file couldn't be downloaded. title: Downloading audio file failed character_encoding_error: summary: Character encoding error value: errors: - code: '10028' detail: Error decoding request body at position 42 meta: url: https://developers.telnyx.com/docs/overview/errors/10028 title: Character encoding error invalid_characters: summary: Invalid characters value: errors: - code: '10015' detail: Invalid characters in the request. title: Bad Request queue_not_empty: summary: Queue not empty value: errors: - code: '90050' detail: Only empty queues can be deleted. title: Unable to delete queue schema: $ref: '#/components/schemas/call-control_Errors' description: '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.' InternalServerErrorResponse: content: application/json: example: errors: - code: '10007' detail: Internal server error title: Internal server error schema: $ref: '#/components/schemas/call-control_Errors' description: Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled exceptions or system failures. parameters: CallControlId: description: Unique identifier and token for controlling the call in: path name: call_control_id required: true schema: type: string securitySchemes: bearerAuth: scheme: bearer type: http branded-calling_bearerAuth: description: API key passed as a Bearer token in the Authorization header scheme: bearer type: http oauthClientAuth: description: OAuth 2.0 authentication for Telnyx API and MCP integrations flows: authorizationCode: authorizationUrl: https://api.telnyx.com/v2/oauth/authorize refreshUrl: https://api.telnyx.com/v2/oauth/token scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token clientCredentials: scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token type: oauth2 outbound-voice-profiles_bearerAuth: bearerFormat: JWT scheme: bearer type: http pronunciation-dicts_bearerAuth: description: Telnyx API v2 key. Obtain from https://portal.telnyx.com scheme: bearer type: http stored-payment-transactions_bearerAuth: bearerFormat: JWT scheme: bearer type: http