telnyx-mcp 6.65.0 → 6.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2986,7 +2986,7 @@ const EMBEDDED_METHODS = [
2986
2986
  stainlessPath: '(resource) ai > (method) retrieve_models',
2987
2987
  qualified: 'client.ai.retrieveModels',
2988
2988
  response: "{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }",
2989
- markdown: "## retrieve_models\n\n`client.ai.retrieveModels(): { data: object[]; object?: string; }`\n\n**get** `/ai/models`\n\n**Deprecated**: Use `GET /v2/ai/openai/models` instead.\n\nReturns the same `ModelsResponse` payload as the OpenAI-compatible endpoint — open-source LLMs hosted on Telnyx (e.g. `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M2.7`), embedding models, and fine-tuned models — kept around for backwards compatibility. New integrations should use `/v2/ai/openai/models`.\n\nModel ids follow the `{organization}/{model_name}` convention from Hugging Face.\n\n### Returns\n\n- `{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }`\n\n - `data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]`\n - `object?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.ai.retrieveModels();\n\nconsole.log(response);\n```",
2989
+ markdown: "## retrieve_models\n\n`client.ai.retrieveModels(): { data: model_metadata[]; object?: string; }`\n\n**get** `/ai/models`\n\n**Deprecated**: Use `GET /v2/ai/openai/models` instead.\n\nReturns the same `ModelsResponse` payload as the OpenAI-compatible endpoint — open-source LLMs hosted on Telnyx (e.g. `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M2.7`), embedding models, and fine-tuned models — kept around for backwards compatibility. New integrations should use `/v2/ai/openai/models`.\n\nModel ids follow the `{organization}/{model_name}` convention from Hugging Face.\n\n### Returns\n\n- `{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }`\n\n - `data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]`\n - `object?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.ai.retrieveModels();\n\nconsole.log(response);\n```",
2990
2990
  perLanguage: {
2991
2991
  typescript: {
2992
2992
  method: 'client.ai.retrieveModels',
@@ -3119,8 +3119,8 @@ const EMBEDDED_METHODS = [
3119
3119
  description: 'Retrieve a list of all AI Assistants configured by the user.',
3120
3120
  stainlessPath: '(resource) ai.assistants > (method) list',
3121
3121
  qualified: 'client.ai.assistants.list',
3122
- response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
3123
- markdown: "## list\n\n`client.ai.assistants.list(): { data: inference_embedding[]; }`\n\n**get** `/ai/assistants`\n\nRetrieve a list of all AI Assistants configured by the user.\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.list();\n\nconsole.log(assistantsList);\n```",
3122
+ response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
3123
+ markdown: "## list\n\n`client.ai.assistants.list(): { data: inference_embedding[]; }`\n\n**get** `/ai/assistants`\n\nRetrieve a list of all AI Assistants configured by the user.\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.list();\n\nconsole.log(assistantsList);\n```",
3124
3124
  perLanguage: {
3125
3125
  typescript: {
3126
3126
  method: 'client.ai.assistants.list',
@@ -3176,7 +3176,7 @@ const EMBEDDED_METHODS = [
3176
3176
  'greeting?: string;',
3177
3177
  'insight_settings?: { insight_group_id?: string; };',
3178
3178
  'integrations?: { integration_id: string; allowed_list?: string[]; }[];',
3179
- 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; };',
3179
+ 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; };',
3180
3180
  'llm_api_key_ref?: string;',
3181
3181
  'mcp_servers?: { id: string; allowed_tools?: string[]; }[];',
3182
3182
  'messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; };',
@@ -3188,12 +3188,12 @@ const EMBEDDED_METHODS = [
3188
3188
  "telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; };",
3189
3189
  'tool_ids?: string[];',
3190
3190
  "tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[];",
3191
- 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
3192
- "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
3191
+ 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
3192
+ "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
3193
3193
  "widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; };",
3194
3194
  ],
3195
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3196
- markdown: "## create\n\n`client.ai.assistants.create(instructions: string, name: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants`\n\nCreate a new AI Assistant.\n\n### Parameters\n\n- `instructions: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `name: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. 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`.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.create({ instructions: 'instructions', name: 'name' });\n\nconsole.log(inferenceEmbedding);\n```",
3195
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3196
+ markdown: "## create\n\n`client.ai.assistants.create(instructions: string, name: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants`\n\nCreate a new AI Assistant.\n\n### Parameters\n\n- `instructions: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `name: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n- `soniox/stt-rt-v4` is a multilingual streaming model with automatic language detection and configurable endpointing.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.create({ instructions: 'instructions', name: 'name' });\n\nconsole.log(inferenceEmbedding);\n```",
3197
3197
  perLanguage: {
3198
3198
  typescript: {
3199
3199
  method: 'client.ai.assistants.create',
@@ -3221,7 +3221,7 @@ const EMBEDDED_METHODS = [
3221
3221
  },
3222
3222
  php: {
3223
3223
  method: 'ai->assistants->create',
3224
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->create(\n instructions: 'instructions',\n name: 'name',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'keyterm' => 'keyterm',\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => ['type' => 'predefined_media', 'value' => 'silence'],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
3224
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->create(\n instructions: 'instructions',\n name: 'name',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'enableEndpointDetection' => true,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'interimResults' => true,\n 'keyterm' => 'keyterm',\n 'maxEndpointDelayMs' => 500,\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => [\n 'type' => 'predefined_media', 'value' => 'silence', 'volume' => 0.1\n ],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
3225
3225
  },
3226
3226
  http: {
3227
3227
  example: 'curl https://api.telnyx.com/v2/ai/assistants \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "instructions": "instructions",\n "name": "name"\n }\'',
@@ -3237,8 +3237,8 @@ const EMBEDDED_METHODS = [
3237
3237
  stainlessPath: '(resource) ai.assistants > (method) imports',
3238
3238
  qualified: 'client.ai.assistants.imports',
3239
3239
  params: ['api_key_ref: string;', "provider: 'elevenlabs' | 'vapi' | 'retell';", 'import_ids?: string[];'],
3240
- response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
3241
- markdown: "## imports\n\n`client.ai.assistants.imports(api_key_ref: string, provider: 'elevenlabs' | 'vapi' | 'retell', import_ids?: string[]): { data: inference_embedding[]; }`\n\n**post** `/ai/assistants/import`\n\nImport assistants from external providers. Any assistant that has already been imported will be overwritten with its latest version from the importing provider.\n\n### Parameters\n\n- `api_key_ref: string`\n Integration secret pointer that refers to the API key for the external provider. This should be an identifier for an integration secret created via /v2/integration_secrets.\n\n- `provider: 'elevenlabs' | 'vapi' | 'retell'`\n The external provider to import assistants from.\n\n- `import_ids?: string[]`\n Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported.\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.imports({ api_key_ref: 'api_key_ref', provider: 'elevenlabs' });\n\nconsole.log(assistantsList);\n```",
3240
+ response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
3241
+ markdown: "## imports\n\n`client.ai.assistants.imports(api_key_ref: string, provider: 'elevenlabs' | 'vapi' | 'retell', import_ids?: string[]): { data: inference_embedding[]; }`\n\n**post** `/ai/assistants/import`\n\nImport assistants from external providers. Any assistant that has already been imported will be overwritten with its latest version from the importing provider.\n\n### Parameters\n\n- `api_key_ref: string`\n Integration secret pointer that refers to the API key for the external provider. This should be an identifier for an integration secret created via /v2/integration_secrets.\n\n- `provider: 'elevenlabs' | 'vapi' | 'retell'`\n The external provider to import assistants from.\n\n- `import_ids?: string[]`\n Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported.\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.imports({ api_key_ref: 'api_key_ref', provider: 'elevenlabs' });\n\nconsole.log(assistantsList);\n```",
3242
3242
  perLanguage: {
3243
3243
  typescript: {
3244
3244
  method: 'client.ai.assistants.imports',
@@ -3333,8 +3333,8 @@ const EMBEDDED_METHODS = [
3333
3333
  'from?: string;',
3334
3334
  'to?: string;',
3335
3335
  ],
3336
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3337
- markdown: "## retrieve\n\n`client.ai.assistants.retrieve(assistant_id: string, call_control_id?: string, fetch_dynamic_variables_from_webhook?: boolean, from?: string, to?: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**get** `/ai/assistants/{assistant_id}`\n\nRetrieve an AI Assistant configuration by `assistant_id`.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `call_control_id?: string`\n\n- `fetch_dynamic_variables_from_webhook?: boolean`\n\n- `from?: string`\n\n- `to?: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.retrieve('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3336
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3337
+ markdown: "## retrieve\n\n`client.ai.assistants.retrieve(assistant_id: string, call_control_id?: string, fetch_dynamic_variables_from_webhook?: boolean, from?: string, to?: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**get** `/ai/assistants/{assistant_id}`\n\nRetrieve an AI Assistant configuration by `assistant_id`.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `call_control_id?: string`\n\n- `fetch_dynamic_variables_from_webhook?: boolean`\n\n- `from?: string`\n\n- `to?: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.retrieve('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3338
3338
  perLanguage: {
3339
3339
  typescript: {
3340
3340
  method: 'client.ai.assistants.retrieve',
@@ -3390,7 +3390,7 @@ const EMBEDDED_METHODS = [
3390
3390
  'insight_settings?: { insight_group_id?: string; };',
3391
3391
  'instructions?: string;',
3392
3392
  'integrations?: { integration_id: string; allowed_list?: string[]; }[];',
3393
- 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; };',
3393
+ 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; };',
3394
3394
  'llm_api_key_ref?: string;',
3395
3395
  'mcp_servers?: { id: string; allowed_tools?: string[]; }[];',
3396
3396
  'messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; };',
@@ -3404,13 +3404,13 @@ const EMBEDDED_METHODS = [
3404
3404
  "telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; };",
3405
3405
  'tool_ids?: string[];',
3406
3406
  "tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[];",
3407
- 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
3407
+ 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
3408
3408
  'version_name?: string;',
3409
- "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
3409
+ "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
3410
3410
  "widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; };",
3411
3411
  ],
3412
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3413
- markdown: "## update\n\n`client.ai.assistants.update(assistant_id: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, instructions?: string, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, name?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, promote_to_main?: boolean, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, version_name?: string, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}`\n\nUpdate an AI Assistant's attributes.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `instructions?: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `name?: string`\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `promote_to_main?: boolean`\n Indicates whether the assistant should be promoted to the main version. Defaults to true.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. 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`.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `version_name?: string`\n Human-readable name for the assistant version.\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.update('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3412
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3413
+ markdown: "## update\n\n`client.ai.assistants.update(assistant_id: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, instructions?: string, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, name?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, promote_to_main?: boolean, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, version_name?: string, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}`\n\nUpdate an AI Assistant's attributes.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `instructions?: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `name?: string`\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `promote_to_main?: boolean`\n Indicates whether the assistant should be promoted to the main version. Defaults to true.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n- `soniox/stt-rt-v4` is a multilingual streaming model with automatic language detection and configurable endpointing.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `version_name?: string`\n Human-readable name for the assistant version.\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.update('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3414
3414
  perLanguage: {
3415
3415
  typescript: {
3416
3416
  method: 'client.ai.assistants.update',
@@ -3438,7 +3438,7 @@ const EMBEDDED_METHODS = [
3438
3438
  },
3439
3439
  php: {
3440
3440
  method: 'ai->assistants->update',
3441
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->update(\n 'assistant_id',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n instructions: 'instructions',\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n name: 'name',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n promoteToMain: true,\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'keyterm' => 'keyterm',\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n versionName: 'version_name',\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => ['type' => 'predefined_media', 'value' => 'silence'],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
3441
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->update(\n 'assistant_id',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n instructions: 'instructions',\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n name: 'name',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n promoteToMain: true,\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'enableEndpointDetection' => true,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'interimResults' => true,\n 'keyterm' => 'keyterm',\n 'maxEndpointDelayMs' => 500,\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n versionName: 'version_name',\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => [\n 'type' => 'predefined_media', 'value' => 'silence', 'volume' => 0.1\n ],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
3442
3442
  },
3443
3443
  http: {
3444
3444
  example: "curl https://api.telnyx.com/v2/ai/assistants/$ASSISTANT_ID \\\n -H 'Content-Type: application/json' \\\n -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n -d '{}'",
@@ -3499,8 +3499,8 @@ const EMBEDDED_METHODS = [
3499
3499
  stainlessPath: '(resource) ai.assistants > (method) clone',
3500
3500
  qualified: 'client.ai.assistants.clone',
3501
3501
  params: ['assistant_id: string;'],
3502
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3503
- markdown: "## clone\n\n`client.ai.assistants.clone(assistant_id: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/clone`\n\nClone an existing assistant, excluding telephony and messaging settings.\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.clone('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3502
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
3503
+ markdown: "## clone\n\n`client.ai.assistants.clone(assistant_id: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/clone`\n\nClone an existing assistant, excluding telephony and messaging settings.\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.clone('assistant_id');\n\nconsole.log(inferenceEmbedding);\n```",
3504
3504
  perLanguage: {
3505
3505
  typescript: {
3506
3506
  method: 'client.ai.assistants.clone',
@@ -4209,8 +4209,8 @@ const EMBEDDED_METHODS = [
4209
4209
  stainlessPath: '(resource) ai.assistants.canary_deploys > (method) retrieve',
4210
4210
  qualified: 'client.ai.assistants.canaryDeploys.retrieve',
4211
4211
  params: ['assistant_id: string;'],
4212
- response: "{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }",
4213
- markdown: "## retrieve\n\n`client.ai.assistants.canaryDeploys.retrieve(assistant_id: string): { assistant_id: string; created_at: string; rules: object[]; updated_at: string; }`\n\n**get** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to get a canary deploy configuration for an assistant.\n\nRetrieves the current canary deploy configuration with all version IDs and their\ntraffic percentages for the specified assistant.\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.retrieve('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4212
+ response: '{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }',
4213
+ markdown: "## retrieve\n\n`client.ai.assistants.canaryDeploys.retrieve(assistant_id: string): { assistant_id: string; created_at: string; rules: rule_output[]; updated_at: string; }`\n\n**get** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to get a canary deploy configuration for an assistant.\n\nRetrieves the current canary deploy configuration with all version IDs and their\ntraffic percentages for the specified assistant.\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.retrieve('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4214
4214
  perLanguage: {
4215
4215
  typescript: {
4216
4216
  method: 'client.ai.assistants.canaryDeploys.retrieve',
@@ -4255,10 +4255,10 @@ const EMBEDDED_METHODS = [
4255
4255
  qualified: 'client.ai.assistants.canaryDeploys.create',
4256
4256
  params: [
4257
4257
  'assistant_id: string;',
4258
- "rules?: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[];",
4258
+ "rules?: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[];",
4259
4259
  ],
4260
- response: "{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }",
4261
- markdown: "## create\n\n`client.ai.assistants.canaryDeploys.create(assistant_id: string, rules?: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]): { assistant_id: string; created_at: string; rules: object[]; updated_at: string; }`\n\n**post** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to create a canary deploy configuration for an assistant.\n\nCreates a new canary deploy configuration with multiple version IDs and their traffic\npercentages for A/B testing or gradual rollouts of assistant versions.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `rules?: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.create('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4260
+ response: '{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }',
4261
+ markdown: "## create\n\n`client.ai.assistants.canaryDeploys.create(assistant_id: string, rules?: { serve: serve; match?: clause[]; }[]): { assistant_id: string; created_at: string; rules: rule_output[]; updated_at: string; }`\n\n**post** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to create a canary deploy configuration for an assistant.\n\nCreates a new canary deploy configuration with multiple version IDs and their traffic\npercentages for A/B testing or gradual rollouts of assistant versions.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `rules?: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.create('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4262
4262
  perLanguage: {
4263
4263
  typescript: {
4264
4264
  method: 'client.ai.assistants.canaryDeploys.create',
@@ -4303,10 +4303,10 @@ const EMBEDDED_METHODS = [
4303
4303
  qualified: 'client.ai.assistants.canaryDeploys.update',
4304
4304
  params: [
4305
4305
  'assistant_id: string;',
4306
- "rules?: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[];",
4306
+ "rules?: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[];",
4307
4307
  ],
4308
- response: "{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }",
4309
- markdown: "## update\n\n`client.ai.assistants.canaryDeploys.update(assistant_id: string, rules?: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]): { assistant_id: string; created_at: string; rules: object[]; updated_at: string; }`\n\n**put** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to update a canary deploy configuration for an assistant.\n\nUpdates the existing canary deploy configuration with new version IDs and percentages.\n All old versions and percentages are replaces by new ones from this request.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `rules?: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: { rollout?: object[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: { version_id: string; weight: number; }[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.update('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4308
+ response: '{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }',
4309
+ markdown: "## update\n\n`client.ai.assistants.canaryDeploys.update(assistant_id: string, rules?: { serve: serve; match?: clause[]; }[]): { assistant_id: string; created_at: string; rules: rule_output[]; updated_at: string; }`\n\n**put** `/ai/assistants/{assistant_id}/canary-deploys`\n\nEndpoint to update a canary deploy configuration for an assistant.\n\nUpdates the existing canary deploy configuration with new version IDs and percentages.\n All old versions and percentages are replaces by new ones from this request.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `rules?: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n\n### Returns\n\n- `{ assistant_id: string; created_at: string; rules: { serve: serve; match?: clause[]; }[]; updated_at: string; }`\n Response shape.\n\nAlways carries ``rules`` (canonical).\n\n - `assistant_id: string`\n - `created_at: string`\n - `rules: { serve: { rollout?: rollout_slot[]; version_id?: string; }; match?: { attribute: string; operator: 'in' | 'not_in' | 'starts_with'; values: string[]; }[]; }[]`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst canaryDeployResponse = await client.ai.assistants.canaryDeploys.update('assistant_id');\n\nconsole.log(canaryDeployResponse);\n```",
4310
4310
  perLanguage: {
4311
4311
  typescript: {
4312
4312
  method: 'client.ai.assistants.canaryDeploys.update',
@@ -4687,8 +4687,8 @@ const EMBEDDED_METHODS = [
4687
4687
  stainlessPath: '(resource) ai.assistants.versions > (method) list',
4688
4688
  qualified: 'client.ai.assistants.versions.list',
4689
4689
  params: ['assistant_id: string;'],
4690
- response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
4691
- markdown: "## list\n\n`client.ai.assistants.versions.list(assistant_id: string): { data: inference_embedding[]; }`\n\n**get** `/ai/assistants/{assistant_id}/versions`\n\nRetrieves all versions of a specific assistant with complete configuration and metadata\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.versions.list('assistant_id');\n\nconsole.log(assistantsList);\n```",
4690
+ response: '{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }',
4691
+ markdown: "## list\n\n`client.ai.assistants.versions.list(assistant_id: string): { data: inference_embedding[]; }`\n\n**get** `/ai/assistants/{assistant_id}/versions`\n\nRetrieves all versions of a specific assistant with complete configuration and metadata\n\n### Parameters\n\n- `assistant_id: string`\n\n### Returns\n\n- `{ data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }[]; }`\n\n - `data: { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }[]`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst assistantsList = await client.ai.assistants.versions.list('assistant_id');\n\nconsole.log(assistantsList);\n```",
4692
4692
  perLanguage: {
4693
4693
  typescript: {
4694
4694
  method: 'client.ai.assistants.versions.list',
@@ -4776,8 +4776,8 @@ const EMBEDDED_METHODS = [
4776
4776
  stainlessPath: '(resource) ai.assistants.versions > (method) retrieve',
4777
4777
  qualified: 'client.ai.assistants.versions.retrieve',
4778
4778
  params: ['assistant_id: string;', 'version_id: string;', 'include_mcp_servers?: boolean;'],
4779
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4780
- markdown: "## retrieve\n\n`client.ai.assistants.versions.retrieve(assistant_id: string, version_id: string, include_mcp_servers?: boolean): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**get** `/ai/assistants/{assistant_id}/versions/{version_id}`\n\nRetrieves a specific version of an assistant by assistant_id and version_id\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n- `include_mcp_servers?: boolean`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.retrieve('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4779
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4780
+ markdown: "## retrieve\n\n`client.ai.assistants.versions.retrieve(assistant_id: string, version_id: string, include_mcp_servers?: boolean): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**get** `/ai/assistants/{assistant_id}/versions/{version_id}`\n\nRetrieves a specific version of an assistant by assistant_id and version_id\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n- `include_mcp_servers?: boolean`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.retrieve('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4781
4781
  perLanguage: {
4782
4782
  typescript: {
4783
4783
  method: 'client.ai.assistants.versions.retrieve',
@@ -4834,7 +4834,7 @@ const EMBEDDED_METHODS = [
4834
4834
  'insight_settings?: { insight_group_id?: string; };',
4835
4835
  'instructions?: string;',
4836
4836
  'integrations?: { integration_id: string; allowed_list?: string[]; }[];',
4837
- 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; };',
4837
+ 'interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; };',
4838
4838
  'llm_api_key_ref?: string;',
4839
4839
  'mcp_servers?: { id: string; allowed_tools?: string[]; }[];',
4840
4840
  'messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; };',
@@ -4847,13 +4847,13 @@ const EMBEDDED_METHODS = [
4847
4847
  "telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; };",
4848
4848
  'tool_ids?: string[];',
4849
4849
  "tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[];",
4850
- 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
4850
+ 'transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; };',
4851
4851
  'version_name?: string;',
4852
- "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
4852
+ "voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; };",
4853
4853
  "widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; };",
4854
4854
  ],
4855
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4856
- markdown: "## update\n\n`client.ai.assistants.versions.update(assistant_id: string, version_id: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, instructions?: string, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, name?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, version_name?: string, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/versions/{version_id}`\n\nUpdates the configuration of a specific assistant version. Can not update main version\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `instructions?: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `name?: string`\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. 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`.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `version_name?: string`\n Human-readable name for the assistant version.\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.update('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4855
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4856
+ markdown: "## update\n\n`client.ai.assistants.versions.update(assistant_id: string, version_id: string, description?: string, dynamic_variables?: object, dynamic_variables_webhook_timeout_ms?: number, dynamic_variables_webhook_url?: string, enabled_features?: 'telephony' | 'messaging'[], external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }, fallback_config?: { external_llm?: external_llm_req; llm_api_key_ref?: string; model?: string; }, greeting?: string, insight_settings?: { insight_group_id?: string; }, instructions?: string, integrations?: { integration_id: string; allowed_list?: string[]; }[], interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }, llm_api_key_ref?: string, mcp_servers?: { id: string; allowed_tools?: string[]; }[], messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }, model?: string, name?: string, observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }, post_conversation_settings?: { enabled?: boolean; }, privacy_settings?: { data_retention?: boolean; }, tags?: string[], telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }, tool_ids?: string[], tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[], transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }, version_name?: string, voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }, widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/versions/{version_id}`\n\nUpdates the configuration of a specific assistant version. Can not update main version\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n- `description?: string`\n\n- `dynamic_variables?: object`\n Map of dynamic variables and their default values\n\n- `dynamic_variables_webhook_timeout_ms?: number`\n Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).\n\n- `dynamic_variables_webhook_url?: string`\n If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{\"dynamic_variables\": {\"customer_name\": \"Jane\"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.\n\n- `enabled_features?: 'telephony' | 'messaging'[]`\n\n- `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `base_url: string`\n Base URL for the external LLM endpoint.\n - `model: string`\n Model identifier to use with the external LLM endpoint.\n - `authentication_method?: 'token' | 'certificate'`\n Authentication method used when connecting to the external LLM endpoint.\n - `certificate_ref?: string`\n Integration secret identifier for the client certificate used with certificate authentication.\n - `forward_metadata?: boolean`\n When `true`, Telnyx forwards the assistant's dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{\"extra_metadata\": {\"customer_name\": \"Jane\", \"account_id\": \"acct_789\", \"telnyx_agent_target\": \"+13125550100\", \"telnyx_end_user_target\": \"+13125550123\"}}`. Distinct from OpenAI's native `metadata` field, which has its own size and type limits.\n - `llm_api_key_ref?: string`\n Integration secret identifier for the external LLM API key.\n - `token_retrieval_url?: string`\n URL used to retrieve an access token when certificate authentication is enabled.\n\n- `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `llm_api_key_ref?: string`\n Integration secret identifier for the fallback model API key.\n - `model?: string`\n Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.\n\n- `greeting?: string`\n Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.\n\n- `insight_settings?: { insight_group_id?: string; }`\n - `insight_group_id?: string`\n Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations.\n\n- `instructions?: string`\n System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)\n\n- `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`.\n\n- `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`).\n - `disable_greeting_interruption?: boolean`\n When true, disables user interruptions while the assistant greeting is playing.\n - `enable?: boolean`\n Whether users can interrupt the assistant while it is speaking.\n - `start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }`\n Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead.\n\n- `llm_api_key_ref?: string`\n This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider's API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.\n\n- `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.\n\n- `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `conversation_inactivity_minutes?: number`\n If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one.\n - `default_messaging_profile_id?: string`\n Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation.\n - `delivery_status_webhook_url?: string`\n The URL where webhooks related to delivery statused for assistant messages will be sent.\n\n- `model?: string`\n ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model.\n\n- `name?: string`\n\n- `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `host?: string`\n - `prompt_label?: string`\n - `prompt_name?: string`\n - `prompt_sync?: 'enabled' | 'disabled'`\n Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.\n - `prompt_version?: number`\n - `public_key_ref?: string`\n - `secret_key_ref?: string`\n - `status?: 'enabled' | 'disabled'`\n\n- `post_conversation_settings?: { enabled?: boolean; }`\n Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature.\n - `enabled?: boolean`\n Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false.\n\n- `privacy_settings?: { data_retention?: boolean; }`\n - `data_retention?: boolean`\n If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here.\n\n- `tags?: string[]`\n Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.\n\n- `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `default_texml_app_id?: string`\n Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation.\n - `noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'`\n The noise suppression engine to use. Use 'disabled' to turn off noise suppression.\n - `noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }`\n Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'.\n - `recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }`\n Configuration for call recording format and channel settings.\n - `supports_unauthenticated_web_calls?: boolean`\n When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled.\n - `time_limit_secs?: number`\n Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `user_idle_reply_secs?: number`\n Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely.\n - `user_idle_timeout_secs?: number`\n Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative).\n - `voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: { message?: string; prompt?: string; type?: 'prompt' | 'message'; }; }; }`\n Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.\n\n- `tool_ids?: string[]`\n IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.\n\n- `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints.\n\n- `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `api_key_ref?: string`\n Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language.\n - `model?: string`\n The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection.\n- `xai/grok-stt` is a multilingual Grok STT model.\n- `soniox/stt-rt-v4` is a multilingual streaming model with automatic language detection and configurable endpointing.\n - `region?: string`\n Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`.\n - `settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }`\n\n- `version_name?: string`\n Human-readable name for the assistant version.\n\n- `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `voice: string`\n The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API.\nTo use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx.<model_id>.<voice_id>` (e.g. Telnyx.KokoroTTS.af_heart).\nThe voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.\n - `api_key_ref?: string`\n The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.\n - `background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }`\n Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving.\n - `expressive_mode?: boolean`\n Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.\n - `language_boost?: string`\n Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.\n - `similarity_boost?: number`\n Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs.\n - `speed?: number`\n Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs.\n - `style?: number`\n Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs.\n - `temperature?: number`\n Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs.\n - `use_speaker_boost?: boolean`\n Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs.\n - `voice_speed?: number`\n The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices.\n\n- `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n Configuration settings for the assistant's web widget.\n - `agent_thinking_text?: string`\n Text displayed while the agent is processing.\n - `audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }`\n - `default_state?: 'expanded' | 'collapsed'`\n The default state of the widget.\n - `give_feedback_url?: string`\n URL for users to give feedback.\n - `logo_icon_url?: string`\n URL to a custom logo icon for the widget.\n - `position?: 'fixed' | 'static'`\n The positioning style for the widget.\n - `report_issue_url?: string`\n URL for users to report issues.\n - `speak_to_interrupt_text?: string`\n Text prompting users to speak to interrupt.\n - `start_call_text?: string`\n Custom text displayed on the start call button.\n - `theme?: 'light' | 'dark'`\n The visual theme for the widget.\n - `view_history_url?: string`\n URL to view conversation history.\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.update('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4857
4857
  perLanguage: {
4858
4858
  typescript: {
4859
4859
  method: 'client.ai.assistants.versions.update',
@@ -4881,7 +4881,7 @@ const EMBEDDED_METHODS = [
4881
4881
  },
4882
4882
  php: {
4883
4883
  method: 'ai->assistants->versions->update',
4884
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->versions->update(\n 'version_id',\n assistantID: 'assistant_id',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n instructions: 'instructions',\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n name: 'name',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'keyterm' => 'keyterm',\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n versionName: 'version_name',\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => ['type' => 'predefined_media', 'value' => 'silence'],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
4884
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$inferenceEmbedding = $client->ai->assistants->versions->update(\n 'version_id',\n assistantID: 'assistant_id',\n description: 'description',\n dynamicVariables: ['foo' => 'bar'],\n dynamicVariablesWebhookTimeoutMs: 1,\n dynamicVariablesWebhookURL: 'dynamic_variables_webhook_url',\n enabledFeatures: [EnabledFeatures::TELEPHONY],\n externalLlm: [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n fallbackConfig: [\n 'externalLlm' => [\n 'baseURL' => 'base_url',\n 'model' => 'model',\n 'authenticationMethod' => 'token',\n 'certificateRef' => 'certificate_ref',\n 'forwardMetadata' => true,\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'tokenRetrievalURL' => 'token_retrieval_url',\n ],\n 'llmAPIKeyRef' => 'llm_api_key_ref',\n 'model' => 'model',\n ],\n greeting: 'greeting',\n insightSettings: ['insightGroupID' => 'insight_group_id'],\n instructions: 'instructions',\n integrations: [\n ['integrationID' => 'integration_id', 'allowedList' => ['string']]\n ],\n interruptionSettings: [\n 'disableGreetingInterruption' => true,\n 'enable' => true,\n 'startSpeakingPlan' => [\n 'transcriptionEndpointingPlan' => [\n 'onNoPunctuationSeconds' => 0,\n 'onNumberSeconds' => 0,\n 'onPunctuationSeconds' => 0,\n ],\n 'waitSeconds' => 0,\n ],\n ],\n llmAPIKeyRef: 'llm_api_key_ref',\n mcpServers: [['id' => 'id', 'allowedTools' => ['string']]],\n messagingSettings: [\n 'conversationInactivityMinutes' => 1,\n 'defaultMessagingProfileID' => 'default_messaging_profile_id',\n 'deliveryStatusWebhookURL' => 'delivery_status_webhook_url',\n ],\n model: 'model',\n name: 'name',\n observabilitySettings: [\n 'host' => 'host',\n 'promptLabel' => 'prompt_label',\n 'promptName' => 'prompt_name',\n 'promptSync' => 'enabled',\n 'promptVersion' => 1,\n 'publicKeyRef' => 'public_key_ref',\n 'secretKeyRef' => 'secret_key_ref',\n 'status' => 'enabled',\n ],\n postConversationSettings: ['enabled' => true],\n privacySettings: ['dataRetention' => true],\n tags: ['string'],\n telephonySettings: [\n 'defaultTexmlAppID' => 'default_texml_app_id',\n 'noiseSuppression' => 'krisp',\n 'noiseSuppressionConfig' => ['attenuationLimit' => 0, 'mode' => 'advanced'],\n 'recordingSettings' => [\n 'channels' => 'single', 'enabled' => true, 'format' => 'wav'\n ],\n 'supportsUnauthenticatedWebCalls' => true,\n 'timeLimitSecs' => 30,\n 'userIdleReplySecs' => 0,\n 'userIdleTimeoutSecs' => 10,\n 'voicemailDetection' => [\n 'onVoicemailDetected' => [\n 'action' => 'stop_assistant',\n 'voicemailMessage' => [\n 'message' => 'message', 'prompt' => 'prompt', 'type' => 'prompt'\n ],\n ],\n ],\n ],\n toolIDs: ['string'],\n tools: [\n [\n 'type' => 'webhook',\n 'webhook' => [\n 'description' => 'description',\n 'name' => 'name',\n 'url' => 'https://example.com/api/v1/function',\n 'async' => true,\n 'bodyParameters' => [\n 'properties' => ['age' => 'bar', 'location' => 'bar'],\n 'required' => ['age', 'location'],\n 'type' => 'object',\n ],\n 'headers' => [['name' => 'name', 'value' => 'value']],\n 'method' => 'GET',\n 'pathParameters' => [\n 'properties' => ['id' => 'bar'],\n 'required' => ['id'],\n 'type' => 'object',\n ],\n 'queryParameters' => [\n 'properties' => ['page' => 'bar'],\n 'required' => ['page'],\n 'type' => 'object',\n ],\n 'storeFieldsAsVariables' => [['name' => 'x', 'valuePath' => 'x']],\n 'timeoutMs' => 500,\n ],\n ],\n ],\n transcription: [\n 'apiKeyRef' => 'api_key_ref',\n 'language' => 'language',\n 'model' => 'deepgram/flux',\n 'region' => 'region',\n 'settings' => [\n 'eagerEotThreshold' => 0.3,\n 'enableEndpointDetection' => true,\n 'endOfTurnConfidenceThreshold' => 0,\n 'eotThreshold' => 0.5,\n 'eotTimeoutMs' => 500,\n 'interimResults' => true,\n 'keyterm' => 'keyterm',\n 'maxEndpointDelayMs' => 500,\n 'maxTurnSilence' => 100,\n 'minTurnSilence' => 100,\n 'numerals' => true,\n 'smartFormat' => true,\n ],\n ],\n versionName: 'version_name',\n voiceSettings: [\n 'voice' => 'voice',\n 'apiKeyRef' => 'api_key_ref',\n 'backgroundAudio' => [\n 'type' => 'predefined_media', 'value' => 'silence', 'volume' => 0.1\n ],\n 'expressiveMode' => true,\n 'languageBoost' => 'auto',\n 'similarityBoost' => 0,\n 'speed' => 0,\n 'style' => 0,\n 'temperature' => 0,\n 'useSpeakerBoost' => true,\n 'voiceSpeed' => 0,\n ],\n widgetSettings: [\n 'agentThinkingText' => 'agent_thinking_text',\n 'audioVisualizerConfig' => ['color' => 'verdant', 'preset' => 'preset'],\n 'defaultState' => 'expanded',\n 'giveFeedbackURL' => 'give_feedback_url',\n 'logoIconURL' => 'logo_icon_url',\n 'position' => 'fixed',\n 'reportIssueURL' => 'report_issue_url',\n 'speakToInterruptText' => 'speak_to_interrupt_text',\n 'startCallText' => 'start_call_text',\n 'theme' => 'light',\n 'viewHistoryURL' => 'view_history_url',\n ],\n);\n\nvar_dump($inferenceEmbedding);",
4885
4885
  },
4886
4886
  http: {
4887
4887
  example: "curl https://api.telnyx.com/v2/ai/assistants/$ASSISTANT_ID/versions/$VERSION_ID \\\n -H 'Content-Type: application/json' \\\n -H \"Authorization: Bearer $TELNYX_API_KEY\" \\\n -d '{}'",
@@ -4897,8 +4897,8 @@ const EMBEDDED_METHODS = [
4897
4897
  stainlessPath: '(resource) ai.assistants.versions > (method) promote',
4898
4898
  qualified: 'client.ai.assistants.versions.promote',
4899
4899
  params: ['assistant_id: string;', 'version_id: string;'],
4900
- response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: object; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4901
- markdown: "## promote\n\n`client.ai.assistants.versions.promote(assistant_id: string, version_id: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/versions/{version_id}/promote`\n\nPromotes a specific version to be the main/current version of the assistant. This will delete any existing canary deploy configuration and send all live production traffic to this version.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: object; wait_seconds?: number; }; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: { on_no_punctuation_seconds?: number; on_number_seconds?: number; on_punctuation_seconds?: number; }; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; keyterm?: string; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.promote('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4900
+ response: "{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: object; fallback_config?: object; greeting?: string; import_metadata?: object; insight_settings?: object; integrations?: object[]; interruption_settings?: object; llm_api_key_ref?: string; mcp_servers?: object[]; messaging_settings?: object; observability_settings?: object; post_conversation_settings?: object; privacy_settings?: object; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: object; tools?: inference_embedding_webhook_tool_params | retrieval_tool | object | hangup_tool | object | object | object | object | object | object[]; transcription?: object; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: object; widget_settings?: object; }",
4901
+ markdown: "## promote\n\n`client.ai.assistants.versions.promote(assistant_id: string, version_id: string): { id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: enabled_features[]; external_llm?: external_llm; fallback_config?: fallback_config; greeting?: string; import_metadata?: import_metadata; insight_settings?: insight_settings; integrations?: assistant_integration[]; interruption_settings?: inference_embedding_interruption_settings; llm_api_key_ref?: string; mcp_servers?: assistant_mcp_server[]; messaging_settings?: messaging_settings; observability_settings?: observability; post_conversation_settings?: post_conversation_settings; privacy_settings?: privacy_settings; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: telephony_settings; tools?: assistant_tool[]; transcription?: transcription_settings; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: voice_settings; widget_settings?: widget_settings; }`\n\n**post** `/ai/assistants/{assistant_id}/versions/{version_id}/promote`\n\nPromotes a specific version to be the main/current version of the assistant. This will delete any existing canary deploy configuration and send all live production traffic to this version.\n\n### Parameters\n\n- `assistant_id: string`\n\n- `version_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; instructions: string; model: string; name: string; description?: string; dynamic_variables?: object; dynamic_variables_webhook_timeout_ms?: number; dynamic_variables_webhook_url?: string; enabled_features?: 'telephony' | 'messaging'[]; external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: external_llm; llm_api_key_ref?: string; model?: string; }; greeting?: string; import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }; insight_settings?: { insight_group_id?: string; }; integrations?: { integration_id: string; allowed_list?: string[]; }[]; interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: start_speaking_plan; }; llm_api_key_ref?: string; mcp_servers?: { id: string; allowed_tools?: string[]; }[]; messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }; observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }; post_conversation_settings?: { enabled?: boolean; }; privacy_settings?: { data_retention?: boolean; }; related_mission_ids?: string[]; tags?: string[]; telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: object; recording_settings?: object; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: object; }; tools?: object | object | { handoff: object; type: 'handoff'; } | object | { transfer: object; type: 'transfer'; } | { invite: object; type: 'invite'; } | { refer: object; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: object; type: 'send_message'; } | { skip_turn: object; type: 'skip_turn'; }[]; transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: transcription_settings_config; }; version_created_at?: string; version_id?: string; version_name?: string; voice_settings?: { voice: string; api_key_ref?: string; background_audio?: object | object | object; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }; widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: audio_visualizer_config; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }; }`\n\n - `id: string`\n - `created_at: string`\n - `instructions: string`\n - `model: string`\n - `name: string`\n - `description?: string`\n - `dynamic_variables?: object`\n - `dynamic_variables_webhook_timeout_ms?: number`\n - `dynamic_variables_webhook_url?: string`\n - `enabled_features?: 'telephony' | 'messaging'[]`\n - `external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }`\n - `fallback_config?: { external_llm?: { base_url: string; model: string; authentication_method?: 'token' | 'certificate'; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n - `greeting?: string`\n - `import_metadata?: { import_id?: string; import_provider?: 'elevenlabs' | 'vapi' | 'retell'; }`\n - `insight_settings?: { insight_group_id?: string; }`\n - `integrations?: { integration_id: string; allowed_list?: string[]; }[]`\n - `interruption_settings?: { disable_greeting_interruption?: boolean; enable?: boolean; start_speaking_plan?: { transcription_endpointing_plan?: transcription_endpointing_plan; wait_seconds?: number; }; }`\n - `llm_api_key_ref?: string`\n - `mcp_servers?: { id: string; allowed_tools?: string[]; }[]`\n - `messaging_settings?: { conversation_inactivity_minutes?: number; default_messaging_profile_id?: string; delivery_status_webhook_url?: string; }`\n - `observability_settings?: { host?: string; prompt_label?: string; prompt_name?: string; prompt_sync?: 'enabled' | 'disabled'; prompt_version?: number; public_key_ref?: string; secret_key_ref?: string; status?: 'enabled' | 'disabled'; }`\n - `post_conversation_settings?: { enabled?: boolean; }`\n - `privacy_settings?: { data_retention?: boolean; }`\n - `related_mission_ids?: string[]`\n - `tags?: string[]`\n - `telephony_settings?: { default_texml_app_id?: string; noise_suppression?: 'krisp' | 'deepfilternet' | 'disabled'; noise_suppression_config?: { attenuation_limit?: number; mode?: 'advanced'; }; recording_settings?: { channels?: 'single' | 'dual'; enabled?: boolean; format?: 'wav' | 'mp3'; }; supports_unauthenticated_web_calls?: boolean; time_limit_secs?: number; user_idle_reply_secs?: number; user_idle_timeout_secs?: number; voicemail_detection?: { on_voicemail_detected?: { action?: 'stop_assistant' | 'leave_message_and_stop_assistant' | 'continue_assistant'; voicemail_message?: object; }; }; }`\n - `tools?: { type: 'webhook'; webhook: { description: string; name: string; url: string; async?: boolean; body_parameters?: object; headers?: object[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: object; query_parameters?: object; store_fields_as_variables?: object[]; timeout_ms?: number; }; } | { retrieval: object; type: 'retrieval'; } | { handoff: { ai_assistants: { id: string; name: string; }[]; voice_mode?: 'unified' | 'distinct'; }; type: 'handoff'; } | { hangup: object; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; custom_headers?: { name?: string; value?: string; }[]; voicemail_detection?: { detection_config?: object; detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; warm_message_delay_ms?: number; warm_transfer_instructions?: string; }; type: 'transfer'; } | { invite: { from: string; custom_headers?: { name?: string; value?: string; }[]; targets?: { to: string; name?: string; }[] | string; voicemail_detection?: { detection_mode?: 'disabled' | 'premium'; on_voicemail_detected?: object; }; }; type: 'invite'; } | { refer: { targets: { name: string; sip_address: string; sip_auth_password?: string; sip_auth_username?: string; }[]; custom_headers?: { name?: string; value?: string; }[]; sip_headers?: { name?: 'User-to-User' | 'Diversion'; value?: string; }[]; }; type: 'refer'; } | { send_dtmf: object; type: 'send_dtmf'; } | { send_message: { message_template?: string; }; type: 'send_message'; } | { skip_turn: { description?: string; }; type: 'skip_turn'; }[]`\n - `transcription?: { api_key_ref?: string; language?: string; model?: string; region?: string; settings?: { eager_eot_threshold?: number; enable_endpoint_detection?: boolean; end_of_turn_confidence_threshold?: number; eot_threshold?: number; eot_timeout_ms?: number; interim_results?: boolean; keyterm?: string; max_endpoint_delay_ms?: number; max_turn_silence?: number; min_turn_silence?: number; numerals?: boolean; smart_format?: boolean; }; }`\n - `version_created_at?: string`\n - `version_id?: string`\n - `version_name?: string`\n - `voice_settings?: { voice: string; api_key_ref?: string; background_audio?: { type: 'predefined_media'; value: 'silence' | 'office'; volume?: number; } | { type: 'media_url'; value: string; } | { type: 'media_name'; value: string; }; expressive_mode?: boolean; language_boost?: string; similarity_boost?: number; speed?: number; style?: number; temperature?: number; use_speaker_boost?: boolean; voice_speed?: number; }`\n - `widget_settings?: { agent_thinking_text?: string; audio_visualizer_config?: { color?: 'verdant' | 'twilight' | 'bloom' | 'mystic' | 'flare' | 'glacier'; preset?: string; }; default_state?: 'expanded' | 'collapsed'; give_feedback_url?: string; logo_icon_url?: string; position?: 'fixed' | 'static'; report_issue_url?: string; speak_to_interrupt_text?: string; start_call_text?: string; theme?: 'light' | 'dark'; view_history_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst inferenceEmbedding = await client.ai.assistants.versions.promote('version_id', { assistant_id: 'assistant_id' });\n\nconsole.log(inferenceEmbedding);\n```",
4902
4902
  perLanguage: {
4903
4903
  typescript: {
4904
4904
  method: 'client.ai.assistants.versions.promote',
@@ -9257,7 +9257,7 @@ const EMBEDDED_METHODS = [
9257
9257
  stainlessPath: '(resource) ai.openai > (method) list_models',
9258
9258
  qualified: 'client.ai.openai.listModels',
9259
9259
  response: "{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }",
9260
- markdown: "## list_models\n\n`client.ai.openai.listModels(): { data: object[]; object?: string; }`\n\n**get** `/ai/openai/models`\n\nLists every model currently available to your account on Telnyx Inference, including SOTA open-source LLMs hosted on Telnyx GPUs (for example `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, and `MiniMaxAI/MiniMax-M2.7`), embedding models, and any fine-tuned models you have created.\n\nEach entry is a `ModelMetadata` object describing the model id, owner, task, context length, supported languages, billing tier, pricing per 1M tokens, deployment regions, and whether the model supports vision or fine-tuning. Use this endpoint to discover model ids you can pass to `POST /v2/ai/openai/chat/completions`.\n\nModel ids follow the `{organization}/{model_name}` convention from Hugging Face (for example `moonshotai/Kimi-K2.6`). This endpoint is OpenAI-compatible: clients pointed at `https://api.telnyx.com/v2/ai/openai` can call `client.models.list()` to retrieve the same payload.\n\n### Returns\n\n- `{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }`\n\n - `data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]`\n - `object?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.ai.openai.listModels();\n\nconsole.log(response);\n```",
9260
+ markdown: "## list_models\n\n`client.ai.openai.listModels(): { data: model_metadata[]; object?: string; }`\n\n**get** `/ai/openai/models`\n\nLists every model currently available to your account on Telnyx Inference, including SOTA open-source LLMs hosted on Telnyx GPUs (for example `moonshotai/Kimi-K2.6`, `zai-org/GLM-5.1-FP8`, and `MiniMaxAI/MiniMax-M2.7`), embedding models, and any fine-tuned models you have created.\n\nEach entry is a `ModelMetadata` object describing the model id, owner, task, context length, supported languages, billing tier, pricing per 1M tokens, deployment regions, and whether the model supports vision or fine-tuning. Use this endpoint to discover model ids you can pass to `POST /v2/ai/openai/chat/completions`.\n\nModel ids follow the `{organization}/{model_name}` convention from Hugging Face (for example `moonshotai/Kimi-K2.6`). This endpoint is OpenAI-compatible: clients pointed at `https://api.telnyx.com/v2/ai/openai` can call `client.models.list()` to retrieve the same payload.\n\n### Returns\n\n- `{ data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]; object?: string; }`\n\n - `data: { id: string; context_length: number; created: string; languages: string[]; license: string; organization: string; owned_by: string; parameters: number; tier: 'small' | 'medium' | 'large' | 'unlisted'; base_model?: string; description?: string; is_fine_tunable?: boolean; is_vision_supported?: boolean; max_completion_tokens?: number; object?: string; parameters_str?: string; pricing?: object; recommended_for_assistants?: boolean; regions?: string[]; task?: string; }[]`\n - `object?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.ai.openai.listModels();\n\nconsole.log(response);\n```",
9261
9261
  perLanguage: {
9262
9262
  typescript: {
9263
9263
  method: 'client.ai.openai.listModels',
@@ -11252,7 +11252,7 @@ const EMBEDDED_METHODS = [
11252
11252
  'time_limit_secs?: number;',
11253
11253
  'timeout_secs?: number;',
11254
11254
  'transcription?: boolean;',
11255
- "transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; };",
11255
+ "transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; };",
11256
11256
  'webhook_retries_policies?: object;',
11257
11257
  'webhook_url?: string;',
11258
11258
  "webhook_url_method?: 'POST' | 'GET';",
@@ -11260,7 +11260,7 @@ const EMBEDDED_METHODS = [
11260
11260
  "webhook_urls_method?: 'POST' | 'GET';",
11261
11261
  ],
11262
11262
  response: "{ data?: { call_control_id: string; call_leg_id: string; call_session_id: string; is_alive: boolean; record_type: 'call'; call_duration?: number; client_state?: string; end_time?: string; recording_id?: string; start_time?: string; }; }",
11263
- markdown: "## dial\n\n`client.calls.dial(connection_id: string, from: string, to: string | string[], answering_machine_detection?: 'premium' | 'detect' | 'detect_beep' | 'detect_words' | 'greeting_end' | 'disabled', answering_machine_detection_config?: { after_greeting_silence_millis?: number; between_words_silence_millis?: number; greeting_duration_millis?: number; greeting_silence_duration_millis?: number; greeting_total_analysis_time_millis?: number; initial_silence_millis?: number; maximum_number_of_words?: number; maximum_word_length_millis?: number; silence_threshold?: number; total_analysis_time_millis?: number; }, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, audio_url?: string, billing_group_id?: string, bridge_intent?: boolean, bridge_on_answer?: boolean, client_state?: string, command_id?: string, conference_config?: { id?: string; beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'; conference_name?: string; early_media?: boolean; end_conference_on_exit?: boolean; hold?: boolean; hold_audio_url?: string; hold_media_name?: string; mute?: boolean; soft_end_conference_on_exit?: boolean; start_conference_on_create?: boolean; start_conference_on_enter?: boolean; supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'; whisper_call_control_ids?: string[]; }, custom_headers?: { name: string; value: string; }[], deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }, dialogflow_config?: { analyze_sentiment?: boolean; partial_automated_agent_reply?: boolean; }, enable_dialogflow?: boolean, from_display_name?: string, link_to?: string, media_encryption?: 'disabled' | 'SRTP' | 'DTLS', media_name?: string, park_after_unbridge?: string, preferred_codecs?: string, prevent_double_bridge?: boolean, privacy?: 'id' | 'none', record?: 'record-from-answer', record_channels?: 'single' | 'dual', record_custom_file_name?: string, record_format?: 'wav' | 'mp3', record_max_length?: number, record_timeout_secs?: number, record_track?: 'both' | 'inbound' | 'outbound', record_trim?: 'trim-silence', send_silence_when_idle?: boolean, sip_auth_password?: string, sip_auth_username?: string, sip_headers?: { name: 'User-to-User'; value: string; }[], sip_region?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East', sip_transport_protocol?: 'UDP' | 'TCP' | 'TLS', sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }, stream_auth_token?: string, stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16', stream_bidirectional_mode?: 'mp3' | 'rtp', stream_bidirectional_sampling_rate?: 8000 | 16000 | 22050 | 24000 | 48000, stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite', stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default', stream_establish_before_call_originate?: boolean, stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks', stream_url?: string, supervise_call_control_id?: string, supervisor_role?: 'barge' | 'whisper' | 'monitor', time_limit_secs?: number, timeout_secs?: number, transcription?: boolean, transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: transcription_engine_google_config | transcription_engine_telnyx_config | transcription_engine_azure_config | object | object | transcription_engine_a_config | transcription_engine_b_config | deepgram_nova2_config | deepgram_nova3_config; transcription_tracks?: string; }, webhook_retries_policies?: object, webhook_url?: string, webhook_url_method?: 'POST' | 'GET', webhook_urls?: object, webhook_urls_method?: 'POST' | 'GET'): { data?: object; }`\n\n**post** `/calls`\n\nDial 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.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n\n\n### Parameters\n\n- `connection_id: string`\n The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.\n\n- `from: string`\n The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format.\n\n- `to: string | string[]`\n 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.\n\n- `answering_machine_detection?: 'premium' | 'detect' | 'detect_beep' | 'detect_words' | 'greeting_end' | 'disabled'`\n 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.\n\n- `answering_machine_detection_config?: { after_greeting_silence_millis?: number; between_words_silence_millis?: number; greeting_duration_millis?: number; greeting_silence_duration_millis?: number; greeting_total_analysis_time_millis?: number; initial_silence_millis?: number; maximum_number_of_words?: number; maximum_word_length_millis?: number; silence_threshold?: number; total_analysis_time_millis?: number; }`\n 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.\n - `after_greeting_silence_millis?: number`\n Silence duration threshold after a greeting message or voice for it be considered human.\n - `between_words_silence_millis?: number`\n Maximum threshold for silence between words.\n - `greeting_duration_millis?: number`\n Maximum threshold of a human greeting. If greeting longer than this value, considered machine.\n - `greeting_silence_duration_millis?: number`\n If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended.\n - `greeting_total_analysis_time_millis?: number`\n If machine already detected, maximum timeout threshold to determine the end of the machine greeting.\n - `initial_silence_millis?: number`\n If initial silence duration is greater than this value, consider it a machine.\n - `maximum_number_of_words?: number`\n If number of detected words is greater than this value, consder it a machine.\n - `maximum_word_length_millis?: number`\n If a single word lasts longer than this threshold, consider it a machine.\n - `silence_threshold?: number`\n Minimum noise threshold for any analysis.\n - `total_analysis_time_millis?: number`\n Maximum timeout threshold for overall detection.\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `audio_url?: string`\n 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.\n\n- `billing_group_id?: string`\n Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.\n\n- `bridge_intent?: boolean`\n 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.\n\n- `bridge_on_answer?: boolean`\n Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`.\n\n- `conference_config?: { id?: string; beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'; conference_name?: string; early_media?: boolean; end_conference_on_exit?: boolean; hold?: boolean; hold_audio_url?: string; hold_media_name?: string; mute?: boolean; soft_end_conference_on_exit?: boolean; start_conference_on_create?: boolean; start_conference_on_enter?: boolean; supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'; whisper_call_control_ids?: string[]; }`\n Optional configuration parameters to dial new participant into a conference.\n - `id?: string`\n Conference ID to be joined\n - `beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'`\n 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.\n - `conference_name?: string`\n Conference name to be joined\n - `early_media?: boolean`\n 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`\n - `end_conference_on_exit?: boolean`\n Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".\n - `hold?: boolean`\n Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".\n - `hold_audio_url?: string`\n 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\".\n - `hold_media_name?: string`\n 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\".\n - `mute?: boolean`\n Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".\n - `soft_end_conference_on_exit?: boolean`\n Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".\n - `start_conference_on_create?: boolean`\n 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\".\n - `start_conference_on_enter?: boolean`\n Whether the conference should be started after the participant joins the conference. Defaults to \"false\".\n - `supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'`\n 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\".\n - `whisper_call_control_ids?: string[]`\n 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.\n\n- `custom_headers?: { name: string; value: string; }[]`\n Custom headers to be added to the SIP INVITE.\n\n- `deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }`\n 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.\n - `enabled: boolean`\n Whether deepfake detection is enabled.\n - `rtp_timeout?: number`\n 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.\n - `timeout?: number`\n Maximum time in seconds to wait for a detection result before timing out.\n\n- `dialogflow_config?: { analyze_sentiment?: boolean; partial_automated_agent_reply?: boolean; }`\n - `analyze_sentiment?: boolean`\n Enable sentiment analysis from Dialogflow.\n - `partial_automated_agent_reply?: boolean`\n Enable partial automated agent reply from Dialogflow.\n\n- `enable_dialogflow?: boolean`\n Enables Dialogflow for the current call. The default value is false.\n\n- `from_display_name?: string`\n 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.\n\n- `link_to?: string`\n Use another call's control id for sharing the same call session id\n\n- `media_encryption?: 'disabled' | 'SRTP' | 'DTLS'`\n 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.\n\n- `media_name?: string`\n 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.\n\n- `park_after_unbridge?: string`\n 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.\n\n- `preferred_codecs?: string`\n The list of comma-separated codecs in a preferred order for the forked media to be received.\n\n- `prevent_double_bridge?: boolean`\n Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.\n\n- `privacy?: 'id' | 'none'`\n 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.\n\n- `record?: 'record-from-answer'`\n Start recording automatically after an event. Disabled by default.\n\n- `record_channels?: 'single' | 'dual'`\n Defines which channel should be recorded ('single' or 'dual') when `record` is specified.\n\n- `record_custom_file_name?: string`\n The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.\n\n- `record_format?: 'wav' | 'mp3'`\n Defines the format of the recording ('wav' or 'mp3') when `record` is specified.\n\n- `record_max_length?: number`\n 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).\n\n- `record_timeout_secs?: number`\n 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).\n\n- `record_track?: 'both' | 'inbound' | 'outbound'`\n 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).\n\n- `record_trim?: 'trim-silence'`\n When set to `trim-silence`, silence will be removed from the beginning and end of the recording.\n\n- `send_silence_when_idle?: boolean`\n Generate silence RTP packets when no transmission available.\n\n- `sip_auth_password?: string`\n SIP Authentication password used for SIP challenges.\n\n- `sip_auth_username?: string`\n SIP Authentication username used for SIP challenges.\n\n- `sip_headers?: { name: 'User-to-User'; value: string; }[]`\n SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.\n\n- `sip_region?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'`\n Defines the SIP region to be used for the call.\n\n- `sip_transport_protocol?: 'UDP' | 'TCP' | 'TLS'`\n Defines SIP transport protocol to be used on the call.\n\n- `sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }`\n Use this field to modify sound effects, for example adjust the pitch.\n - `octaves?: number`\n Adjust the pitch in octaves, values should be between -1 and 1, default 0\n - `pitch?: number`\n Set the pitch directly, value should be > 0, default 1 (lower = lower tone)\n - `semitone?: number`\n Adjust the pitch in semitones, values should be between -14 and 14, default 0\n - `track?: string`\n The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`\n\n- `stream_auth_token?: string`\n An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.\n\n- `stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16'`\n Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.\n\n- `stream_bidirectional_mode?: 'mp3' | 'rtp'`\n Configures method of bidirectional streaming (mp3, rtp).\n\n- `stream_bidirectional_sampling_rate?: 8000 | 16000 | 22050 | 24000 | 48000`\n Audio sampling rate.\n\n- `stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite'`\n Specifies which call legs should receive the bidirectional stream audio.\n\n- `stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default'`\n 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.\n\n- `stream_establish_before_call_originate?: boolean`\n Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish.\n\n- `stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks'`\n Specifies which track should be streamed.\n\n- `stream_url?: string`\n The destination WebSocket address where the stream is going to be delivered.\n\n- `supervise_call_control_id?: string`\n The call leg which will be supervised by the new call.\n\n- `supervisor_role?: 'barge' | 'whisper' | 'monitor'`\n 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.\n\n- `time_limit_secs?: number`\n 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.\n\n- `timeout_secs?: number`\n 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.\n\n- `transcription?: boolean`\n Enable transcription upon call answer. The default value is false.\n\n- `transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; }`\n - `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n - `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n - `transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n - `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n - `transcription_tracks?: string`\n 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`.\n\n- `webhook_retries_policies?: object`\n 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.\n\n- `webhook_url?: string`\n Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.\n\n- `webhook_url_method?: 'POST' | 'GET'`\n HTTP request type used for `webhook_url`.\n\n- `webhook_urls?: object`\n 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.\n\n- `webhook_urls_method?: 'POST' | 'GET'`\n HTTP request method to invoke `webhook_urls`.\n\n### Returns\n\n- `{ data?: { call_control_id: string; call_leg_id: string; call_session_id: string; is_alive: boolean; record_type: 'call'; call_duration?: number; client_state?: string; end_time?: string; recording_id?: string; start_time?: string; }; }`\n\n - `data?: { call_control_id: string; call_leg_id: string; call_session_id: string; is_alive: boolean; record_type: 'call'; call_duration?: number; client_state?: string; end_time?: string; recording_id?: string; start_time?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.dial({\n connection_id: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:username@sip.telnyx.com;secure=srtp',\n});\n\nconsole.log(response);\n```",
11263
+ markdown: "## dial\n\n`client.calls.dial(connection_id: string, from: string, to: string | string[], answering_machine_detection?: 'premium' | 'detect' | 'detect_beep' | 'detect_words' | 'greeting_end' | 'disabled', answering_machine_detection_config?: { after_greeting_silence_millis?: number; between_words_silence_millis?: number; greeting_duration_millis?: number; greeting_silence_duration_millis?: number; greeting_total_analysis_time_millis?: number; initial_silence_millis?: number; maximum_number_of_words?: number; maximum_word_length_millis?: number; silence_threshold?: number; total_analysis_time_millis?: number; }, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, audio_url?: string, billing_group_id?: string, bridge_intent?: boolean, bridge_on_answer?: boolean, client_state?: string, command_id?: string, conference_config?: { id?: string; beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'; conference_name?: string; early_media?: boolean; end_conference_on_exit?: boolean; hold?: boolean; hold_audio_url?: string; hold_media_name?: string; mute?: boolean; soft_end_conference_on_exit?: boolean; start_conference_on_create?: boolean; start_conference_on_enter?: boolean; supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'; whisper_call_control_ids?: string[]; }, custom_headers?: { name: string; value: string; }[], deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }, dialogflow_config?: { analyze_sentiment?: boolean; partial_automated_agent_reply?: boolean; }, enable_dialogflow?: boolean, from_display_name?: string, link_to?: string, media_encryption?: 'disabled' | 'SRTP' | 'DTLS', media_name?: string, park_after_unbridge?: string, preferred_codecs?: string, prevent_double_bridge?: boolean, privacy?: 'id' | 'none', record?: 'record-from-answer', record_channels?: 'single' | 'dual', record_custom_file_name?: string, record_format?: 'wav' | 'mp3', record_max_length?: number, record_timeout_secs?: number, record_track?: 'both' | 'inbound' | 'outbound', record_trim?: 'trim-silence', send_silence_when_idle?: boolean, sip_auth_password?: string, sip_auth_username?: string, sip_headers?: { name: 'User-to-User'; value: string; }[], sip_region?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East', sip_transport_protocol?: 'UDP' | 'TCP' | 'TLS', sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }, stream_auth_token?: string, stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16', stream_bidirectional_mode?: 'mp3' | 'rtp', stream_bidirectional_sampling_rate?: 8000 | 16000 | 22050 | 24000 | 48000, stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite', stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default', stream_establish_before_call_originate?: boolean, stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks', stream_url?: string, supervise_call_control_id?: string, supervisor_role?: 'barge' | 'whisper' | 'monitor', time_limit_secs?: number, timeout_secs?: number, transcription?: boolean, transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: transcription_engine_google_config | transcription_engine_telnyx_config | transcription_engine_azure_config | transcription_engine_xai_config | transcription_engine_assemblyai_config | object | object | transcription_engine_a_config | transcription_engine_b_config | deepgram_nova2_config | deepgram_nova3_config; transcription_tracks?: string; }, webhook_retries_policies?: object, webhook_url?: string, webhook_url_method?: 'POST' | 'GET', webhook_urls?: object, webhook_urls_method?: 'POST' | 'GET'): { data?: object; }`\n\n**post** `/calls`\n\nDial 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.\n\n**Expected Webhooks:**\n\n- `call.initiated`\n- `call.answered` or `call.hangup`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.machine.detection.ended` if `answering_machine_detection` was requested\n- `call.machine.greeting.ended` if `answering_machine_detection` was requested to detect the end of machine greeting\n- `call.machine.premium.detection.ended` if `answering_machine_detection=premium` was requested\n- `call.machine.premium.greeting.ended` if `answering_machine_detection=premium` was requested and a beep was detected\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n\n\n### Parameters\n\n- `connection_id: string`\n The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.\n\n- `from: string`\n The `from` number to be used as the caller id presented to the destination (`to` number). The number should be in +E164 format.\n\n- `to: string | string[]`\n 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.\n\n- `answering_machine_detection?: 'premium' | 'detect' | 'detect_beep' | 'detect_words' | 'greeting_end' | 'disabled'`\n 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.\n\n- `answering_machine_detection_config?: { after_greeting_silence_millis?: number; between_words_silence_millis?: number; greeting_duration_millis?: number; greeting_silence_duration_millis?: number; greeting_total_analysis_time_millis?: number; initial_silence_millis?: number; maximum_number_of_words?: number; maximum_word_length_millis?: number; silence_threshold?: number; total_analysis_time_millis?: number; }`\n 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.\n - `after_greeting_silence_millis?: number`\n Silence duration threshold after a greeting message or voice for it be considered human.\n - `between_words_silence_millis?: number`\n Maximum threshold for silence between words.\n - `greeting_duration_millis?: number`\n Maximum threshold of a human greeting. If greeting longer than this value, considered machine.\n - `greeting_silence_duration_millis?: number`\n If machine already detected, maximum threshold for silence between words. If exceeded, the greeting is considered ended.\n - `greeting_total_analysis_time_millis?: number`\n If machine already detected, maximum timeout threshold to determine the end of the machine greeting.\n - `initial_silence_millis?: number`\n If initial silence duration is greater than this value, consider it a machine.\n - `maximum_number_of_words?: number`\n If number of detected words is greater than this value, consder it a machine.\n - `maximum_word_length_millis?: number`\n If a single word lasts longer than this threshold, consider it a machine.\n - `silence_threshold?: number`\n Minimum noise threshold for any analysis.\n - `total_analysis_time_millis?: number`\n Maximum timeout threshold for overall detection.\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `audio_url?: string`\n 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.\n\n- `billing_group_id?: string`\n Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.\n\n- `bridge_intent?: boolean`\n 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.\n\n- `bridge_on_answer?: boolean`\n Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer is true, link_to becomes required.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`.\n\n- `conference_config?: { id?: string; beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'; conference_name?: string; early_media?: boolean; end_conference_on_exit?: boolean; hold?: boolean; hold_audio_url?: string; hold_media_name?: string; mute?: boolean; soft_end_conference_on_exit?: boolean; start_conference_on_create?: boolean; start_conference_on_enter?: boolean; supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'; whisper_call_control_ids?: string[]; }`\n Optional configuration parameters to dial new participant into a conference.\n - `id?: string`\n Conference ID to be joined\n - `beep_enabled?: 'always' | 'never' | 'on_enter' | 'on_exit'`\n 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.\n - `conference_name?: string`\n Conference name to be joined\n - `early_media?: boolean`\n 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`\n - `end_conference_on_exit?: boolean`\n Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".\n - `hold?: boolean`\n Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".\n - `hold_audio_url?: string`\n 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\".\n - `hold_media_name?: string`\n 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\".\n - `mute?: boolean`\n Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".\n - `soft_end_conference_on_exit?: boolean`\n Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".\n - `start_conference_on_create?: boolean`\n 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\".\n - `start_conference_on_enter?: boolean`\n Whether the conference should be started after the participant joins the conference. Defaults to \"false\".\n - `supervisor_role?: 'barge' | 'monitor' | 'none' | 'whisper'`\n 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\".\n - `whisper_call_control_ids?: string[]`\n 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.\n\n- `custom_headers?: { name: string; value: string; }[]`\n Custom headers to be added to the SIP INVITE.\n\n- `deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }`\n 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.\n - `enabled: boolean`\n Whether deepfake detection is enabled.\n - `rtp_timeout?: number`\n 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.\n - `timeout?: number`\n Maximum time in seconds to wait for a detection result before timing out.\n\n- `dialogflow_config?: { analyze_sentiment?: boolean; partial_automated_agent_reply?: boolean; }`\n - `analyze_sentiment?: boolean`\n Enable sentiment analysis from Dialogflow.\n - `partial_automated_agent_reply?: boolean`\n Enable partial automated agent reply from Dialogflow.\n\n- `enable_dialogflow?: boolean`\n Enables Dialogflow for the current call. The default value is false.\n\n- `from_display_name?: string`\n 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.\n\n- `link_to?: string`\n Use another call's control id for sharing the same call session id\n\n- `media_encryption?: 'disabled' | 'SRTP' | 'DTLS'`\n 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.\n\n- `media_name?: string`\n 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.\n\n- `park_after_unbridge?: string`\n 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.\n\n- `preferred_codecs?: string`\n The list of comma-separated codecs in a preferred order for the forked media to be received.\n\n- `prevent_double_bridge?: boolean`\n Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.\n\n- `privacy?: 'id' | 'none'`\n 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.\n\n- `record?: 'record-from-answer'`\n Start recording automatically after an event. Disabled by default.\n\n- `record_channels?: 'single' | 'dual'`\n Defines which channel should be recorded ('single' or 'dual') when `record` is specified.\n\n- `record_custom_file_name?: string`\n The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.\n\n- `record_format?: 'wav' | 'mp3'`\n Defines the format of the recording ('wav' or 'mp3') when `record` is specified.\n\n- `record_max_length?: number`\n 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).\n\n- `record_timeout_secs?: number`\n 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).\n\n- `record_track?: 'both' | 'inbound' | 'outbound'`\n 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).\n\n- `record_trim?: 'trim-silence'`\n When set to `trim-silence`, silence will be removed from the beginning and end of the recording.\n\n- `send_silence_when_idle?: boolean`\n Generate silence RTP packets when no transmission available.\n\n- `sip_auth_password?: string`\n SIP Authentication password used for SIP challenges.\n\n- `sip_auth_username?: string`\n SIP Authentication username used for SIP challenges.\n\n- `sip_headers?: { name: 'User-to-User'; value: string; }[]`\n SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.\n\n- `sip_region?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'`\n Defines the SIP region to be used for the call.\n\n- `sip_transport_protocol?: 'UDP' | 'TCP' | 'TLS'`\n Defines SIP transport protocol to be used on the call.\n\n- `sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }`\n Use this field to modify sound effects, for example adjust the pitch.\n - `octaves?: number`\n Adjust the pitch in octaves, values should be between -1 and 1, default 0\n - `pitch?: number`\n Set the pitch directly, value should be > 0, default 1 (lower = lower tone)\n - `semitone?: number`\n Adjust the pitch in semitones, values should be between -14 and 14, default 0\n - `track?: string`\n The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`\n\n- `stream_auth_token?: string`\n An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum length is 4000 characters.\n\n- `stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16'`\n Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.\n\n- `stream_bidirectional_mode?: 'mp3' | 'rtp'`\n Configures method of bidirectional streaming (mp3, rtp).\n\n- `stream_bidirectional_sampling_rate?: 8000 | 16000 | 22050 | 24000 | 48000`\n Audio sampling rate.\n\n- `stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite'`\n Specifies which call legs should receive the bidirectional stream audio.\n\n- `stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default'`\n 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.\n\n- `stream_establish_before_call_originate?: boolean`\n Establish websocket connection before dialing the destination. This is useful for cases where the websocket connection takes a long time to establish.\n\n- `stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks'`\n Specifies which track should be streamed.\n\n- `stream_url?: string`\n The destination WebSocket address where the stream is going to be delivered.\n\n- `supervise_call_control_id?: string`\n The call leg which will be supervised by the new call.\n\n- `supervisor_role?: 'barge' | 'whisper' | 'monitor'`\n 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.\n\n- `time_limit_secs?: number`\n 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.\n\n- `timeout_secs?: number`\n 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.\n\n- `transcription?: boolean`\n Enable transcription upon call answer. The default value is false.\n\n- `transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; }`\n - `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n - `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n - `transcription_engine?: string`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n - `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n - `transcription_tracks?: string`\n 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`.\n\n- `webhook_retries_policies?: object`\n 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.\n\n- `webhook_url?: string`\n Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.\n\n- `webhook_url_method?: 'POST' | 'GET'`\n HTTP request type used for `webhook_url`.\n\n- `webhook_urls?: object`\n 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.\n\n- `webhook_urls_method?: 'POST' | 'GET'`\n HTTP request method to invoke `webhook_urls`.\n\n### Returns\n\n- `{ data?: { call_control_id: string; call_leg_id: string; call_session_id: string; is_alive: boolean; record_type: 'call'; call_duration?: number; client_state?: string; end_time?: string; recording_id?: string; start_time?: string; }; }`\n\n - `data?: { call_control_id: string; call_leg_id: string; call_session_id: string; is_alive: boolean; record_type: 'call'; call_duration?: number; client_state?: string; end_time?: string; recording_id?: string; start_time?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.dial({\n connection_id: '7267xxxxxxxxxxxxxx',\n from: '+18005550101',\n to: '+18005550100 or sip:username@sip.telnyx.com;secure=srtp',\n});\n\nconsole.log(response);\n```",
11264
11264
  perLanguage: {
11265
11265
  typescript: {
11266
11266
  method: 'client.calls.dial',
@@ -11363,7 +11363,7 @@ const EMBEDDED_METHODS = [
11363
11363
  "voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; };",
11364
11364
  ],
11365
11365
  response: '{ data?: { conversation_id?: string; result?: string; }; }',
11366
- markdown: "## start_ai_assistant\n\n`client.calls.actions.startAIAssistant(call_control_id: string, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, client_state?: string, command_id?: string, greeting?: string, interruption_settings?: { enable?: boolean; }, message_history?: { content: string; role: 'user'; metadata?: object; } | { role: 'assistant'; content?: string; metadata?: object; tool_calls?: { id: string; function: object; type: 'function'; }[]; } | { content: string; role: 'tool'; tool_call_id: string; metadata?: object; } | { content: string; role: 'system'; metadata?: object; } | { content: string; role: 'developer'; metadata?: object; }[], participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[], send_message_history_updates?: boolean, transcription?: { language?: string; model?: string; }, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: call_control_command_result_with_conversation_id; }`\n\n**post** `/calls/{call_control_id}/actions/ai_assistant_start`\n\nStart an AI assistant on the call.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `greeting?: string`\n Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n\n- `interruption_settings?: { enable?: boolean; }`\n Settings for handling user interruptions during assistant speech\n - `enable?: boolean`\n When true, allows users to interrupt the assistant while speaking\n\n- `message_history?: { content: string; role: 'user'; metadata?: object; } | { role: 'assistant'; content?: string; metadata?: object; tool_calls?: { id: string; function: { name: string; }; type: 'function'; }[]; } | { content: string; role: 'tool'; tool_call_id: string; metadata?: object; } | { content: string; role: 'system'; metadata?: object; } | { content: string; role: 'developer'; metadata?: object; }[]`\n 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.\n\n- `participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[]`\n A list of participants to add to the conversation when it starts.\n\n- `send_message_history_updates?: boolean`\n When `true`, a webhook is sent each time the conversation message history is updated.\n\n- `transcription?: { language?: string; model?: string; }`\n 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.\n - `language?: string`\n 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`.\n - `model?: string`\n The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-streaming` for live streaming transcription.\n- `xai/grok-stt` for live streaming transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_id?: string; result?: string; }; }`\n\n - `data?: { conversation_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startAIAssistant('call_control_id');\n\nconsole.log(response);\n```",
11366
+ markdown: "## start_ai_assistant\n\n`client.calls.actions.startAIAssistant(call_control_id: string, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, client_state?: string, command_id?: string, greeting?: string, interruption_settings?: { enable?: boolean; }, message_history?: { content: string; role: 'user'; metadata?: object; } | { role: 'assistant'; content?: string; metadata?: object; tool_calls?: { id: string; function: object; type: 'function'; }[]; } | { content: string; role: 'tool'; tool_call_id: string; metadata?: object; } | { content: string; role: 'system'; metadata?: object; } | { content: string; role: 'developer'; metadata?: object; }[], participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[], send_message_history_updates?: boolean, transcription?: { language?: string; model?: string; }, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: call_control_command_result_with_conversation_id; }`\n\n**post** `/calls/{call_control_id}/actions/ai_assistant_start`\n\nStart an AI assistant on the call.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `greeting?: string`\n Text that will be played when the assistant starts, if none then nothing will be played when the assistant starts. The greeting can be text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n\n- `interruption_settings?: { enable?: boolean; }`\n Settings for handling user interruptions during assistant speech\n - `enable?: boolean`\n When true, allows users to interrupt the assistant while speaking\n\n- `message_history?: { content: string; role: 'user'; metadata?: object; } | { role: 'assistant'; content?: string; metadata?: object; tool_calls?: { id: string; function: { name: string; }; type: 'function'; }[]; } | { content: string; role: 'tool'; tool_call_id: string; metadata?: object; } | { content: string; role: 'system'; metadata?: object; } | { content: string; role: 'developer'; metadata?: object; }[]`\n 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.\n\n- `participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[]`\n A list of participants to add to the conversation when it starts.\n\n- `send_message_history_updates?: boolean`\n When `true`, a webhook is sent each time the conversation message history is updated.\n\n- `transcription?: { language?: string; model?: string; }`\n 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.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language.\n - `model?: string`\n The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-streaming` for live streaming transcription.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_id?: string; result?: string; }; }`\n\n - `data?: { conversation_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startAIAssistant('call_control_id');\n\nconsole.log(response);\n```",
11367
11367
  perLanguage: {
11368
11368
  typescript: {
11369
11369
  method: 'client.calls.actions.startAIAssistant',
@@ -11478,7 +11478,7 @@ const EMBEDDED_METHODS = [
11478
11478
  "stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks';",
11479
11479
  'stream_url?: string;',
11480
11480
  'transcription?: boolean;',
11481
- "transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; };",
11481
+ "transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; };",
11482
11482
  'webhook_retries_policies?: object;',
11483
11483
  'webhook_url?: string;',
11484
11484
  "webhook_url_method?: 'POST' | 'GET';",
@@ -11486,7 +11486,7 @@ const EMBEDDED_METHODS = [
11486
11486
  "webhook_urls_method?: 'POST' | 'GET';",
11487
11487
  ],
11488
11488
  response: '{ data?: { recording_id?: string; result?: string; }; }',
11489
- markdown: "## answer\n\n`client.calls.actions.answer(call_control_id: string, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, billing_group_id?: string, client_state?: string, command_id?: string, custom_headers?: { name: string; value: string; }[], deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }, preferred_codecs?: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264', record?: 'record-from-answer', record_channels?: 'single' | 'dual', record_custom_file_name?: string, record_format?: 'wav' | 'mp3', record_max_length?: number, record_timeout_secs?: number, record_track?: 'both' | 'inbound' | 'outbound', record_trim?: 'trim-silence', send_silence_when_idle?: boolean, sip_headers?: { name: 'User-to-User'; value: string; }[], sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }, stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16', stream_bidirectional_mode?: 'mp3' | 'rtp', stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite', stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default', stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks', stream_url?: string, transcription?: boolean, transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: transcription_engine_google_config | transcription_engine_telnyx_config | transcription_engine_azure_config | object | object | transcription_engine_a_config | transcription_engine_b_config | deepgram_nova2_config | deepgram_nova3_config; transcription_tracks?: string; }, webhook_retries_policies?: object, webhook_url?: string, webhook_url_method?: 'POST' | 'GET', webhook_urls?: object, webhook_urls_method?: 'POST' | 'GET'): { data?: object; }`\n\n**post** `/calls/{call_control_id}/actions/answer`\n\nAnswer an incoming call. You must issue this command before executing subsequent commands on an incoming call.\n\n**Expected Webhooks:**\n\n- `call.answered`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `billing_group_id?: string`\n Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `custom_headers?: { name: string; value: string; }[]`\n Custom headers to be added to the SIP INVITE response.\n\n- `deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }`\n 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.\n - `enabled: boolean`\n Whether deepfake detection is enabled.\n - `rtp_timeout?: number`\n 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.\n - `timeout?: number`\n Maximum time in seconds to wait for a detection result before timing out.\n\n- `preferred_codecs?: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264'`\n The list of comma-separated codecs in a preferred order for the forked media to be received.\n\n- `record?: 'record-from-answer'`\n Start recording automatically after an event. Disabled by default.\n\n- `record_channels?: 'single' | 'dual'`\n Defines which channel should be recorded ('single' or 'dual') when `record` is specified.\n\n- `record_custom_file_name?: string`\n The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.\n\n- `record_format?: 'wav' | 'mp3'`\n Defines the format of the recording ('wav' or 'mp3') when `record` is specified.\n\n- `record_max_length?: number`\n 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).\n\n- `record_timeout_secs?: number`\n 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).\n\n- `record_track?: 'both' | 'inbound' | 'outbound'`\n 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).\n\n- `record_trim?: 'trim-silence'`\n When set to `trim-silence`, silence will be removed from the beginning and end of the recording.\n\n- `send_silence_when_idle?: boolean`\n Generate silence RTP packets when no transmission available.\n\n- `sip_headers?: { name: 'User-to-User'; value: string; }[]`\n SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported.\n\n- `sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }`\n Use this field to modify sound effects, for example adjust the pitch.\n - `octaves?: number`\n Adjust the pitch in octaves, values should be between -1 and 1, default 0\n - `pitch?: number`\n Set the pitch directly, value should be > 0, default 1 (lower = lower tone)\n - `semitone?: number`\n Adjust the pitch in semitones, values should be between -14 and 14, default 0\n - `track?: string`\n The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`\n\n- `stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16'`\n Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.\n\n- `stream_bidirectional_mode?: 'mp3' | 'rtp'`\n Configures method of bidirectional streaming (mp3, rtp).\n\n- `stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite'`\n Specifies which call legs should receive the bidirectional stream audio.\n\n- `stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default'`\n 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.\n\n- `stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks'`\n Specifies which track should be streamed.\n\n- `stream_url?: string`\n The destination WebSocket address where the stream is going to be delivered.\n\n- `transcription?: boolean`\n Enable transcription upon call answer. The default value is false.\n\n- `transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; }`\n - `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n - `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n - `transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n - `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n - `transcription_tracks?: string`\n 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`.\n\n- `webhook_retries_policies?: object`\n 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.\n\n- `webhook_url?: string`\n Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.\n\n- `webhook_url_method?: 'POST' | 'GET'`\n HTTP request type used for `webhook_url`.\n\n- `webhook_urls?: object`\n 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`.\n\n- `webhook_urls_method?: 'POST' | 'GET'`\n HTTP request method to invoke `webhook_urls`.\n\n### Returns\n\n- `{ data?: { recording_id?: string; result?: string; }; }`\n\n - `data?: { recording_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.answer('call_control_id');\n\nconsole.log(response);\n```",
11489
+ markdown: "## answer\n\n`client.calls.actions.answer(call_control_id: string, assistant?: { id: string; dynamic_variables?: object; external_llm?: object; fallback_config?: object; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, billing_group_id?: string, client_state?: string, command_id?: string, custom_headers?: { name: string; value: string; }[], deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }, preferred_codecs?: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264', record?: 'record-from-answer', record_channels?: 'single' | 'dual', record_custom_file_name?: string, record_format?: 'wav' | 'mp3', record_max_length?: number, record_timeout_secs?: number, record_track?: 'both' | 'inbound' | 'outbound', record_trim?: 'trim-silence', send_silence_when_idle?: boolean, sip_headers?: { name: 'User-to-User'; value: string; }[], sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }, stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16', stream_bidirectional_mode?: 'mp3' | 'rtp', stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite', stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default', stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks', stream_url?: string, transcription?: boolean, transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: transcription_engine_google_config | transcription_engine_telnyx_config | transcription_engine_azure_config | transcription_engine_xai_config | transcription_engine_assemblyai_config | object | object | transcription_engine_a_config | transcription_engine_b_config | deepgram_nova2_config | deepgram_nova3_config; transcription_tracks?: string; }, webhook_retries_policies?: object, webhook_url?: string, webhook_url_method?: 'POST' | 'GET', webhook_urls?: object, webhook_urls_method?: 'POST' | 'GET'): { data?: object; }`\n\n**post** `/calls/{call_control_id}/actions/answer`\n\nAnswer an incoming call. You must issue this command before executing subsequent commands on an incoming call.\n\n**Expected Webhooks:**\n\n- `call.answered`\n- `call.hold` and `call.unhold` if the call is held/unheld\n- `call.deepfake_detection.result` if `deepfake_detection` was enabled\n- `call.deepfake_detection.error` if `deepfake_detection` was enabled and an error occurred\n- `streaming.started`, `streaming.stopped` or `streaming.failed` if `stream_url` was set\n\nWhen the `record` parameter is set to `record-from-answer`, the response will include a `recording_id` field.\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `assistant?: { id: string; dynamic_variables?: object; external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }; greeting?: string; instructions?: string; llm_api_key_ref?: string; mcp_servers?: object[]; model?: string; name?: string; observability_settings?: object; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n AI Assistant configuration. All fields except `id` are optional — the assistant's stored configuration will be used as fallback for any omitted fields.\n - `id: string`\n The identifier of the AI assistant to use.\n - `dynamic_variables?: object`\n 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.\n - `external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }`\n External LLM configuration for bringing your own LLM endpoint.\n - `fallback_config?: { external_llm?: { authentication_method?: 'token' | 'certificate'; base_url?: string; certificate_ref?: string; forward_metadata?: boolean; llm_api_key_ref?: string; model?: string; token_retrieval_url?: string; }; llm_api_key_ref?: string; model?: string; }`\n Fallback LLM configuration used when the primary LLM provider is unavailable.\n - `greeting?: string`\n Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for `AWS.Polly.<voice_id>` voices. There is a 3,000 character limit.\n - `instructions?: string`\n 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.\n - `llm_api_key_ref?: string`\n 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.).\n - `mcp_servers?: object[]`\n MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with external tools and data sources.\n - `model?: string`\n LLM model override for this call. If omitted, the assistant's configured model is used.\n - `name?: string`\n Assistant name override for this call.\n - `observability_settings?: object`\n Observability configuration for the assistant session, including Langfuse integration for tracing and monitoring.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides the assistant's stored tools if provided.\n\n- `billing_group_id?: string`\n Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `custom_headers?: { name: string; value: string; }[]`\n Custom headers to be added to the SIP INVITE response.\n\n- `deepfake_detection?: { enabled: boolean; rtp_timeout?: number; timeout?: number; }`\n 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.\n - `enabled: boolean`\n Whether deepfake detection is enabled.\n - `rtp_timeout?: number`\n 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.\n - `timeout?: number`\n Maximum time in seconds to wait for a detection result before timing out.\n\n- `preferred_codecs?: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264'`\n The list of comma-separated codecs in a preferred order for the forked media to be received.\n\n- `record?: 'record-from-answer'`\n Start recording automatically after an event. Disabled by default.\n\n- `record_channels?: 'single' | 'dual'`\n Defines which channel should be recorded ('single' or 'dual') when `record` is specified.\n\n- `record_custom_file_name?: string`\n The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add a Unix timestamp suffix.\n\n- `record_format?: 'wav' | 'mp3'`\n Defines the format of the recording ('wav' or 'mp3') when `record` is specified.\n\n- `record_max_length?: number`\n 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).\n\n- `record_timeout_secs?: number`\n 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).\n\n- `record_track?: 'both' | 'inbound' | 'outbound'`\n 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).\n\n- `record_trim?: 'trim-silence'`\n When set to `trim-silence`, silence will be removed from the beginning and end of the recording.\n\n- `send_silence_when_idle?: boolean`\n Generate silence RTP packets when no transmission available.\n\n- `sip_headers?: { name: 'User-to-User'; value: string; }[]`\n SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported.\n\n- `sound_modifications?: { octaves?: number; pitch?: number; semitone?: number; track?: string; }`\n Use this field to modify sound effects, for example adjust the pitch.\n - `octaves?: number`\n Adjust the pitch in octaves, values should be between -1 and 1, default 0\n - `pitch?: number`\n Set the pitch directly, value should be > 0, default 1 (lower = lower tone)\n - `semitone?: number`\n Adjust the pitch in semitones, values should be between -14 and 14, default 0\n - `track?: string`\n The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`\n\n- `stream_bidirectional_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16'`\n Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.\n\n- `stream_bidirectional_mode?: 'mp3' | 'rtp'`\n Configures method of bidirectional streaming (mp3, rtp).\n\n- `stream_bidirectional_target_legs?: 'both' | 'self' | 'opposite'`\n Specifies which call legs should receive the bidirectional stream audio.\n\n- `stream_codec?: 'PCMU' | 'PCMA' | 'G722' | 'OPUS' | 'AMR-WB' | 'L16' | 'default'`\n 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.\n\n- `stream_track?: 'inbound_track' | 'outbound_track' | 'both_tracks'`\n Specifies which track should be streamed.\n\n- `stream_url?: string`\n The destination WebSocket address where the stream is going to be delivered.\n\n- `transcription?: boolean`\n Enable transcription upon call answer. The default value is false.\n\n- `transcription_config?: { client_state?: string; command_id?: string; transcription_engine?: string; transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }; transcription_tracks?: string; }`\n - `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n - `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n - `transcription_engine?: string`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n - `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n - `transcription_tracks?: string`\n 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`.\n\n- `webhook_retries_policies?: object`\n 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.\n\n- `webhook_url?: string`\n Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.\n\n- `webhook_url_method?: 'POST' | 'GET'`\n HTTP request type used for `webhook_url`.\n\n- `webhook_urls?: object`\n 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`.\n\n- `webhook_urls_method?: 'POST' | 'GET'`\n HTTP request method to invoke `webhook_urls`.\n\n### Returns\n\n- `{ data?: { recording_id?: string; result?: string; }; }`\n\n - `data?: { recording_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.answer('call_control_id');\n\nconsole.log(response);\n```",
11490
11490
  perLanguage: {
11491
11491
  typescript: {
11492
11492
  method: 'client.calls.actions.answer',
@@ -11917,7 +11917,7 @@ const EMBEDDED_METHODS = [
11917
11917
  "voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; };",
11918
11918
  ],
11919
11919
  response: '{ data?: { conversation_id?: string; result?: string; }; }',
11920
- markdown: "## gather_using_ai\n\n`client.calls.actions.gatherUsingAI(call_control_id: string, parameters: object, assistant?: { instructions?: string; model?: string; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, client_state?: string, command_id?: string, gather_ended_speech?: string, greeting?: string, interruption_settings?: { enable?: boolean; }, language?: string, message_history?: { content?: string; role?: 'assistant' | 'user'; }[], send_message_history_updates?: boolean, send_partial_results?: boolean, transcription?: { language?: string; model?: string; }, user_response_timeout_ms?: number, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: call_control_command_result_with_conversation_id; }`\n\n**post** `/calls/{call_control_id}/actions/gather_using_ai`\n\nGather 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\n\n### Parameters\n\n- `call_control_id: string`\n\n- `parameters: object`\n 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\n\n- `assistant?: { instructions?: string; model?: string; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n Assistant configuration including choice of LLM, custom instructions, and tools.\n - `instructions?: string`\n The system instructions that the voice assistant uses during the gather command\n - `model?: string`\n The model to be used by the voice assistant.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n The tools that the voice assistant can use.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `gather_ended_speech?: string`\n Text that will be played when the gathering has finished. There is a 3,000 character limit.\n\n- `greeting?: string`\n 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.<voice_id>` voices. There is a 3,000 character limit.\n\n- `interruption_settings?: { enable?: boolean; }`\n Settings for handling user interruptions during assistant speech\n - `enable?: boolean`\n When true, allows users to interrupt the assistant while speaking\n\n- `language?: string`\n Language to use for speech recognition\n\n- `message_history?: { content?: string; role?: 'assistant' | 'user'; }[]`\n 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.\n\n- `send_message_history_updates?: boolean`\n 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.\n\n- `send_partial_results?: boolean`\n 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.\n\n- `transcription?: { language?: string; model?: string; }`\n 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.\n - `language?: string`\n 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`.\n - `model?: string`\n The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-streaming` for live streaming transcription.\n- `xai/grok-stt` for live streaming transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.\n\n- `user_response_timeout_ms?: number`\n The maximum time in milliseconds to wait for user response before timing out.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_id?: string; result?: string; }; }`\n\n - `data?: { conversation_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.gatherUsingAI('call_control_id', { parameters: {\n properties: 'bar',\n required: 'bar',\n type: 'bar',\n} });\n\nconsole.log(response);\n```",
11920
+ markdown: "## gather_using_ai\n\n`client.calls.actions.gatherUsingAI(call_control_id: string, parameters: object, assistant?: { instructions?: string; model?: string; openai_api_key_ref?: string; tools?: book_appointment_tool | check_availability_tool | webhook_tool | hangup_tool | transfer_tool | call_control_retrieval_tool[]; }, client_state?: string, command_id?: string, gather_ended_speech?: string, greeting?: string, interruption_settings?: { enable?: boolean; }, language?: string, message_history?: { content?: string; role?: 'assistant' | 'user'; }[], send_message_history_updates?: boolean, send_partial_results?: boolean, transcription?: { language?: string; model?: string; }, user_response_timeout_ms?: number, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: call_control_command_result_with_conversation_id; }`\n\n**post** `/calls/{call_control_id}/actions/gather_using_ai`\n\nGather 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\n\n### Parameters\n\n- `call_control_id: string`\n\n- `parameters: object`\n 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\n\n- `assistant?: { instructions?: string; model?: string; openai_api_key_ref?: string; tools?: { book_appointment: book_appointment_tool_params; type: 'book_appointment'; } | { check_availability: check_availability_tool_params; type: 'check_availability'; } | { type: 'webhook'; webhook: object; } | { hangup: hangup_tool_params; type: 'hangup'; } | { transfer: object; type: 'transfer'; } | { retrieval: call_control_bucket_ids; type: 'retrieval'; }[]; }`\n Assistant configuration including choice of LLM, custom instructions, and tools.\n - `instructions?: string`\n The system instructions that the voice assistant uses during the gather command\n - `model?: string`\n The model to be used by the voice assistant.\n - `openai_api_key_ref?: string`\n 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.\n - `tools?: { book_appointment: { api_key_ref: string; event_type_id: number; attendee_name?: string; attendee_timezone?: string; }; type: 'book_appointment'; } | { check_availability: { api_key_ref: string; event_type_id: number; }; type: 'check_availability'; } | { type: 'webhook'; webhook: { description: string; name: string; url: string; body_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; headers?: { name?: string; value?: string; }[]; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; path_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; query_parameters?: { properties?: object; required?: string[]; type?: 'object'; }; }; } | { hangup: { description?: string; }; type: 'hangup'; } | { transfer: { from: string; targets: { to: string; name?: string; }[] | string; }; type: 'transfer'; } | { retrieval: { bucket_ids: string[]; max_num_results?: number; }; type: 'retrieval'; }[]`\n The tools that the voice assistant can use.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `gather_ended_speech?: string`\n Text that will be played when the gathering has finished. There is a 3,000 character limit.\n\n- `greeting?: string`\n 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.<voice_id>` voices. There is a 3,000 character limit.\n\n- `interruption_settings?: { enable?: boolean; }`\n Settings for handling user interruptions during assistant speech\n - `enable?: boolean`\n When true, allows users to interrupt the assistant while speaking\n\n- `language?: string`\n Language to use for speech recognition\n\n- `message_history?: { content?: string; role?: 'assistant' | 'user'; }[]`\n 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.\n\n- `send_message_history_updates?: boolean`\n 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.\n\n- `send_partial_results?: boolean`\n 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.\n\n- `transcription?: { language?: string; model?: string; }`\n 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.\n - `language?: string`\n The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. Supported and meaningful values depend on the selected transcription `model`. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language.\n - `model?: string`\n The speech to text model to be used by the voice assistant. Supported models include:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-streaming` for live streaming transcription.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.\n\n- `user_response_timeout_ms?: number`\n The maximum time in milliseconds to wait for user response before timing out.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_id?: string; result?: string; }; }`\n\n - `data?: { conversation_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.gatherUsingAI('call_control_id', { parameters: {\n properties: 'bar',\n required: 'bar',\n type: 'bar',\n} });\n\nconsole.log(response);\n```",
11921
11921
  perLanguage: {
11922
11922
  typescript: {
11923
11923
  method: 'client.calls.actions.gatherUsingAI',
@@ -13120,12 +13120,12 @@ const EMBEDDED_METHODS = [
13120
13120
  'call_control_id: string;',
13121
13121
  'client_state?: string;',
13122
13122
  'command_id?: string;',
13123
- "transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B';",
13124
- "transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; };",
13123
+ 'transcription_engine?: string;',
13124
+ "transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; };",
13125
13125
  'transcription_tracks?: string;',
13126
13126
  ],
13127
13127
  response: '{ data?: { result?: string; }; }',
13128
- markdown: "## start_transcription\n\n`client.calls.actions.startTranscription(call_control_id: string, client_state?: string, command_id?: string, transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B', transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }, transcription_tracks?: string): { data?: call_control_command_result; }`\n\n**post** `/calls/{call_control_id}/actions/transcription_start`\n\nStart real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command.\n\n**Expected Webhooks:**\n\n- `call.transcription`\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `transcription_engine?: 'Google' | 'Telnyx' | 'Deepgram' | 'Azure' | 'xAI' | 'AssemblyAI' | 'A' | 'B'`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n\n- `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n\n- `transcription_tracks?: string`\n 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`.\n\n### Returns\n\n- `{ data?: { result?: string; }; }`\n\n - `data?: { result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startTranscription('call_control_id');\n\nconsole.log(response);\n```",
13128
+ markdown: "## start_transcription\n\n`client.calls.actions.startTranscription(call_control_id: string, client_state?: string, command_id?: string, transcription_engine?: string, transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: google_transcription_language; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: object[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: telnyx_transcription_language; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }, transcription_tracks?: string): { data?: call_control_command_result; }`\n\n**post** `/calls/{call_control_id}/actions/transcription_start`\n\nStart real-time transcription. Transcription will stop on call hang-up, or can be initiated via the Transcription stop command.\n\n**Expected Webhooks:**\n\n- `call.transcription`\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `transcription_engine?: string`\n Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for backward compatibility.\n\n- `transcription_engine_config?: { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'Google'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'Telnyx'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { region: 'australiaeast' | 'centralindia' | 'eastus' | 'northcentralus' | 'westeurope' | 'westus2'; transcription_engine: 'Azure'; api_key_ref?: string; language?: string; } | { interim_results?: boolean; language?: string; transcription_engine?: 'xAI'; transcription_model?: 'xai/grok-stt'; } | { interim_results?: boolean; transcription_engine?: 'AssemblyAI'; transcription_model?: 'assemblyai/universal-streaming'; } | { interim_results?: boolean; language?: string; transcription_engine?: 'Speechmatics'; transcription_model?: 'speechmatics/standard'; } | { transcription_engine: 'Soniox'; enable_endpoint_detection?: boolean; interim_results?: boolean; language?: string; max_endpoint_delay_ms?: number; transcription_model?: 'soniox/stt-rt-v4'; } | { enable_speaker_diarization?: boolean; hints?: string[]; interim_results?: boolean; language?: string; max_speaker_count?: number; min_speaker_count?: number; model?: string; profanity_filter?: boolean; speech_context?: { boost?: number; phrases?: string[]; }[]; transcription_engine?: 'A'; use_enhanced?: boolean; } | { language?: string; transcription_engine?: 'B'; transcription_model?: 'openai/whisper-tiny' | 'openai/whisper-large-v3-turbo'; } | { transcription_engine: 'deepgram/nova-2'; transcription_model: 'deepgram/nova-2'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; } | { transcription_engine: 'deepgram/nova-3'; transcription_model: 'deepgram/nova-3'; interim_results?: boolean; keywords_boosting?: object; language?: string; utterance_end_ms?: number; }`\n\n- `transcription_tracks?: string`\n 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`.\n\n### Returns\n\n- `{ data?: { result?: string; }; }`\n\n - `data?: { result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startTranscription('call_control_id');\n\nconsole.log(response);\n```",
13129
13129
  perLanguage: {
13130
13130
  typescript: {
13131
13131
  method: 'client.calls.actions.startTranscription',
@@ -13396,62 +13396,60 @@ const EMBEDDED_METHODS = [
13396
13396
  endpoint: '/calls/{call_control_id}/actions/conversation_relay_start',
13397
13397
  httpMethod: 'post',
13398
13398
  summary: 'Start Conversation Relay',
13399
- description: 'Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `conversation_relay.disconnected`\n',
13399
+ description: 'Start a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n',
13400
13400
  stainlessPath: '(resource) calls.actions > (method) start_conversation_relay',
13401
13401
  qualified: 'client.calls.actions.startConversationRelay',
13402
13402
  params: [
13403
13403
  'call_control_id: string;',
13404
- 'conversation_relay_url: string;',
13405
13404
  'assistant?: { dynamic_variables?: object; };',
13406
13405
  'client_state?: string;',
13407
13406
  'command_id?: string;',
13408
13407
  'conversation_relay_dtmf_detection?: boolean;',
13408
+ "conversation_relay_settings?: { url: string; dtmf_detection?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]; };",
13409
+ 'conversation_relay_url?: string;',
13409
13410
  'greeting?: string;',
13410
13411
  "interruption_settings?: { enable?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; };",
13411
13412
  'language?: string;',
13412
13413
  'languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[];',
13413
- "participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[];",
13414
- 'send_message_history_updates?: boolean;',
13415
13414
  'transcription?: { language?: string; model?: string; provider?: string; };',
13416
13415
  'transcription_language?: string;',
13417
13416
  'tts_language?: string;',
13418
- 'user_response_timeout_ms?: number;',
13419
13417
  'voice?: string;',
13420
13418
  "voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; };",
13421
13419
  ],
13422
13420
  response: '{ data?: { conversation_relay_id?: string; result?: string; }; }',
13423
- markdown: "## start_conversation_relay\n\n`client.calls.actions.startConversationRelay(call_control_id: string, conversation_relay_url: string, assistant?: { dynamic_variables?: object; }, client_state?: string, command_id?: string, conversation_relay_dtmf_detection?: boolean, greeting?: string, interruption_settings?: { enable?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; }, language?: string, languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[], participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[], send_message_history_updates?: boolean, transcription?: { language?: string; model?: string; provider?: string; }, transcription_language?: string, tts_language?: string, user_response_timeout_ms?: number, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: object; }`\n\n**post** `/calls/{call_control_id}/actions/conversation_relay_start`\n\nStart a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `conversation_relay.disconnected`\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `conversation_relay_url: string`\n WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.\n\n- `assistant?: { dynamic_variables?: object; }`\n Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session.\n - `dynamic_variables?: object`\n Custom key-value parameters forwarded to the Conversation Relay session.\n\n- `client_state?: string`\n Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `conversation_relay_dtmf_detection?: boolean`\n Enable DTMF detection for the relay session.\n\n- `greeting?: string`\n Text played when the relay session starts.\n\n- `interruption_settings?: { enable?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; }`\n Settings for handling caller interruptions during Conversation Relay speech.\n - `enable?: boolean`\n Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.\n - `interruptible?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n\n- `language?: string`\n Default language for the relay session. This value is used for both text-to-speech and speech recognition unless `tts_language` or `transcription_language` are provided.\n\n- `languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]`\n Language-specific TTS and transcription settings. Use this when the relay session needs per-language provider, voice, or speech model configuration.\n\n- `participants?: { id: string; role: 'user'; name?: string; on_hangup?: 'continue_conversation' | 'end_conversation'; }[]`\n Participants to add to the conversation.\n\n- `send_message_history_updates?: boolean`\n When true, sends message history update webhooks.\n\n- `transcription?: { language?: string; model?: string; provider?: string; }`\n Speech-to-text settings for Conversation Relay.\n - `language?: string`\n Transcription language.\n - `model?: string`\n Transcription model to use.\n - `provider?: string`\n Transcription provider to use.\n\n- `transcription_language?: string`\n Language to use for speech recognition. Overrides `language` for transcription when provided.\n\n- `tts_language?: string`\n Language to use for text-to-speech. Overrides `language` for TTS when provided.\n\n- `user_response_timeout_ms?: number`\n Time in milliseconds to wait for caller input before timing out.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_relay_id?: string; result?: string; }; }`\n\n - `data?: { conversation_relay_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id', { conversation_relay_url: 'wss://example.com/conversation-relay' });\n\nconsole.log(response);\n```",
13421
+ markdown: "## start_conversation_relay\n\n`client.calls.actions.startConversationRelay(call_control_id: string, assistant?: { dynamic_variables?: object; }, client_state?: string, command_id?: string, conversation_relay_dtmf_detection?: boolean, conversation_relay_settings?: { url: string; dtmf_detection?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]; }, conversation_relay_url?: string, greeting?: string, interruption_settings?: { enable?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; }, language?: string, languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[], transcription?: { language?: string; model?: string; provider?: string; }, transcription_language?: string, tts_language?: string, voice?: string, voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }): { data?: object; }`\n\n**post** `/calls/{call_control_id}/actions/conversation_relay_start`\n\nStart a Conversation Relay session on an active call. Conversation Relay connects the call audio to your WebSocket so your application can exchange realtime messages with the caller while Telnyx handles speech recognition and text-to-speech. Only one AI Assistant or Conversation Relay session can be active on a call at a time.\n\n**Expected Webhooks:**\n\n- `call.conversation.ended` - Sent when the Conversation Relay session ends. If the customer WebSocket disconnects, the webhook payload `reason` is `customer_disconnect`.\n\n\n### Parameters\n\n- `call_control_id: string`\n\n- `assistant?: { dynamic_variables?: object; }`\n Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables` to make it available to the relay session.\n - `dynamic_variables?: object`\n Custom key-value parameters forwarded to the Conversation Relay session.\n\n- `client_state?: string`\n Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.\n\n- `command_id?: string`\n Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.\n\n- `conversation_relay_dtmf_detection?: boolean`\n Enable DTMF detection for the relay session.\n\n- `conversation_relay_settings?: { url: string; dtmf_detection?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]; }`\n Conversation Relay connection settings. This object is used by TeXML Call Scripting's `<ConversationRelay>` verb. The `interruptible` and `interruptible_greeting` fields are shorthand for `interruption_settings.interruptible` and `interruption_settings.interruptible_greeting`; use top-level `interruption_settings` for the full interruption settings shape.\n - `url: string`\n WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.\n - `dtmf_detection?: boolean`\n Whether to enable DTMF detection during the relay session.\n - `interruptible?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]`\n Language-specific TTS and transcription settings.\n\n- `conversation_relay_url?: string`\n WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.\n\n- `greeting?: string`\n Text played when the relay session starts.\n\n- `interruption_settings?: { enable?: boolean; interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'; welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'; }`\n Settings for handling caller interruptions during Conversation Relay speech.\n - `enable?: boolean`\n Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.\n - `interruptible?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `interruptible_greeting?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n - `welcome_greeting_interruptible?: 'none' | 'any' | 'speech' | 'dtmf'`\n Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none` disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.\n\n- `language?: string`\n Default language for the relay session. This value is used for both text-to-speech and speech recognition unless `tts_language` or `transcription_language` are provided.\n\n- `languages?: { code?: string; speech_model?: string; transcription_provider?: string; tts_provider?: string; voice?: string; }[]`\n Language-specific TTS and transcription settings. Use this when the relay session needs per-language provider, voice, or speech model configuration.\n\n- `transcription?: { language?: string; model?: string; provider?: string; }`\n Speech-to-text settings for Conversation Relay.\n - `language?: string`\n Transcription language.\n - `model?: string`\n Transcription model to use.\n - `provider?: string`\n Transcription provider to use.\n\n- `transcription_language?: string`\n Language to use for speech recognition. Overrides `language` for transcription when provided.\n\n- `tts_language?: string`\n Language to use for text-to-speech. Overrides `language` for TTS when provided.\n\n- `voice?: string`\n 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.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural, Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural, Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)\n- **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\": {\"api_key_ref\": \"<secret_id>\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`\n- **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.\n- **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n\n- `voice_settings?: { type: 'elevenlabs'; api_key_ref?: string; } | { type: 'telnyx'; voice_speed?: number; } | { type: 'aws'; } | { type: 'azure'; api_key_ref?: string; deployment_id?: string; effect?: 'eq_car' | 'eq_telecomhp8k'; gender?: 'Male' | 'Female'; region?: string; } | { type: 'rime'; voice_speed?: number; } | { type: 'resemble'; format?: 'wav' | 'mp3'; precision?: 'PCM_16' | 'PCM_24' | 'PCM_32' | 'MULAW'; sample_rate?: '8000' | '16000' | '22050' | '32000' | '44100' | '48000'; } | { type: 'xai'; language?: string; }`\n The settings associated with the voice selected\n\n### Returns\n\n- `{ data?: { conversation_relay_id?: string; result?: string; }; }`\n\n - `data?: { conversation_relay_id?: string; result?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id');\n\nconsole.log(response);\n```",
13424
13422
  perLanguage: {
13425
13423
  typescript: {
13426
13424
  method: 'client.calls.actions.startConversationRelay',
13427
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id', {\n conversation_relay_url: 'wss://example.com/conversation-relay',\n});\n\nconsole.log(response.data);",
13425
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.calls.actions.startConversationRelay('call_control_id');\n\nconsole.log(response.data);",
13428
13426
  },
13429
13427
  python: {
13430
13428
  method: 'calls.actions.start_conversation_relay',
13431
- example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.calls.actions.start_conversation_relay(\n call_control_id="call_control_id",\n conversation_relay_url="wss://example.com/conversation-relay",\n)\nprint(response.data)',
13429
+ example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.calls.actions.start_conversation_relay(\n call_control_id="call_control_id",\n)\nprint(response.data)',
13432
13430
  },
13433
13431
  java: {
13434
13432
  method: 'calls().actions().startConversationRelay',
13435
- example: 'package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartConversationRelayParams params = ActionStartConversationRelayParams.builder()\n .callControlId("call_control_id")\n .conversationRelayUrl("wss://example.com/conversation-relay")\n .build();\n ActionStartConversationRelayResponse response = client.calls().actions().startConversationRelay(params);\n }\n}',
13433
+ example: 'package com.telnyx.sdk.example;\n\nimport com.telnyx.sdk.client.TelnyxClient;\nimport com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayParams;\nimport com.telnyx.sdk.models.calls.actions.ActionStartConversationRelayResponse;\n\npublic final class Main {\n private Main() {}\n\n public static void main(String[] args) {\n TelnyxClient client = TelnyxOkHttpClient.fromEnv();\n\n ActionStartConversationRelayResponse response = client.calls().actions().startConversationRelay("call_control_id");\n }\n}',
13436
13434
  },
13437
13435
  go: {
13438
13436
  method: 'client.Calls.Actions.StartConversationRelay',
13439
- example: 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/team-telnyx/telnyx-go"\n\t"github.com/team-telnyx/telnyx-go/option"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\tresponse, err := client.Calls.Actions.StartConversationRelay(\n\t\tcontext.TODO(),\n\t\t"call_control_id",\n\t\ttelnyx.CallActionStartConversationRelayParams{\n\t\t\tConversationRelayURL: "wss://example.com/conversation-relay",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", response.Data)\n}\n',
13437
+ example: 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/team-telnyx/telnyx-go"\n\t"github.com/team-telnyx/telnyx-go/option"\n)\n\nfunc main() {\n\tclient := telnyx.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\tresponse, err := client.Calls.Actions.StartConversationRelay(\n\t\tcontext.TODO(),\n\t\t"call_control_id",\n\t\ttelnyx.CallActionStartConversationRelayParams{},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", response.Data)\n}\n',
13440
13438
  },
13441
13439
  ruby: {
13442
13440
  method: 'calls.actions.start_conversation_relay',
13443
- example: 'require "telnyx"\n\ntelnyx = Telnyx::Client.new(api_key: "My API Key")\n\nresponse = telnyx.calls.actions.start_conversation_relay(\n "call_control_id",\n conversation_relay_url: "wss://example.com/conversation-relay"\n)\n\nputs(response)',
13441
+ example: 'require "telnyx"\n\ntelnyx = Telnyx::Client.new(api_key: "My API Key")\n\nresponse = telnyx.calls.actions.start_conversation_relay("call_control_id")\n\nputs(response)',
13444
13442
  },
13445
13443
  cli: {
13446
13444
  method: 'actions start_conversation_relay',
13447
- example: "telnyx calls:actions start-conversation-relay \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id \\\n --conversation-relay-url wss://example.com/conversation-relay",
13445
+ example: "telnyx calls:actions start-conversation-relay \\\n --api-key 'My API Key' \\\n --call-control-id call_control_id",
13448
13446
  },
13449
13447
  php: {
13450
13448
  method: 'calls->actions->startConversationRelay',
13451
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->calls->actions->startConversationRelay(\n 'call_control_id',\n conversationRelayURL: 'wss://example.com/conversation-relay',\n assistant: [\n 'dynamicVariables' => ['customer_id' => '12345', 'tier' => 'premium']\n ],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conversationRelayDtmfDetection: true,\n greeting: 'Hi! Ask me anything!',\n interruptionSettings: [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n language: 'en-US',\n languages: [\n [\n 'code' => 'en-US',\n 'speechModel' => 'nova-2',\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'ElevenLabs',\n 'voice' => 'alice',\n ],\n ],\n participants: [\n [\n 'id' => 'v3:abc123def456',\n 'role' => 'user',\n 'name' => 'John Doe',\n 'onHangup' => 'continue_conversation',\n ],\n ],\n sendMessageHistoryUpdates: true,\n transcription: [\n 'language' => 'en-US', 'model' => 'nova-2', 'provider' => 'deepgram'\n ],\n transcriptionLanguage: 'en-US',\n ttsLanguage: 'es',\n userResponseTimeoutMs: 10000,\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n);\n\nvar_dump($response);",
13449
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->calls->actions->startConversationRelay(\n 'call_control_id',\n assistant: ['dynamicVariables' => ['customer_id' => '12345']],\n clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',\n commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',\n conversationRelayDtmfDetection: true,\n conversationRelaySettings: [\n 'url' => 'wss://example.com/conversation-relay',\n 'dtmfDetection' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'any',\n 'languages' => [\n [\n 'code' => 'en-US',\n 'speechModel' => 'nova-2',\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'ElevenLabs',\n 'voice' => 'alice',\n ],\n ],\n ],\n conversationRelayURL: 'wss://example.com/conversation-relay',\n greeting: 'Hi! Ask me anything!',\n interruptionSettings: [\n 'enable' => true,\n 'interruptible' => 'speech',\n 'interruptibleGreeting' => 'speech',\n 'welcomeGreetingInterruptible' => 'speech',\n ],\n language: 'en-US',\n languages: [\n [\n 'code' => 'en-US',\n 'speechModel' => 'nova-2',\n 'transcriptionProvider' => 'Deepgram',\n 'ttsProvider' => 'ElevenLabs',\n 'voice' => 'alice',\n ],\n ],\n transcription: [\n 'language' => 'en-US', 'model' => 'nova-2', 'provider' => 'deepgram'\n ],\n transcriptionLanguage: 'en-US',\n ttsLanguage: 'es',\n voice: 'Telnyx.KokoroTTS.af',\n voiceSettings: [\n 'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'\n ],\n);\n\nvar_dump($response);",
13452
13450
  },
13453
13451
  http: {
13454
- example: 'curl https://api.telnyx.com/v2/calls/$CALL_CONTROL_ID/actions/conversation_relay_start \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "conversation_relay_url": "wss://example.com/conversation-relay",\n "client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",\n "command_id": "891510ac-f3e4-11e8-af5b-de00688a4901",\n "conversation_relay_dtmf_detection": true,\n "greeting": "Hi! Ask me anything!",\n "interruption_settings": {\n "interruptible": "speech"\n },\n "language": "en-US",\n "transcription_language": "en-US",\n "tts_language": "es",\n "user_response_timeout_ms": 10000,\n "voice": "Telnyx.KokoroTTS.af"\n }\'',
13452
+ example: 'curl https://api.telnyx.com/v2/calls/$CALL_CONTROL_ID/actions/conversation_relay_start \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "assistant": {\n "dynamic_variables": {\n "customer_id": "12345"\n }\n },\n "client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",\n "command_id": "891510ac-f3e4-11e8-af5b-de00688a4901",\n "conversation_relay_dtmf_detection": true,\n "conversation_relay_settings": {\n "url": "wss://example.com/conversation-relay",\n "dtmf_detection": true,\n "interruptible": "speech",\n "interruptible_greeting": "any",\n "languages": [\n {\n "code": "en-US",\n "speech_model": "nova-2",\n "transcription_provider": "Deepgram",\n "tts_provider": "ElevenLabs",\n "voice": "alice"\n }\n ]\n },\n "conversation_relay_url": "wss://example.com/conversation-relay",\n "greeting": "Hi! Ask me anything!",\n "language": "en-US",\n "transcription": {\n "provider": "deepgram"\n },\n "transcription_language": "en-US",\n "tts_language": "es",\n "voice": "Telnyx.KokoroTTS.af"\n }\'',
13455
13453
  },
13456
13454
  },
13457
13455
  },
@@ -18362,7 +18360,7 @@ const EMBEDDED_METHODS = [
18362
18360
  endpoint: '/faxes',
18363
18361
  httpMethod: 'post',
18364
18362
  summary: 'Send a fax',
18365
- description: 'Send a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively. \n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `fax.failed`\n',
18363
+ description: 'Send a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively.\n\n**Supported file formats:**\n\n- PDF (`application/pdf`)\n- TIFF (`application/tiff`, `image/tiff`)\n- JPEG (`image/jpeg`)\n- PNG (`image/png`)\n- Microsoft Word `.doc` (`application/msword`)\n- Microsoft Word `.docx` (`application/vnd.openxmlformats-officedocument.wordprocessingml.document`)\n- Rich Text Format `.rtf` (`application/rtf`)\n- Plain text `.txt` (`text/plain`)\n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `fax.failed`',
18366
18364
  stainlessPath: '(resource) faxes > (method) create',
18367
18365
  qualified: 'client.faxes.create',
18368
18366
  params: [
@@ -18383,7 +18381,7 @@ const EMBEDDED_METHODS = [
18383
18381
  'webhook_url?: string;',
18384
18382
  ],
18385
18383
  response: "{ data?: { id?: string; client_state?: string; connection_id?: string; created_at?: string; direction?: 'inbound' | 'outbound'; from?: string; from_display_name?: string; media_name?: string; media_url?: string; preview_url?: string; quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'; record_type?: 'fax'; status?: string; store_media?: boolean; stored_media_url?: string; to?: string; updated_at?: string; webhook_failover_url?: string; webhook_url?: string; }; }",
18386
- markdown: "## create\n\n`client.faxes.create(connection_id: string, from: string, to: string, black_threshold?: number, client_state?: string, from_display_name?: string, media_name?: string, media_url?: string, monochrome?: boolean, preview_format?: 'pdf' | 'tiff', quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark', store_media?: boolean, store_preview?: boolean, t38_enabled?: boolean, webhook_url?: string): { data?: fax; }`\n\n**post** `/faxes`\n\nSend a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively. \n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `fax.failed`\n\n\n### Parameters\n\n- `connection_id: string`\n The connection ID to send the fax with.\n\n- `from: string`\n The phone number, in E.164 format, the fax will be sent from.\n\n- `to: string`\n The phone number, in E.164 format, the fax will be sent to or SIP URI\n\n- `black_threshold?: number`\n The black threshold percentage for monochrome faxes. Only applicable if `monochrome` is set to `true`.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `from_display_name?: string`\n 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.\n\n- `media_name?: string`\n The media_name used for the fax's media. Must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. media_name and media_url/contents can't be submitted together.\n\n- `media_url?: string`\n The URL (or list of URLs) to the PDF used for the fax's media. media_url and media_name/contents can't be submitted together.\n\n- `monochrome?: boolean`\n The flag to enable monochrome, true black and white fax results.\n\n- `preview_format?: 'pdf' | 'tiff'`\n The format for the preview file in case the `store_preview` is `true`.\n\n- `quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'`\n The quality of the fax. The `ultra` settings provides the highest quality available, but also present longer fax processing times. `ultra_light` is best suited for images, wihle `ultra_dark` is best suited for text.\n\n- `store_media?: boolean`\n Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.\n\n- `store_preview?: boolean`\n Should fax preview be stored on temporary URL.\n\n- `t38_enabled?: boolean`\n The flag to disable the T.38 protocol.\n\n- `webhook_url?: string`\n Use this field to override the URL to which Telnyx will send subsequent webhooks for this fax.\n\n### Returns\n\n- `{ data?: { id?: string; client_state?: string; connection_id?: string; created_at?: string; direction?: 'inbound' | 'outbound'; from?: string; from_display_name?: string; media_name?: string; media_url?: string; preview_url?: string; quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'; record_type?: 'fax'; status?: string; store_media?: boolean; stored_media_url?: string; to?: string; updated_at?: string; webhook_failover_url?: string; webhook_url?: string; }; }`\n\n - `data?: { id?: string; client_state?: string; connection_id?: string; created_at?: string; direction?: 'inbound' | 'outbound'; from?: string; from_display_name?: string; media_name?: string; media_url?: string; preview_url?: string; quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'; record_type?: 'fax'; status?: string; store_media?: boolean; stored_media_url?: string; to?: string; updated_at?: string; webhook_failover_url?: string; webhook_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst fax = await client.faxes.create({\n connection_id: '234423',\n from: '+13125790015',\n to: '+13127367276',\n});\n\nconsole.log(fax);\n```",
18384
+ markdown: "## create\n\n`client.faxes.create(connection_id: string, from: string, to: string, black_threshold?: number, client_state?: string, from_display_name?: string, media_name?: string, media_url?: string, monochrome?: boolean, preview_format?: 'pdf' | 'tiff', quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark', store_media?: boolean, store_preview?: boolean, t38_enabled?: boolean, webhook_url?: string): { data?: fax; }`\n\n**post** `/faxes`\n\nSend a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively.\n\n**Supported file formats:**\n\n- PDF (`application/pdf`)\n- TIFF (`application/tiff`, `image/tiff`)\n- JPEG (`image/jpeg`)\n- PNG (`image/png`)\n- Microsoft Word `.doc` (`application/msword`)\n- Microsoft Word `.docx` (`application/vnd.openxmlformats-officedocument.wordprocessingml.document`)\n- Rich Text Format `.rtf` (`application/rtf`)\n- Plain text `.txt` (`text/plain`)\n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `fax.failed`\n\n### Parameters\n\n- `connection_id: string`\n The connection ID to send the fax with.\n\n- `from: string`\n The phone number, in E.164 format, the fax will be sent from.\n\n- `to: string`\n The phone number, in E.164 format, the fax will be sent to or SIP URI\n\n- `black_threshold?: number`\n The black threshold percentage for monochrome faxes. Only applicable if `monochrome` is set to `true`.\n\n- `client_state?: string`\n Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.\n\n- `from_display_name?: string`\n 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.\n\n- `media_name?: string`\n The media_name used for the fax's media. Must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF, and TXT. media_name and media_url/contents can't be submitted together.\n\n- `media_url?: string`\n The URL (or list of URLs) to the fax document. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF, and TXT. media_url and media_name/contents can't be submitted together.\n\n- `monochrome?: boolean`\n The flag to enable monochrome, true black and white fax results.\n\n- `preview_format?: 'pdf' | 'tiff'`\n The format for the preview file in case the `store_preview` is `true`.\n\n- `quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'`\n The quality of the fax. The `ultra` settings provides the highest quality available, but also present longer fax processing times. `ultra_light` is best suited for images, wihle `ultra_dark` is best suited for text.\n\n- `store_media?: boolean`\n Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.\n\n- `store_preview?: boolean`\n Should fax preview be stored on temporary URL.\n\n- `t38_enabled?: boolean`\n The flag to disable the T.38 protocol.\n\n- `webhook_url?: string`\n Use this field to override the URL to which Telnyx will send subsequent webhooks for this fax.\n\n### Returns\n\n- `{ data?: { id?: string; client_state?: string; connection_id?: string; created_at?: string; direction?: 'inbound' | 'outbound'; from?: string; from_display_name?: string; media_name?: string; media_url?: string; preview_url?: string; quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'; record_type?: 'fax'; status?: string; store_media?: boolean; stored_media_url?: string; to?: string; updated_at?: string; webhook_failover_url?: string; webhook_url?: string; }; }`\n\n - `data?: { id?: string; client_state?: string; connection_id?: string; created_at?: string; direction?: 'inbound' | 'outbound'; from?: string; from_display_name?: string; media_name?: string; media_url?: string; preview_url?: string; quality?: 'normal' | 'high' | 'very_high' | 'ultra_light' | 'ultra_dark'; record_type?: 'fax'; status?: string; store_media?: boolean; stored_media_url?: string; to?: string; updated_at?: string; webhook_failover_url?: string; webhook_url?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst fax = await client.faxes.create({\n connection_id: '234423',\n from: '+13125790015',\n to: '+13127367276',\n});\n\nconsole.log(fax);\n```",
18387
18385
  perLanguage: {
18388
18386
  typescript: {
18389
18387
  method: 'client.faxes.create',
@@ -25007,16 +25005,16 @@ const EMBEDDED_METHODS = [
25007
25005
  'page[number]?: number;',
25008
25006
  'page[size]?: number;',
25009
25007
  ],
25010
- response: "{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }",
25011
- markdown: "## list_interfaces\n\n`client.networks.listInterfaces(id: string, filter?: { name?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; }, page[number]?: number, page[size]?: number): object & object`\n\n**get** `/networks/{id}/network_interfaces`\n\nList all Interfaces for a Network.\n\n### Parameters\n\n- `id: string`\n\n- `filter?: { name?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status]\n - `name?: string`\n The interface name to filter on.\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n The interface status to filter on.\n - `type?: string`\n The interface type to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const networkListInterfacesResponse of client.networks.listInterfaces('6a09cdc3-8948-47f0-aa62-74ac943d6c58')) {\n console.log(networkListInterfacesResponse);\n}\n```",
25008
+ response: "{ id?: string; created_at?: string; name?: string; network_id?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; updated_at?: string; }",
25009
+ markdown: "## list_interfaces\n\n`client.networks.listInterfaces(id: string, filter?: { name?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; }, page[number]?: number, page[size]?: number): { id?: string; created_at?: string; name?: string; network_id?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; type?: string; updated_at?: string; }`\n\n**get** `/networks/{id}/network_interfaces`\n\nList all Interfaces for a Network.\n\n### Parameters\n\n- `id: string`\n\n- `filter?: { name?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status]\n - `name?: string`\n The interface name to filter on.\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n The interface status to filter on.\n - `type?: string`\n The interface type to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; name?: string; network_id?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; type?: string; updated_at?: string; }`\n\n - `id?: string`\n - `created_at?: string`\n - `name?: string`\n - `network_id?: string`\n - `record_type?: string`\n - `region?: { code?: string; name?: string; record_type?: string; }`\n - `region_code?: string`\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n - `type?: string`\n - `updated_at?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const networkListInterfacesResponse of client.networks.listInterfaces('6a09cdc3-8948-47f0-aa62-74ac943d6c58')) {\n console.log(networkListInterfacesResponse);\n}\n```",
25012
25010
  perLanguage: {
25013
25011
  typescript: {
25014
25012
  method: 'client.networks.listInterfaces',
25015
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const networkListInterfacesResponse of client.networks.listInterfaces(\n '6a09cdc3-8948-47f0-aa62-74ac943d6c58',\n)) {\n console.log(networkListInterfacesResponse);\n}",
25013
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const networkListInterfacesResponse of client.networks.listInterfaces(\n '6a09cdc3-8948-47f0-aa62-74ac943d6c58',\n)) {\n console.log(networkListInterfacesResponse.id);\n}",
25016
25014
  },
25017
25015
  python: {
25018
25016
  method: 'networks.list_interfaces',
25019
- example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.networks.list_interfaces(\n id="6a09cdc3-8948-47f0-aa62-74ac943d6c58",\n)\npage = page.data[0]\nprint(page)',
25017
+ example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.networks.list_interfaces(\n id="6a09cdc3-8948-47f0-aa62-74ac943d6c58",\n)\npage = page.data[0]\nprint(page.id)',
25020
25018
  },
25021
25019
  java: {
25022
25020
  method: 'networks().listInterfaces',
@@ -32085,16 +32083,16 @@ const EMBEDDED_METHODS = [
32085
32083
  stainlessPath: '(resource) public_internet_gateways > (method) list',
32086
32084
  qualified: 'client.publicInternetGateways.list',
32087
32085
  params: ['filter?: { network_id?: string; };', 'page[number]?: number;', 'page[size]?: number;'],
32088
- response: "{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }",
32089
- markdown: "## list\n\n`client.publicInternetGateways.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): object & object`\n\n**get** `/public_internet_gateways`\n\nList all Public Internet Gateways.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const publicInternetGatewayListResponse of client.publicInternetGateways.list()) {\n console.log(publicInternetGatewayListResponse);\n}\n```",
32086
+ response: "{ id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }",
32087
+ markdown: "## list\n\n`client.publicInternetGateways.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }`\n\n**get** `/public_internet_gateways`\n\nList all Public Internet Gateways.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n - `id?: string`\n - `created_at?: string`\n - `name?: string`\n - `network_id?: string`\n - `public_ip?: string`\n - `record_type?: string`\n - `region_code?: string`\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n - `updated_at?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const publicInternetGatewayRead of client.publicInternetGateways.list()) {\n console.log(publicInternetGatewayRead);\n}\n```",
32090
32088
  perLanguage: {
32091
32089
  typescript: {
32092
32090
  method: 'client.publicInternetGateways.list',
32093
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const publicInternetGatewayListResponse of client.publicInternetGateways.list()) {\n console.log(publicInternetGatewayListResponse);\n}",
32091
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const publicInternetGatewayRead of client.publicInternetGateways.list()) {\n console.log(publicInternetGatewayRead.id);\n}",
32094
32092
  },
32095
32093
  python: {
32096
32094
  method: 'public_internet_gateways.list',
32097
- example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.public_internet_gateways.list()\npage = page.data[0]\nprint(page)',
32095
+ example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.public_internet_gateways.list()\npage = page.data[0]\nprint(page.id)',
32098
32096
  },
32099
32097
  java: {
32100
32098
  method: 'publicInternetGateways().list',
@@ -32130,8 +32128,8 @@ const EMBEDDED_METHODS = [
32130
32128
  stainlessPath: '(resource) public_internet_gateways > (method) create',
32131
32129
  qualified: 'client.publicInternetGateways.create',
32132
32130
  params: ['name?: string;', 'network_id?: string;', 'region_code?: string;'],
32133
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
32134
- markdown: "## create\n\n`client.publicInternetGateways.create(name?: string, network_id?: string, region_code?: string): { data?: record & network_interface; }`\n\n**post** `/public_internet_gateways`\n\nCreate a new Public Internet Gateway.\n\n### Parameters\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n- `region_code?: string`\n The region interface is deployed to.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.create();\n\nconsole.log(publicInternetGateway);\n```",
32131
+ response: '{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }',
32132
+ markdown: "## create\n\n`client.publicInternetGateways.create(name?: string, network_id?: string, region_code?: string): { data?: public_internet_gateway_read; }`\n\n**post** `/public_internet_gateways`\n\nCreate a new Public Internet Gateway.\n\n### Parameters\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n- `region_code?: string`\n The region interface is deployed to.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.create();\n\nconsole.log(publicInternetGateway);\n```",
32135
32133
  perLanguage: {
32136
32134
  typescript: {
32137
32135
  method: 'client.publicInternetGateways.create',
@@ -32175,8 +32173,8 @@ const EMBEDDED_METHODS = [
32175
32173
  stainlessPath: '(resource) public_internet_gateways > (method) delete',
32176
32174
  qualified: 'client.publicInternetGateways.delete',
32177
32175
  params: ['id: string;'],
32178
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
32179
- markdown: "## delete\n\n`client.publicInternetGateways.delete(id: string): { data?: record & network_interface; }`\n\n**delete** `/public_internet_gateways/{id}`\n\nDelete a Public Internet Gateway.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(publicInternetGateway);\n```",
32176
+ response: '{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }',
32177
+ markdown: "## delete\n\n`client.publicInternetGateways.delete(id: string): { data?: public_internet_gateway_read; }`\n\n**delete** `/public_internet_gateways/{id}`\n\nDelete a Public Internet Gateway.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(publicInternetGateway);\n```",
32180
32178
  perLanguage: {
32181
32179
  typescript: {
32182
32180
  method: 'client.publicInternetGateways.delete',
@@ -32220,8 +32218,8 @@ const EMBEDDED_METHODS = [
32220
32218
  stainlessPath: '(resource) public_internet_gateways > (method) retrieve',
32221
32219
  qualified: 'client.publicInternetGateways.retrieve',
32222
32220
  params: ['id: string;'],
32223
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
32224
- markdown: "## retrieve\n\n`client.publicInternetGateways.retrieve(id: string): { data?: record & network_interface; }`\n\n**get** `/public_internet_gateways/{id}`\n\nRetrieve a Public Internet Gateway.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(publicInternetGateway);\n```",
32221
+ response: '{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }',
32222
+ markdown: "## retrieve\n\n`client.publicInternetGateways.retrieve(id: string): { data?: public_internet_gateway_read; }`\n\n**get** `/public_internet_gateways/{id}`\n\nRetrieve a Public Internet Gateway.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; name?: string; network_id?: string; public_ip?: string; record_type?: string; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst publicInternetGateway = await client.publicInternetGateways.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(publicInternetGateway);\n```",
32225
32223
  perLanguage: {
32226
32224
  typescript: {
32227
32225
  method: 'client.publicInternetGateways.retrieve',
@@ -38684,8 +38682,9 @@ const EMBEDDED_METHODS = [
38684
38682
  "ConversationCallbackMethod?: 'GET' | 'POST';",
38685
38683
  'ConversationCallbacks?: string[];',
38686
38684
  'CustomHeaders?: { name: string; value: string; }[];',
38687
- "DetectionMode?: 'Premium' | 'Regular';",
38685
+ "DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening';",
38688
38686
  "MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd';",
38687
+ 'MachineDetectionPromptEndTimeout?: number;',
38689
38688
  'MachineDetectionSilenceTimeout?: number;',
38690
38689
  'MachineDetectionSpeechEndThreshold?: number;',
38691
38690
  'MachineDetectionSpeechThreshold?: number;',
@@ -38712,7 +38711,7 @@ const EMBEDDED_METHODS = [
38712
38711
  "Trim?: 'trim-silence' | 'do-not-trim';",
38713
38712
  ],
38714
38713
  response: '{ call_sid?: string; from?: string; status?: string; to?: string; }',
38715
- markdown: "## initiate_ai_call\n\n`client.texml.initiateAICall(connection_id: string, AIAssistantId: string, From: string, To: string, AIAssistantDynamicVariables?: object, AIAssistantVersion?: string, AsyncAmd?: boolean, AsyncAmdStatusCallback?: string, AsyncAmdStatusCallbackMethod?: 'GET' | 'POST', CallerId?: string, ConversationCallback?: string, ConversationCallbackMethod?: 'GET' | 'POST', ConversationCallbacks?: string[], CustomHeaders?: { name: string; value: string; }[], DetectionMode?: 'Premium' | 'Regular', MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd', MachineDetectionSilenceTimeout?: number, MachineDetectionSpeechEndThreshold?: number, MachineDetectionSpeechThreshold?: number, MachineDetectionTimeout?: number, Passports?: string, PreferredCodecs?: string, Record?: boolean, RecordingChannels?: 'mono' | 'dual', RecordingStatusCallback?: string, RecordingStatusCallbackEvent?: string, RecordingStatusCallbackMethod?: 'GET' | 'POST', RecordingTimeout?: number, RecordingTrack?: 'inbound' | 'outbound' | 'both', SendRecordingUrl?: boolean, SipAuthPassword?: string, SipAuthUsername?: string, SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East', StatusCallback?: string, StatusCallbackEvent?: string, StatusCallbackMethod?: 'GET' | 'POST', StatusCallbacks?: string[], TimeLimit?: number, Timeout?: number, Trim?: 'trim-silence' | 'do-not-trim'): { call_sid?: string; from?: string; status?: string; to?: string; }`\n\n**post** `/texml/ai_calls/{connection_id}`\n\nInitiate an outbound AI call with warm-up support. Validates parameters, builds an internal TeXML with an AI Assistant configuration, encodes instructions into client state, and calls the dial API. The Twiml, Texml, and Url parameters are not allowed and will result in a 422 error.\n\n**Expected callback events:**\n\nStatus callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`, or `failed`), then `analyzed` after post-call processing completes.\n\nConversation callbacks: `conversation_created` and `conversation_ended`.\n\nRecording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled.\n\n\n### Parameters\n\n- `connection_id: string`\n\n- `AIAssistantId: string`\n The ID of the AI assistant to use for the call.\n\n- `From: string`\n The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country code.\n\n- `To: string`\n The phone number of the called party. Phone numbers are formatted with a `+` and country code.\n\n- `AIAssistantDynamicVariables?: object`\n Key-value map of dynamic variables to pass to the AI assistant.\n\n- `AIAssistantVersion?: string`\n The version of the AI assistant to use.\n\n- `AsyncAmd?: boolean`\n Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed.\n\n- `AsyncAmdStatusCallback?: string`\n URL destination for Telnyx to send AMD callback events to for the call.\n\n- `AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `AsyncAmdStatusCallback`.\n\n- `CallerId?: string`\n 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 omitted, the display name will be the same as the number in the `From` field.\n\n- `ConversationCallback?: string`\n URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.\n\n- `ConversationCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `ConversationCallback` and `ConversationCallbacks`.\n\n- `ConversationCallbacks?: string[]`\n Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.\n\n- `CustomHeaders?: { name: string; value: string; }[]`\n Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties.\n\n- `DetectionMode?: 'Premium' | 'Regular'`\n Allows you to choose between Premium and Standard detections.\n\n- `MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'`\n Enables Answering Machine Detection.\n\n- `MachineDetectionSilenceTimeout?: number`\n If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used.\n\n- `MachineDetectionSpeechEndThreshold?: number`\n Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used.\n\n- `MachineDetectionSpeechThreshold?: number`\n Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used.\n\n- `MachineDetectionTimeout?: number`\n Maximum timeout threshold in milliseconds for overall detection.\n\n- `Passports?: string`\n A string of passport identifiers to associate with the call.\n\n- `PreferredCodecs?: string`\n The list of comma-separated codecs to be offered on a call.\n\n- `Record?: boolean`\n Whether to record the entire participant's call leg. Defaults to `false`.\n\n- `RecordingChannels?: 'mono' | 'dual'`\n The number of channels in the final recording. Defaults to `mono`.\n\n- `RecordingStatusCallback?: string`\n The URL the recording callbacks will be sent to.\n\n- `RecordingStatusCallbackEvent?: string`\n The changes to the recording's state that should generate a call to `RecordingStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.\n\n- `RecordingStatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.\n\n- `RecordingTimeout?: number`\n 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. The minimum value is 0. The default value is 0 (infinite).\n\n- `RecordingTrack?: 'inbound' | 'outbound' | 'both'`\n The audio track to record for the call. The default is `both`.\n\n- `SendRecordingUrl?: boolean`\n Whether to send RecordingUrl in webhooks.\n\n- `SipAuthPassword?: string`\n The password to use for SIP authentication.\n\n- `SipAuthUsername?: string`\n The username to use for SIP authentication.\n\n- `SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'`\n Defines the SIP region to be used for the call.\n\n- `StatusCallback?: string`\n URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call value overrides the status callback URL configured on the TeXML application/connection.\n\n- `StatusCallbackEvent?: string`\n The status callback events for which Telnyx should send a webhook for this AI call. Multiple events can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy, canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured on the TeXML application/connection.\n\n- `StatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided, this per-call value overrides the status callback method configured on the TeXML application/connection.\n\n- `StatusCallbacks?: string[]`\n Array of URL destinations for Telnyx to send status callback events for this AI call. When provided, these per-call values override the status callback URL configured on the TeXML application/connection.\n\n- `TimeLimit?: number`\n The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds.\n\n- `Timeout?: number`\n The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds.\n\n- `Trim?: 'trim-silence' | 'do-not-trim'`\n Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.\n\n### Returns\n\n- `{ call_sid?: string; from?: string; status?: string; to?: string; }`\n\n - `call_sid?: string`\n - `from?: string`\n - `status?: string`\n - `to?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.texml.initiateAICall('connection_id', {\n AIAssistantId: 'ai-assistant-id-123',\n From: '+13120001234',\n To: '+13121230000',\n});\n\nconsole.log(response);\n```",
38714
+ markdown: "## initiate_ai_call\n\n`client.texml.initiateAICall(connection_id: string, AIAssistantId: string, From: string, To: string, AIAssistantDynamicVariables?: object, AIAssistantVersion?: string, AsyncAmd?: boolean, AsyncAmdStatusCallback?: string, AsyncAmdStatusCallbackMethod?: 'GET' | 'POST', CallerId?: string, ConversationCallback?: string, ConversationCallbackMethod?: 'GET' | 'POST', ConversationCallbacks?: string[], CustomHeaders?: { name: string; value: string; }[], DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening', MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd', MachineDetectionPromptEndTimeout?: number, MachineDetectionSilenceTimeout?: number, MachineDetectionSpeechEndThreshold?: number, MachineDetectionSpeechThreshold?: number, MachineDetectionTimeout?: number, Passports?: string, PreferredCodecs?: string, Record?: boolean, RecordingChannels?: 'mono' | 'dual', RecordingStatusCallback?: string, RecordingStatusCallbackEvent?: string, RecordingStatusCallbackMethod?: 'GET' | 'POST', RecordingTimeout?: number, RecordingTrack?: 'inbound' | 'outbound' | 'both', SendRecordingUrl?: boolean, SipAuthPassword?: string, SipAuthUsername?: string, SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East', StatusCallback?: string, StatusCallbackEvent?: string, StatusCallbackMethod?: 'GET' | 'POST', StatusCallbacks?: string[], TimeLimit?: number, Timeout?: number, Trim?: 'trim-silence' | 'do-not-trim'): { call_sid?: string; from?: string; status?: string; to?: string; }`\n\n**post** `/texml/ai_calls/{connection_id}`\n\nInitiate an outbound AI call with warm-up support. Validates parameters, builds an internal TeXML with an AI Assistant configuration, encodes instructions into client state, and calls the dial API. The Twiml, Texml, and Url parameters are not allowed and will result in a 422 error.\n\n**Expected callback events:**\n\nStatus callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`, or `failed`), then `analyzed` after post-call processing completes.\n\nConversation callbacks: `conversation_created` and `conversation_ended`.\n\nRecording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled.\n\n\n### Parameters\n\n- `connection_id: string`\n\n- `AIAssistantId: string`\n The ID of the AI assistant to use for the call.\n\n- `From: string`\n The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country code.\n\n- `To: string`\n The phone number of the called party. Phone numbers are formatted with a `+` and country code.\n\n- `AIAssistantDynamicVariables?: object`\n Key-value map of dynamic variables to pass to the AI assistant.\n\n- `AIAssistantVersion?: string`\n The version of the AI assistant to use.\n\n- `AsyncAmd?: boolean`\n Select whether to perform answering machine detection in the background. By default execution is blocked until Answering Machine Detection is completed.\n\n- `AsyncAmdStatusCallback?: string`\n URL destination for Telnyx to send AMD callback events to for the call.\n\n- `AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `AsyncAmdStatusCallback`.\n\n- `CallerId?: string`\n 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 omitted, the display name will be the same as the number in the `From` field.\n\n- `ConversationCallback?: string`\n URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.\n\n- `ConversationCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `ConversationCallback` and `ConversationCallbacks`.\n\n- `ConversationCallbacks?: string[]`\n Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created` and `conversation_ended`.\n\n- `CustomHeaders?: { name: string; value: string; }[]`\n Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value' properties.\n\n- `DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'`\n Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection\n\n- `MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'`\n Enables Answering Machine Detection.\n\n- `MachineDetectionPromptEndTimeout?: number`\n Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds. Used when `DetectionMode` is `PremiumCallScreening`.\n\n- `MachineDetectionSilenceTimeout?: number`\n If initial silence duration is greater than this value, consider it a machine. Ignored when `premium` detection is used.\n\n- `MachineDetectionSpeechEndThreshold?: number`\n Silence duration threshold after a greeting message or voice for it be considered human. Ignored when `premium` detection is used.\n\n- `MachineDetectionSpeechThreshold?: number`\n Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored when `premium` detection is used.\n\n- `MachineDetectionTimeout?: number`\n Maximum timeout threshold in milliseconds for overall detection.\n\n- `Passports?: string`\n A string of passport identifiers to associate with the call.\n\n- `PreferredCodecs?: string`\n The list of comma-separated codecs to be offered on a call.\n\n- `Record?: boolean`\n Whether to record the entire participant's call leg. Defaults to `false`.\n\n- `RecordingChannels?: 'mono' | 'dual'`\n The number of channels in the final recording. Defaults to `mono`.\n\n- `RecordingStatusCallback?: string`\n The URL the recording callbacks will be sent to.\n\n- `RecordingStatusCallbackEvent?: string`\n The changes to the recording's state that should generate a call to `RecordingStatusCallback`. Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.\n\n- `RecordingStatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.\n\n- `RecordingTimeout?: number`\n 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. The minimum value is 0. The default value is 0 (infinite).\n\n- `RecordingTrack?: 'inbound' | 'outbound' | 'both'`\n The audio track to record for the call. The default is `both`.\n\n- `SendRecordingUrl?: boolean`\n Whether to send RecordingUrl in webhooks.\n\n- `SipAuthPassword?: string`\n The password to use for SIP authentication.\n\n- `SipAuthUsername?: string`\n The username to use for SIP authentication.\n\n- `SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'`\n Defines the SIP region to be used for the call.\n\n- `StatusCallback?: string`\n URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call value overrides the status callback URL configured on the TeXML application/connection.\n\n- `StatusCallbackEvent?: string`\n The status callback events for which Telnyx should send a webhook for this AI call. Multiple events can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy, canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured on the TeXML application/connection.\n\n- `StatusCallbackMethod?: 'GET' | 'POST'`\n HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided, this per-call value overrides the status callback method configured on the TeXML application/connection.\n\n- `StatusCallbacks?: string[]`\n Array of URL destinations for Telnyx to send status callback events for this AI call. When provided, these per-call values override the status callback URL configured on the TeXML application/connection.\n\n- `TimeLimit?: number`\n The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400 (4 hours). Default is 14400 seconds.\n\n- `Timeout?: number`\n The number of seconds to wait for the called party to answer the call before the call is canceled. The minimum value is 5 and the maximum value is 120. Default is 30 seconds.\n\n- `Trim?: 'trim-silence' | 'do-not-trim'`\n Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.\n\n### Returns\n\n- `{ call_sid?: string; from?: string; status?: string; to?: string; }`\n\n - `call_sid?: string`\n - `from?: string`\n - `status?: string`\n - `to?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.texml.initiateAICall('connection_id', {\n AIAssistantId: 'ai-assistant-id-123',\n From: '+13120001234',\n To: '+13121230000',\n});\n\nconsole.log(response);\n```",
38716
38715
  perLanguage: {
38717
38716
  typescript: {
38718
38717
  method: 'client.texml.initiateAICall',
@@ -38740,10 +38739,10 @@ const EMBEDDED_METHODS = [
38740
38739
  },
38741
38740
  php: {
38742
38741
  method: 'texml->initiateAICall',
38743
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->texml->initiateAICall(\n 'connection_id',\n aiAssistantID: 'ai-assistant-id-123',\n from: '+13120001234',\n to: '+13121230000',\n aiAssistantDynamicVariables: [\n 'customer_name' => 'John Doe', 'account_id' => '12345'\n ],\n aiAssistantVersion: 'AIAssistantVersion',\n asyncAmd: true,\n asyncAmdStatusCallback: 'https://www.example.com/callback',\n asyncAmdStatusCallbackMethod: 'GET',\n callerID: 'Info',\n conversationCallback: 'https://www.example.com/conversation-callback',\n conversationCallbackMethod: 'GET',\n conversationCallbacks: [\n 'https://www.example.com/conversation-callback1',\n 'https://www.example.com/conversation-callback2',\n ],\n customHeaders: [['name' => 'X-Custom-Header', 'value' => 'custom-value']],\n detectionMode: 'Premium',\n machineDetection: 'Enable',\n machineDetectionSilenceTimeout: 2000,\n machineDetectionSpeechEndThreshold: 2000,\n machineDetectionSpeechThreshold: 2000,\n machineDetectionTimeout: 5000,\n passports: 'Passports',\n preferredCodecs: 'PCMA,PCMU',\n record: false,\n recordingChannels: 'dual',\n recordingStatusCallback: 'https://example.com/recording_status_callback',\n recordingStatusCallbackEvent: 'in-progress completed absent',\n recordingStatusCallbackMethod: 'GET',\n recordingTimeout: 5,\n recordingTrack: 'inbound',\n sendRecordingURL: false,\n sipAuthPassword: '1234',\n sipAuthUsername: 'user',\n sipRegion: 'Canada',\n statusCallback: 'https://www.example.com/callback',\n statusCallbackEvent: 'initiated answered',\n statusCallbackMethod: 'GET',\n statusCallbacks: [\n 'https://www.example.com/callback1', 'https://www.example.com/callback2'\n ],\n timeLimit: 3600,\n timeoutSeconds: 60,\n trim: 'trim-silence',\n);\n\nvar_dump($response);",
38742
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->texml->initiateAICall(\n 'connection_id',\n aiAssistantID: 'ai-assistant-id-123',\n from: '+13120001234',\n to: '+13121230000',\n aiAssistantDynamicVariables: [\n 'customer_name' => 'John Doe', 'account_id' => '12345'\n ],\n aiAssistantVersion: 'AIAssistantVersion',\n asyncAmd: true,\n asyncAmdStatusCallback: 'https://www.example.com/callback',\n asyncAmdStatusCallbackMethod: 'GET',\n callerID: 'Info',\n conversationCallback: 'https://www.example.com/conversation-callback',\n conversationCallbackMethod: 'GET',\n conversationCallbacks: [\n 'https://www.example.com/conversation-callback1',\n 'https://www.example.com/conversation-callback2',\n ],\n customHeaders: [['name' => 'X-Custom-Header', 'value' => 'custom-value']],\n detectionMode: 'Premium',\n machineDetection: 'Enable',\n machineDetectionPromptEndTimeout: 5000,\n machineDetectionSilenceTimeout: 2000,\n machineDetectionSpeechEndThreshold: 2000,\n machineDetectionSpeechThreshold: 2000,\n machineDetectionTimeout: 5000,\n passports: 'Passports',\n preferredCodecs: 'PCMA,PCMU',\n record: false,\n recordingChannels: 'dual',\n recordingStatusCallback: 'https://example.com/recording_status_callback',\n recordingStatusCallbackEvent: 'in-progress completed absent',\n recordingStatusCallbackMethod: 'GET',\n recordingTimeout: 5,\n recordingTrack: 'inbound',\n sendRecordingURL: false,\n sipAuthPassword: '1234',\n sipAuthUsername: 'user',\n sipRegion: 'Canada',\n statusCallback: 'https://www.example.com/callback',\n statusCallbackEvent: 'initiated answered',\n statusCallbackMethod: 'GET',\n statusCallbacks: [\n 'https://www.example.com/callback1', 'https://www.example.com/callback2'\n ],\n timeLimit: 3600,\n timeoutSeconds: 60,\n trim: 'trim-silence',\n);\n\nvar_dump($response);",
38744
38743
  },
38745
38744
  http: {
38746
- example: 'curl https://api.telnyx.com/v2/texml/ai_calls/$CONNECTION_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "AIAssistantId": "ai-assistant-id-123",\n "From": "+13120001234",\n "To": "+13121230000",\n "AIAssistantDynamicVariables": {\n "customer_name": "John Doe",\n "account_id": "12345"\n },\n "AsyncAmd": true,\n "AsyncAmdStatusCallback": "https://www.example.com/callback",\n "AsyncAmdStatusCallbackMethod": "GET",\n "CallerId": "Info",\n "ConversationCallback": "https://www.example.com/conversation-callback",\n "ConversationCallbackMethod": "GET",\n "ConversationCallbacks": [\n "https://www.example.com/conversation-callback1",\n "https://www.example.com/conversation-callback2"\n ],\n "CustomHeaders": [\n {\n "name": "X-Custom-Header",\n "value": "custom-value"\n }\n ],\n "DetectionMode": "Premium",\n "MachineDetection": "Enable",\n "MachineDetectionSilenceTimeout": 2000,\n "MachineDetectionSpeechEndThreshold": 2000,\n "MachineDetectionSpeechThreshold": 2000,\n "MachineDetectionTimeout": 5000,\n "PreferredCodecs": "PCMA,PCMU",\n "Record": false,\n "RecordingChannels": "dual",\n "RecordingStatusCallback": "https://example.com/recording_status_callback",\n "RecordingStatusCallbackEvent": "in-progress completed absent",\n "RecordingStatusCallbackMethod": "GET",\n "RecordingTimeout": 5,\n "RecordingTrack": "inbound",\n "SendRecordingUrl": false,\n "SipAuthPassword": "1234",\n "SipAuthUsername": "user",\n "SipRegion": "Canada",\n "StatusCallback": "https://www.example.com/callback",\n "StatusCallbackEvent": "initiated answered",\n "StatusCallbackMethod": "GET",\n "StatusCallbacks": [\n "https://www.example.com/callback1",\n "https://www.example.com/callback2"\n ],\n "TimeLimit": 3600,\n "Timeout": 60,\n "Trim": "trim-silence"\n }\'',
38745
+ example: 'curl https://api.telnyx.com/v2/texml/ai_calls/$CONNECTION_ID \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "AIAssistantId": "ai-assistant-id-123",\n "From": "+13120001234",\n "To": "+13121230000",\n "AIAssistantDynamicVariables": {\n "customer_name": "John Doe",\n "account_id": "12345"\n },\n "AsyncAmd": true,\n "AsyncAmdStatusCallback": "https://www.example.com/callback",\n "AsyncAmdStatusCallbackMethod": "GET",\n "CallerId": "Info",\n "ConversationCallback": "https://www.example.com/conversation-callback",\n "ConversationCallbackMethod": "GET",\n "ConversationCallbacks": [\n "https://www.example.com/conversation-callback1",\n "https://www.example.com/conversation-callback2"\n ],\n "CustomHeaders": [\n {\n "name": "X-Custom-Header",\n "value": "custom-value"\n }\n ],\n "DetectionMode": "Premium",\n "MachineDetection": "Enable",\n "MachineDetectionPromptEndTimeout": 5000,\n "MachineDetectionSilenceTimeout": 2000,\n "MachineDetectionSpeechEndThreshold": 2000,\n "MachineDetectionSpeechThreshold": 2000,\n "MachineDetectionTimeout": 5000,\n "PreferredCodecs": "PCMA,PCMU",\n "Record": false,\n "RecordingChannels": "dual",\n "RecordingStatusCallback": "https://example.com/recording_status_callback",\n "RecordingStatusCallbackEvent": "in-progress completed absent",\n "RecordingStatusCallbackMethod": "GET",\n "RecordingTimeout": 5,\n "RecordingTrack": "inbound",\n "SendRecordingUrl": false,\n "SipAuthPassword": "1234",\n "SipAuthUsername": "user",\n "SipRegion": "Canada",\n "StatusCallback": "https://www.example.com/callback",\n "StatusCallbackEvent": "initiated answered",\n "StatusCallbackMethod": "GET",\n "StatusCallbacks": [\n "https://www.example.com/callback1",\n "https://www.example.com/callback2"\n ],\n "TimeLimit": 3600,\n "Timeout": 60,\n "Trim": "trim-silence"\n }\'',
38747
38746
  },
38748
38747
  },
38749
38748
  },
@@ -38906,10 +38905,10 @@ const EMBEDDED_METHODS = [
38906
38905
  qualified: 'client.texml.accounts.calls.calls',
38907
38906
  params: [
38908
38907
  'account_sid: string;',
38909
- "params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; };",
38908
+ "params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; };",
38910
38909
  ],
38911
38910
  response: '{ from?: string; status?: string; to?: string; }',
38912
- markdown: "## calls\n\n`client.texml.accounts.calls.calls(account_sid: string, params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; }): { from?: string; status?: string; to?: string; }`\n\n**post** `/texml/Accounts/{account_sid}/Calls`\n\nInitiate an outbound TeXML call. Telnyx will request TeXML from the XML Request URL configured for the connection in the Mission Control Portal.\n\n### Parameters\n\n- `account_sid: string`\n\n- `params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; }`\n\n### Returns\n\n- `{ from?: string; status?: string; to?: string; }`\n\n - `from?: string`\n - `status?: string`\n - `to?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.texml.accounts.calls.calls('account_sid', { params: { Url: 'https://www.example.com/texml.xml' } });\n\nconsole.log(response);\n```",
38911
+ markdown: "## calls\n\n`client.texml.accounts.calls.calls(account_sid: string, params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; }): { from?: string; status?: string; to?: string; }`\n\n**post** `/texml/Accounts/{account_sid}/Calls`\n\nInitiate an outbound TeXML call. Telnyx will request TeXML from the XML Request URL configured for the connection in the Mission Control Portal.\n\n### Parameters\n\n- `account_sid: string`\n\n- `params: { Url: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; UrlMethod?: 'GET' | 'POST'; } | { Texml: string; ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; } | { ApplicationSid?: string; AsyncAmd?: boolean; AsyncAmdStatusCallback?: string; AsyncAmdStatusCallbackMethod?: 'GET' | 'POST'; CallerId?: string; CancelPlaybackOnDetectMessageEnd?: boolean; CancelPlaybackOnMachineDetection?: boolean; CustomHeaders?: { name: string; value: string; }[]; DeepfakeDetection?: 'Enable'; DeepfakeDetectionCallbackMethod?: 'GET' | 'POST'; DeepfakeDetectionCallbackUrl?: string; DetectionMode?: 'Premium' | 'Regular' | 'PremiumCallScreening'; FallbackUrl?: string; From?: string; MachineDetection?: 'Enable' | 'Disable' | 'DetectMessageEnd'; MachineDetectionPromptEndTimeout?: number; MachineDetectionSilenceTimeout?: number; MachineDetectionSpeechEndThreshold?: number; MachineDetectionSpeechThreshold?: number; MachineDetectionTimeout?: number; MediaEncryption?: 'disabled' | 'SRTP' | 'DTLS'; PreferredCodecs?: string; Record?: boolean; RecordingChannels?: 'mono' | 'dual'; RecordingStatusCallback?: string; RecordingStatusCallbackEvent?: string; RecordingStatusCallbackMethod?: 'GET' | 'POST'; RecordingTimeout?: number; RecordingTrack?: 'inbound' | 'outbound' | 'both'; SendRecordingUrl?: boolean; SipAuthPassword?: string; SipAuthUsername?: string; SipRegion?: 'US' | 'Europe' | 'Canada' | 'Australia' | 'Middle East'; StatusCallback?: string; StatusCallbackEvent?: 'initiated' | 'ringing' | 'answered' | 'completed'; StatusCallbackMethod?: 'GET' | 'POST'; SuperviseCallSid?: string; SupervisingRole?: 'barge' | 'whisper' | 'monitor'; Texml?: string; TimeLimit?: number; Timeout?: number; To?: string; Trim?: 'trim-silence' | 'do-not-trim'; Url?: string; UrlMethod?: 'GET' | 'POST'; }`\n\n### Returns\n\n- `{ from?: string; status?: string; to?: string; }`\n\n - `from?: string`\n - `status?: string`\n - `to?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst response = await client.texml.accounts.calls.calls('account_sid', { params: { Url: 'https://www.example.com/texml.xml' } });\n\nconsole.log(response);\n```",
38913
38912
  perLanguage: {
38914
38913
  typescript: {
38915
38914
  method: 'client.texml.accounts.calls.calls',
@@ -38937,10 +38936,10 @@ const EMBEDDED_METHODS = [
38937
38936
  },
38938
38937
  php: {
38939
38938
  method: 'texml->accounts->calls->calls',
38940
- example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->texml->accounts->calls->calls(\n 'account_sid',\n params: [\n 'url' => 'https://www.example.com/texml.xml',\n 'applicationSid' => 'example-app-sid',\n 'asyncAmd' => true,\n 'asyncAmdStatusCallback' => 'https://www.example.com/callback',\n 'asyncAmdStatusCallbackMethod' => 'GET',\n 'callerID' => 'Info',\n 'cancelPlaybackOnDetectMessageEnd' => false,\n 'cancelPlaybackOnMachineDetection' => false,\n 'customHeaders' => [\n ['name' => 'X-Custom-Header', 'value' => 'custom-value']\n ],\n 'deepfakeDetection' => 'Enable',\n 'deepfakeDetectionCallbackMethod' => 'GET',\n 'deepfakeDetectionCallbackURL' => 'https://www.example.com/deepfake-callback',\n 'detectionMode' => 'Premium',\n 'fallbackURL' => 'https://www.example.com/instructions-fallback.xml',\n 'from' => '+13120001234',\n 'machineDetection' => 'Enable',\n 'machineDetectionSilenceTimeout' => 2000,\n 'machineDetectionSpeechEndThreshold' => 2000,\n 'machineDetectionSpeechThreshold' => 2000,\n 'machineDetectionTimeout' => 5000,\n 'mediaEncryption' => 'disabled',\n 'preferredCodecs' => 'PCMA,PCMU',\n 'record' => false,\n 'recordingChannels' => 'dual',\n 'recordingStatusCallback' => 'https://example.com/recording_status_callback',\n 'recordingStatusCallbackEvent' => 'in-progress completed absent',\n 'recordingStatusCallbackMethod' => 'GET',\n 'recordingTimeout' => 5,\n 'recordingTrack' => 'inbound',\n 'sendRecordingURL' => false,\n 'sipAuthPassword' => '1234',\n 'sipAuthUsername' => 'user',\n 'sipRegion' => 'Canada',\n 'statusCallback' => 'https://www.example.com/statuscallback-listener',\n 'statusCallbackEvent' => 'initiated',\n 'statusCallbackMethod' => 'GET',\n 'superviseCallSid' => 'v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg',\n 'supervisingRole' => 'monitor',\n 'texml' => 'Texml',\n 'timeLimit' => 3600,\n 'timeout' => 60,\n 'to' => '+13121230000',\n 'trim' => 'trim-silence',\n 'urlMethod' => 'GET',\n ],\n);\n\nvar_dump($response);",
38939
+ example: "<?php\n\nrequire_once dirname(__DIR__) . '/vendor/autoload.php';\n\n$client = new Client(apiKey: 'My API Key');\n\n$response = $client->texml->accounts->calls->calls(\n 'account_sid',\n params: [\n 'url' => 'https://www.example.com/texml.xml',\n 'applicationSid' => 'example-app-sid',\n 'asyncAmd' => true,\n 'asyncAmdStatusCallback' => 'https://www.example.com/callback',\n 'asyncAmdStatusCallbackMethod' => 'GET',\n 'callerID' => 'Info',\n 'cancelPlaybackOnDetectMessageEnd' => false,\n 'cancelPlaybackOnMachineDetection' => false,\n 'customHeaders' => [\n ['name' => 'X-Custom-Header', 'value' => 'custom-value']\n ],\n 'deepfakeDetection' => 'Enable',\n 'deepfakeDetectionCallbackMethod' => 'GET',\n 'deepfakeDetectionCallbackURL' => 'https://www.example.com/deepfake-callback',\n 'detectionMode' => 'Premium',\n 'fallbackURL' => 'https://www.example.com/instructions-fallback.xml',\n 'from' => '+13120001234',\n 'machineDetection' => 'Enable',\n 'machineDetectionPromptEndTimeout' => 5000,\n 'machineDetectionSilenceTimeout' => 2000,\n 'machineDetectionSpeechEndThreshold' => 2000,\n 'machineDetectionSpeechThreshold' => 2000,\n 'machineDetectionTimeout' => 5000,\n 'mediaEncryption' => 'disabled',\n 'preferredCodecs' => 'PCMA,PCMU',\n 'record' => false,\n 'recordingChannels' => 'dual',\n 'recordingStatusCallback' => 'https://example.com/recording_status_callback',\n 'recordingStatusCallbackEvent' => 'in-progress completed absent',\n 'recordingStatusCallbackMethod' => 'GET',\n 'recordingTimeout' => 5,\n 'recordingTrack' => 'inbound',\n 'sendRecordingURL' => false,\n 'sipAuthPassword' => '1234',\n 'sipAuthUsername' => 'user',\n 'sipRegion' => 'Canada',\n 'statusCallback' => 'https://www.example.com/statuscallback-listener',\n 'statusCallbackEvent' => 'initiated',\n 'statusCallbackMethod' => 'GET',\n 'superviseCallSid' => 'v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg',\n 'supervisingRole' => 'monitor',\n 'texml' => 'Texml',\n 'timeLimit' => 3600,\n 'timeout' => 60,\n 'to' => '+13121230000',\n 'trim' => 'trim-silence',\n 'urlMethod' => 'GET',\n ],\n);\n\nvar_dump($response);",
38941
38940
  },
38942
38941
  http: {
38943
- example: 'curl https://api.telnyx.com/v2/texml/Accounts/$ACCOUNT_SID/Calls \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "Url": "https://www.example.com/texml.xml",\n "ApplicationSid": "example-app-sid",\n "AsyncAmd": true,\n "AsyncAmdStatusCallback": "https://www.example.com/callback",\n "AsyncAmdStatusCallbackMethod": "GET",\n "CallerId": "Info",\n "CancelPlaybackOnDetectMessageEnd": false,\n "CancelPlaybackOnMachineDetection": false,\n "CustomHeaders": [\n {\n "name": "X-Custom-Header",\n "value": "custom-value"\n }\n ],\n "DeepfakeDetection": "Enable",\n "DeepfakeDetectionCallbackMethod": "GET",\n "DeepfakeDetectionCallbackUrl": "https://www.example.com/deepfake-callback",\n "DetectionMode": "Premium",\n "FallbackUrl": "https://www.example.com/instructions-fallback.xml",\n "From": "+13120001234",\n "MachineDetection": "Enable",\n "MachineDetectionSilenceTimeout": 2000,\n "MachineDetectionSpeechEndThreshold": 2000,\n "MachineDetectionSpeechThreshold": 2000,\n "MachineDetectionTimeout": 5000,\n "MediaEncryption": "disabled",\n "PreferredCodecs": "PCMA,PCMU",\n "Record": false,\n "RecordingChannels": "dual",\n "RecordingStatusCallback": "https://example.com/recording_status_callback",\n "RecordingStatusCallbackEvent": "in-progress completed absent",\n "RecordingStatusCallbackMethod": "GET",\n "RecordingTimeout": 5,\n "RecordingTrack": "inbound",\n "SendRecordingUrl": false,\n "SipAuthPassword": "1234",\n "SipAuthUsername": "user",\n "SipRegion": "Canada",\n "StatusCallback": "https://www.example.com/statuscallback-listener",\n "StatusCallbackEvent": "initiated",\n "StatusCallbackMethod": "GET",\n "SuperviseCallSid": "v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg",\n "SupervisingRole": "monitor",\n "Texml": "Texml",\n "TimeLimit": 3600,\n "Timeout": 60,\n "To": "+13121230000",\n "Trim": "trim-silence",\n "UrlMethod": "GET"\n }\'',
38942
+ example: 'curl https://api.telnyx.com/v2/texml/Accounts/$ACCOUNT_SID/Calls \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $TELNYX_API_KEY" \\\n -d \'{\n "Url": "https://www.example.com/texml.xml",\n "ApplicationSid": "example-app-sid",\n "AsyncAmd": true,\n "AsyncAmdStatusCallback": "https://www.example.com/callback",\n "AsyncAmdStatusCallbackMethod": "GET",\n "CallerId": "Info",\n "CancelPlaybackOnDetectMessageEnd": false,\n "CancelPlaybackOnMachineDetection": false,\n "CustomHeaders": [\n {\n "name": "X-Custom-Header",\n "value": "custom-value"\n }\n ],\n "DeepfakeDetection": "Enable",\n "DeepfakeDetectionCallbackMethod": "GET",\n "DeepfakeDetectionCallbackUrl": "https://www.example.com/deepfake-callback",\n "DetectionMode": "Premium",\n "FallbackUrl": "https://www.example.com/instructions-fallback.xml",\n "From": "+13120001234",\n "MachineDetection": "Enable",\n "MachineDetectionPromptEndTimeout": 5000,\n "MachineDetectionSilenceTimeout": 2000,\n "MachineDetectionSpeechEndThreshold": 2000,\n "MachineDetectionSpeechThreshold": 2000,\n "MachineDetectionTimeout": 5000,\n "MediaEncryption": "disabled",\n "PreferredCodecs": "PCMA,PCMU",\n "Record": false,\n "RecordingChannels": "dual",\n "RecordingStatusCallback": "https://example.com/recording_status_callback",\n "RecordingStatusCallbackEvent": "in-progress completed absent",\n "RecordingStatusCallbackMethod": "GET",\n "RecordingTimeout": 5,\n "RecordingTrack": "inbound",\n "SendRecordingUrl": false,\n "SipAuthPassword": "1234",\n "SipAuthUsername": "user",\n "SipRegion": "Canada",\n "StatusCallback": "https://www.example.com/statuscallback-listener",\n "StatusCallbackEvent": "initiated",\n "StatusCallbackMethod": "GET",\n "SuperviseCallSid": "v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg",\n "SupervisingRole": "monitor",\n "Texml": "Texml",\n "TimeLimit": 3600,\n "Timeout": 60,\n "To": "+13121230000",\n "Trim": "trim-silence",\n "UrlMethod": "GET"\n }\'',
38944
38943
  },
38945
38944
  },
38946
38945
  },
@@ -42041,16 +42040,16 @@ const EMBEDDED_METHODS = [
42041
42040
  stainlessPath: '(resource) virtual_cross_connects > (method) list',
42042
42041
  qualified: 'client.virtualCrossConnects.list',
42043
42042
  params: ['filter?: { network_id?: string; };', 'page[number]?: number;', 'page[size]?: number;'],
42044
- response: "{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }",
42045
- markdown: "## list\n\n`client.virtualCrossConnects.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): object & object`\n\n**get** `/virtual_cross_connects`\n\nList all Virtual Cross Connects.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const virtualCrossConnectListResponse of client.virtualCrossConnects.list()) {\n console.log(virtualCrossConnectListResponse);\n}\n```",
42043
+ response: "{ id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }",
42044
+ markdown: "## list\n\n`client.virtualCrossConnects.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }`\n\n**get** `/virtual_cross_connects`\n\nList all Virtual Cross Connects.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n - `id?: string`\n - `bandwidth_mbps?: number`\n - `bgp_asn?: number`\n - `cloud_provider?: 'aws' | 'azure' | 'gce'`\n - `cloud_provider_region?: string`\n - `created_at?: string`\n - `name?: string`\n - `network_id?: string`\n - `primary_bgp_key?: string`\n - `primary_cloud_account_id?: string`\n - `primary_cloud_ip?: string`\n - `primary_enabled?: boolean`\n - `primary_routing_announcement?: boolean`\n - `primary_telnyx_ip?: string`\n - `record_type?: string`\n - `region?: { code?: string; name?: string; record_type?: string; }`\n - `region_code?: string`\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n - `updated_at?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const virtualCrossConnectCombined of client.virtualCrossConnects.list()) {\n console.log(virtualCrossConnectCombined);\n}\n```",
42046
42045
  perLanguage: {
42047
42046
  typescript: {
42048
42047
  method: 'client.virtualCrossConnects.list',
42049
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const virtualCrossConnectListResponse of client.virtualCrossConnects.list()) {\n console.log(virtualCrossConnectListResponse);\n}",
42048
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const virtualCrossConnectCombined of client.virtualCrossConnects.list()) {\n console.log(virtualCrossConnectCombined.id);\n}",
42050
42049
  },
42051
42050
  python: {
42052
42051
  method: 'virtual_cross_connects.list',
42053
- example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.virtual_cross_connects.list()\npage = page.data[0]\nprint(page)',
42052
+ example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.virtual_cross_connects.list()\npage = page.data[0]\nprint(page.id)',
42054
42053
  },
42055
42054
  java: {
42056
42055
  method: 'virtualCrossConnects().list',
@@ -42102,8 +42101,8 @@ const EMBEDDED_METHODS = [
42102
42101
  'secondary_cloud_ip?: string;',
42103
42102
  'secondary_telnyx_ip?: string;',
42104
42103
  ],
42105
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42106
- markdown: "## create\n\n`client.virtualCrossConnects.create(region_code: string, bandwidth_mbps?: number, bgp_asn?: number, cloud_provider?: 'aws' | 'azure' | 'gce', cloud_provider_region?: string, name?: string, network_id?: string, primary_bgp_key?: string, primary_cloud_account_id?: string, primary_cloud_ip?: string, primary_telnyx_ip?: string, secondary_bgp_key?: string, secondary_cloud_account_id?: string, secondary_cloud_ip?: string, secondary_telnyx_ip?: string): { data?: record & network_interface; }`\n\n**post** `/virtual_cross_connects`\n\nCreate a new Virtual Cross Connect.<br /><br />For AWS and GCE, you have the option of creating the primary connection first and the secondary connection later. You also have the option of disabling the primary and/or secondary connections at any time and later re-enabling them. With Azure, you do not have this option. Azure requires both the primary and secondary connections to be created at the same time and they can not be independantly disabled.\n\n### Parameters\n\n- `region_code: string`\n The region the interface should be deployed to.\n\n- `bandwidth_mbps?: number`\n The desired throughput in Megabits per Second (Mbps) for your Virtual Cross Connect.<br /><br />The available bandwidths can be found using the /virtual_cross_connect_regions endpoint.\n\n- `bgp_asn?: number`\n The Border Gateway Protocol (BGP) Autonomous System Number (ASN). If null, value will be assigned by Telnyx.\n\n- `cloud_provider?: 'aws' | 'azure' | 'gce'`\n The Virtual Private Cloud with which you would like to establish a cross connect.\n\n- `cloud_provider_region?: string`\n The region where your Virtual Private Cloud hosts are located.<br /><br />The available regions can be found using the /virtual_cross_connect_regions endpoint.\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n- `primary_bgp_key?: string`\n The authentication key for BGP peer configuration.\n\n- `primary_cloud_account_id?: string`\n The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider.\n\n- `primary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `primary_telnyx_ip?: string`\n The IP address assigned to the Telnyx side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `secondary_bgp_key?: string`\n The authentication key for BGP peer configuration.\n\n- `secondary_cloud_account_id?: string`\n The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider.<br /><br />This attribute is only necessary for GCE.\n\n- `secondary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `secondary_telnyx_ip?: string`\n The IP address assigned to the Telnyx side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.create({ region_code: 'ashburn-va' });\n\nconsole.log(virtualCrossConnect);\n```",
42104
+ response: "{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }",
42105
+ markdown: "## create\n\n`client.virtualCrossConnects.create(region_code: string, bandwidth_mbps?: number, bgp_asn?: number, cloud_provider?: 'aws' | 'azure' | 'gce', cloud_provider_region?: string, name?: string, network_id?: string, primary_bgp_key?: string, primary_cloud_account_id?: string, primary_cloud_ip?: string, primary_telnyx_ip?: string, secondary_bgp_key?: string, secondary_cloud_account_id?: string, secondary_cloud_ip?: string, secondary_telnyx_ip?: string): { data?: virtual_cross_connect_combined; }`\n\n**post** `/virtual_cross_connects`\n\nCreate a new Virtual Cross Connect.<br /><br />For AWS and GCE, you have the option of creating the primary connection first and the secondary connection later. You also have the option of disabling the primary and/or secondary connections at any time and later re-enabling them. With Azure, you do not have this option. Azure requires both the primary and secondary connections to be created at the same time and they can not be independantly disabled.\n\n### Parameters\n\n- `region_code: string`\n The region the interface should be deployed to.\n\n- `bandwidth_mbps?: number`\n The desired throughput in Megabits per Second (Mbps) for your Virtual Cross Connect.<br /><br />The available bandwidths can be found using the /virtual_cross_connect_regions endpoint.\n\n- `bgp_asn?: number`\n The Border Gateway Protocol (BGP) Autonomous System Number (ASN). If null, value will be assigned by Telnyx.\n\n- `cloud_provider?: 'aws' | 'azure' | 'gce'`\n The Virtual Private Cloud with which you would like to establish a cross connect.\n\n- `cloud_provider_region?: string`\n The region where your Virtual Private Cloud hosts are located.<br /><br />The available regions can be found using the /virtual_cross_connect_regions endpoint.\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n- `primary_bgp_key?: string`\n The authentication key for BGP peer configuration.\n\n- `primary_cloud_account_id?: string`\n The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider.\n\n- `primary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `primary_telnyx_ip?: string`\n The IP address assigned to the Telnyx side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `secondary_bgp_key?: string`\n The authentication key for BGP peer configuration.\n\n- `secondary_cloud_account_id?: string`\n The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud provider.<br /><br />This attribute is only necessary for GCE.\n\n- `secondary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n- `secondary_telnyx_ip?: string`\n The IP address assigned to the Telnyx side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value should be null for GCE as Google will only inform you of your assigned IP once the connection has been accepted.\n\n### Returns\n\n- `{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.create({ region_code: 'ashburn-va' });\n\nconsole.log(virtualCrossConnect);\n```",
42107
42106
  perLanguage: {
42108
42107
  typescript: {
42109
42108
  method: 'client.virtualCrossConnects.create',
@@ -42147,8 +42146,8 @@ const EMBEDDED_METHODS = [
42147
42146
  stainlessPath: '(resource) virtual_cross_connects > (method) delete',
42148
42147
  qualified: 'client.virtualCrossConnects.delete',
42149
42148
  params: ['id: string;'],
42150
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42151
- markdown: "## delete\n\n`client.virtualCrossConnects.delete(id: string): { data?: record & network_interface; }`\n\n**delete** `/virtual_cross_connects/{id}`\n\nDelete a Virtual Cross Connect.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42149
+ response: "{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }",
42150
+ markdown: "## delete\n\n`client.virtualCrossConnects.delete(id: string): { data?: virtual_cross_connect_combined; }`\n\n**delete** `/virtual_cross_connects/{id}`\n\nDelete a Virtual Cross Connect.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42152
42151
  perLanguage: {
42153
42152
  typescript: {
42154
42153
  method: 'client.virtualCrossConnects.delete',
@@ -42192,8 +42191,8 @@ const EMBEDDED_METHODS = [
42192
42191
  stainlessPath: '(resource) virtual_cross_connects > (method) retrieve',
42193
42192
  qualified: 'client.virtualCrossConnects.retrieve',
42194
42193
  params: ['id: string;'],
42195
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42196
- markdown: "## retrieve\n\n`client.virtualCrossConnects.retrieve(id: string): { data?: record & network_interface; }`\n\n**get** `/virtual_cross_connects/{id}`\n\nRetrieve a Virtual Cross Connect.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42194
+ response: "{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }",
42195
+ markdown: "## retrieve\n\n`client.virtualCrossConnects.retrieve(id: string): { data?: virtual_cross_connect_combined; }`\n\n**get** `/virtual_cross_connects/{id}`\n\nRetrieve a Virtual Cross Connect.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42197
42196
  perLanguage: {
42198
42197
  typescript: {
42199
42198
  method: 'client.virtualCrossConnects.retrieve',
@@ -42245,8 +42244,8 @@ const EMBEDDED_METHODS = [
42245
42244
  'secondary_enabled?: boolean;',
42246
42245
  'secondary_routing_announcement?: boolean;',
42247
42246
  ],
42248
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42249
- markdown: "## update\n\n`client.virtualCrossConnects.update(id: string, primary_cloud_ip?: string, primary_enabled?: boolean, primary_routing_announcement?: boolean, secondary_cloud_ip?: string, secondary_enabled?: boolean, secondary_routing_announcement?: boolean): { data?: record & network_interface; }`\n\n**patch** `/virtual_cross_connects/{id}`\n\nUpdate the Virtual Cross Connect.<br /><br />Cloud IPs can only be patched during the `created` state, as GCE will only inform you of your generated IP once the pending connection requested has been accepted. Once the Virtual Cross Connect has moved to `provisioning`, the IPs can no longer be patched.<br /><br />Once the Virtual Cross Connect has moved to `provisioned` and you are ready to enable routing, you can toggle the routing announcements to `true`.\n\n### Parameters\n\n- `id: string`\n\n- `primary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value can not be patched once the VXC has bene provisioned.\n\n- `primary_enabled?: boolean`\n Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit.\n\n- `primary_routing_announcement?: boolean`\n Whether the primary BGP route is being announced.\n\n- `secondary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value can not be patched once the VXC has bene provisioned.\n\n- `secondary_enabled?: boolean`\n Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit.\n\n- `secondary_routing_announcement?: boolean`\n Whether the secondary BGP route is being announced.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.update('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42247
+ response: "{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }",
42248
+ markdown: "## update\n\n`client.virtualCrossConnects.update(id: string, primary_cloud_ip?: string, primary_enabled?: boolean, primary_routing_announcement?: boolean, secondary_cloud_ip?: string, secondary_enabled?: boolean, secondary_routing_announcement?: boolean): { data?: virtual_cross_connect_combined; }`\n\n**patch** `/virtual_cross_connects/{id}`\n\nUpdate the Virtual Cross Connect.<br /><br />Cloud IPs can only be patched during the `created` state, as GCE will only inform you of your generated IP once the pending connection requested has been accepted. Once the Virtual Cross Connect has moved to `provisioning`, the IPs can no longer be patched.<br /><br />Once the Virtual Cross Connect has moved to `provisioned` and you are ready to enable routing, you can toggle the routing announcements to `true`.\n\n### Parameters\n\n- `id: string`\n\n- `primary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value can not be patched once the VXC has bene provisioned.\n\n- `primary_enabled?: boolean`\n Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit.\n\n- `primary_routing_announcement?: boolean`\n Whether the primary BGP route is being announced.\n\n- `secondary_cloud_ip?: string`\n The IP address assigned for your side of the Virtual Cross Connect.<br /><br />If none is provided, one will be generated for you.<br /><br />This value can not be patched once the VXC has bene provisioned.\n\n- `secondary_enabled?: boolean`\n Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit.\n\n- `secondary_routing_announcement?: boolean`\n Whether the secondary BGP route is being announced.\n\n### Returns\n\n- `{ data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; bandwidth_mbps?: number; bgp_asn?: number; cloud_provider?: 'aws' | 'azure' | 'gce'; cloud_provider_region?: string; created_at?: string; name?: string; network_id?: string; primary_bgp_key?: string; primary_cloud_account_id?: string; primary_cloud_ip?: string; primary_enabled?: boolean; primary_routing_announcement?: boolean; primary_telnyx_ip?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst virtualCrossConnect = await client.virtualCrossConnects.update('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(virtualCrossConnect);\n```",
42250
42249
  perLanguage: {
42251
42250
  typescript: {
42252
42251
  method: 'client.virtualCrossConnects.update',
@@ -42434,16 +42433,16 @@ const EMBEDDED_METHODS = [
42434
42433
  stainlessPath: '(resource) wireguard_interfaces > (method) list',
42435
42434
  qualified: 'client.wireguardInterfaces.list',
42436
42435
  params: ['filter?: { network_id?: string; };', 'page[number]?: number;', 'page[size]?: number;'],
42437
- response: "{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }",
42438
- markdown: "## list\n\n`client.wireguardInterfaces.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): object & object`\n\n**get** `/wireguard_interfaces`\n\nList all WireGuard Interfaces.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const wireguardInterfaceListResponse of client.wireguardInterfaces.list()) {\n console.log(wireguardInterfaceListResponse);\n}\n```",
42436
+ response: "{ id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }",
42437
+ markdown: "## list\n\n`client.wireguardInterfaces.list(filter?: { network_id?: string; }, page[number]?: number, page[size]?: number): { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }`\n\n**get** `/wireguard_interfaces`\n\nList all WireGuard Interfaces.\n\n### Parameters\n\n- `filter?: { network_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[network_id]\n - `network_id?: string`\n The associated network id to filter on.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n### Returns\n\n- `{ id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n - `id?: string`\n - `created_at?: string`\n - `enable_sip_trunking?: boolean`\n - `endpoint?: string`\n - `name?: string`\n - `network_id?: string`\n - `public_key?: string`\n - `record_type?: string`\n - `region?: { code?: string; name?: string; record_type?: string; }`\n - `region_code?: string`\n - `status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'`\n - `updated_at?: string`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const wireguardInterfaceRead of client.wireguardInterfaces.list()) {\n console.log(wireguardInterfaceRead);\n}\n```",
42439
42438
  perLanguage: {
42440
42439
  typescript: {
42441
42440
  method: 'client.wireguardInterfaces.list',
42442
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const wireguardInterfaceListResponse of client.wireguardInterfaces.list()) {\n console.log(wireguardInterfaceListResponse);\n}",
42441
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const wireguardInterfaceRead of client.wireguardInterfaces.list()) {\n console.log(wireguardInterfaceRead.id);\n}",
42443
42442
  },
42444
42443
  python: {
42445
42444
  method: 'wireguard_interfaces.list',
42446
- example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.wireguard_interfaces.list()\npage = page.data[0]\nprint(page)',
42445
+ example: 'import os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted\n)\npage = client.wireguard_interfaces.list()\npage = page.data[0]\nprint(page.id)',
42447
42446
  },
42448
42447
  java: {
42449
42448
  method: 'wireguardInterfaces().list',
@@ -42484,8 +42483,8 @@ const EMBEDDED_METHODS = [
42484
42483
  'name?: string;',
42485
42484
  'network_id?: string;',
42486
42485
  ],
42487
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42488
- markdown: "## create\n\n`client.wireguardInterfaces.create(region_code: string, enable_sip_trunking?: boolean, name?: string, network_id?: string): { data?: record & network_interface; }`\n\n**post** `/wireguard_interfaces`\n\nCreate a new WireGuard Interface. Current limitation of 10 interfaces per user can be created.\n\n### Parameters\n\n- `region_code: string`\n The region the interface should be deployed to.\n\n- `enable_sip_trunking?: boolean`\n Enable SIP traffic forwarding over VPN interface.\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.create({ region_code: 'ashburn-va' });\n\nconsole.log(wireguardInterface);\n```",
42486
+ response: '{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }',
42487
+ markdown: "## create\n\n`client.wireguardInterfaces.create(region_code: string, enable_sip_trunking?: boolean, name?: string, network_id?: string): { data?: wireguard_interface_read; }`\n\n**post** `/wireguard_interfaces`\n\nCreate a new WireGuard Interface. Current limitation of 10 interfaces per user can be created.\n\n### Parameters\n\n- `region_code: string`\n The region the interface should be deployed to.\n\n- `enable_sip_trunking?: boolean`\n Enable SIP traffic forwarding over VPN interface.\n\n- `name?: string`\n A user specified name for the interface.\n\n- `network_id?: string`\n The id of the network associated with the interface.\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.create({ region_code: 'ashburn-va' });\n\nconsole.log(wireguardInterface);\n```",
42489
42488
  perLanguage: {
42490
42489
  typescript: {
42491
42490
  method: 'client.wireguardInterfaces.create',
@@ -42529,8 +42528,8 @@ const EMBEDDED_METHODS = [
42529
42528
  stainlessPath: '(resource) wireguard_interfaces > (method) delete',
42530
42529
  qualified: 'client.wireguardInterfaces.delete',
42531
42530
  params: ['id: string;'],
42532
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42533
- markdown: "## delete\n\n`client.wireguardInterfaces.delete(id: string): { data?: record & network_interface; }`\n\n**delete** `/wireguard_interfaces/{id}`\n\nDelete a WireGuard Interface.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(wireguardInterface);\n```",
42531
+ response: '{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }',
42532
+ markdown: "## delete\n\n`client.wireguardInterfaces.delete(id: string): { data?: wireguard_interface_read; }`\n\n**delete** `/wireguard_interfaces/{id}`\n\nDelete a WireGuard Interface.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.delete('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(wireguardInterface);\n```",
42534
42533
  perLanguage: {
42535
42534
  typescript: {
42536
42535
  method: 'client.wireguardInterfaces.delete',
@@ -42574,8 +42573,8 @@ const EMBEDDED_METHODS = [
42574
42573
  stainlessPath: '(resource) wireguard_interfaces > (method) retrieve',
42575
42574
  qualified: 'client.wireguardInterfaces.retrieve',
42576
42575
  params: ['id: string;'],
42577
- response: '{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }',
42578
- markdown: "## retrieve\n\n`client.wireguardInterfaces.retrieve(id: string): { data?: record & network_interface; }`\n\n**get** `/wireguard_interfaces/{id}`\n\nRetrieve a WireGuard Interfaces.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: interface_status; }; }`\n\n - `data?: { id?: string; created_at?: string; record_type?: string; updated_at?: string; } & { name?: string; network_id?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(wireguardInterface);\n```",
42576
+ response: '{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }',
42577
+ markdown: "## retrieve\n\n`client.wireguardInterfaces.retrieve(id: string): { data?: wireguard_interface_read; }`\n\n**get** `/wireguard_interfaces/{id}`\n\nRetrieve a WireGuard Interfaces.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: object; region_code?: string; status?: interface_status; updated_at?: string; }; }`\n\n - `data?: { id?: string; created_at?: string; enable_sip_trunking?: boolean; endpoint?: string; name?: string; network_id?: string; public_key?: string; record_type?: string; region?: { code?: string; name?: string; record_type?: string; }; region_code?: string; status?: 'created' | 'provisioning' | 'provisioned' | 'deleting'; updated_at?: string; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst wireguardInterface = await client.wireguardInterfaces.retrieve('6a09cdc3-8948-47f0-aa62-74ac943d6c58');\n\nconsole.log(wireguardInterface);\n```",
42579
42578
  perLanguage: {
42580
42579
  typescript: {
42581
42580
  method: 'client.wireguardInterfaces.retrieve',
@@ -49823,12 +49822,12 @@ const EMBEDDED_METHODS = [
49823
49822
  'page[size]?: number;',
49824
49823
  "sort?: 'created_at' | 'connection_name' | 'active';",
49825
49824
  ],
49826
- response: 'object',
49827
- markdown: "## list\n\n`client.uacConnections.list(filter?: { connection_name?: { contains?: string; }; fqdn?: string; outbound_voice_profile_id?: string; }, page[number]?: number, page[size]?: number, sort?: 'created_at' | 'connection_name' | 'active'): { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: object; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: object; internal_uac_settings?: object; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: object; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n**get** `/uac_connections`\n\nReturns a list of your UAC connections. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n### Parameters\n\n- `filter?: { connection_name?: { contains?: string; }; fqdn?: string; outbound_voice_profile_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id]\n - `connection_name?: { contains?: string; }`\n Filter by connection_name using nested operations\n - `fqdn?: string`\n If present, connections with an `fqdn` that equals the given value will be returned. Matching is case-sensitive, and the full string must match.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n- `sort?: 'created_at' | 'connection_name' | 'active'`\n Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n <li>\n <code>connection_name</code>: sorts the result by the\n <code>connection_name</code> field in ascending order.\n </li>\n\n <li>\n <code>-connection_name</code>: sorts the result by the\n <code>connection_name</code> field in descending order.\n </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> in descending order.\n\n### Returns\n\n- `{ id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n - `id?: string`\n - `active?: boolean`\n - `anchorsite_override?: string`\n - `android_push_credential_id?: string`\n - `authentication?: 'uac-authentication'`\n - `call_cost_in_webhooks?: boolean`\n - `connection_name?: string`\n - `created_at?: string`\n - `default_on_hold_comfort_noise_enabled?: boolean`\n - `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n - `encode_contact_header_enabled?: boolean`\n - `encrypted_media?: 'SRTP'`\n - `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n - `fqdn?: string`\n - `fqdn_outbound_authentication?: 'credential-authentication'`\n - `fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]`\n - `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n - `internal_uac_settings?: { destination_uri?: string; }`\n - `ios_push_credential_id?: string`\n - `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n - `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n - `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n - `onnet_t38_passthrough_enabled?: boolean`\n - `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `password?: string`\n - `record_type?: string`\n - `registration_status?: string`\n - `registration_status_updated_at?: string`\n - `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n - `tags?: string[]`\n - `updated_at?: string`\n - `user_name?: string`\n - `webhook_api_version?: '1' | '2'`\n - `webhook_event_failover_url?: string`\n - `webhook_event_url?: string`\n - `webhook_timeout_secs?: number`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const uacConnectionListResponse of client.uacConnections.list()) {\n console.log(uacConnectionListResponse);\n}\n```",
49825
+ response: "{ id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: object; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: object[]; inbound?: object; internal_uac_settings?: object; ios_push_credential_id?: string; jitter_buffer?: object; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: object; onnet_t38_passthrough_enabled?: boolean; outbound?: object; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: object; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }",
49826
+ markdown: "## list\n\n`client.uacConnections.list(filter?: { connection_name?: { contains?: string; }; fqdn?: string; outbound_voice_profile_id?: string; }, page[number]?: number, page[size]?: number, sort?: 'created_at' | 'connection_name' | 'active'): { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: uac_external_settings; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: uac_inbound; internal_uac_settings?: uac_internal_settings; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: uac_outbound; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n**get** `/uac_connections`\n\nReturns a list of your UAC connections. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n### Parameters\n\n- `filter?: { connection_name?: { contains?: string; }; fqdn?: string; outbound_voice_profile_id?: string; }`\n Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id], filter[outbound.outbound_voice_profile_id]\n - `connection_name?: { contains?: string; }`\n Filter by connection_name using nested operations\n - `fqdn?: string`\n If present, connections with an `fqdn` that equals the given value will be returned. Matching is case-sensitive, and the full string must match.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n\n- `page[number]?: number`\n\n- `page[size]?: number`\n\n- `sort?: 'created_at' | 'connection_name' | 'active'`\n Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted in descending order add the <code> -</code> prefix.<br/><br/>\nThat is: <ul>\n <li>\n <code>connection_name</code>: sorts the result by the\n <code>connection_name</code> field in ascending order.\n </li>\n\n <li>\n <code>-connection_name</code>: sorts the result by the\n <code>connection_name</code> field in descending order.\n </li>\n</ul> <br/> If not given, results are sorted by <code>created_at</code> in descending order.\n\n### Returns\n\n- `{ id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n - `id?: string`\n - `active?: boolean`\n - `anchorsite_override?: string`\n - `android_push_credential_id?: string`\n - `authentication?: 'uac-authentication'`\n - `call_cost_in_webhooks?: boolean`\n - `connection_name?: string`\n - `created_at?: string`\n - `default_on_hold_comfort_noise_enabled?: boolean`\n - `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n - `encode_contact_header_enabled?: boolean`\n - `encrypted_media?: 'SRTP'`\n - `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n - `fqdn?: string`\n - `fqdn_outbound_authentication?: 'credential-authentication'`\n - `fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]`\n - `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n - `internal_uac_settings?: { destination_uri?: string; }`\n - `ios_push_credential_id?: string`\n - `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n - `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n - `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n - `onnet_t38_passthrough_enabled?: boolean`\n - `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `password?: string`\n - `record_type?: string`\n - `registration_status?: string`\n - `registration_status_updated_at?: string`\n - `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n - `tags?: string[]`\n - `updated_at?: string`\n - `user_name?: string`\n - `webhook_api_version?: '1' | '2'`\n - `webhook_event_failover_url?: string`\n - `webhook_event_url?: string`\n - `webhook_timeout_secs?: number`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\n// Automatically fetches more pages as needed.\nfor await (const uacConnection of client.uacConnections.list()) {\n console.log(uacConnection);\n}\n```",
49828
49827
  perLanguage: {
49829
49828
  typescript: {
49830
49829
  method: 'client.uacConnections.list',
49831
- example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const uacConnectionListResponse of client.uacConnections.list()) {\n console.log(uacConnectionListResponse.id);\n}",
49830
+ example: "import Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n\n// Automatically fetches more pages as needed.\nfor await (const uacConnection of client.uacConnections.list()) {\n console.log(uacConnection.id);\n}",
49832
49831
  },
49833
49832
  python: {
49834
49833
  method: 'uac_connections.list',
@@ -49897,7 +49896,7 @@ const EMBEDDED_METHODS = [
49897
49896
  'webhook_timeout_secs?: number;',
49898
49897
  ],
49899
49898
  response: '{ data?: object; }',
49900
- markdown: "## create\n\n`client.uacConnections.create(connection_name: string, active?: boolean, anchorsite_override?: string, android_push_credential_id?: string, call_cost_in_webhooks?: boolean, default_on_hold_comfort_noise_enabled?: boolean, dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO', encode_contact_header_enabled?: boolean, encrypted_media?: 'SRTP', external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }, inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }, internal_uac_settings?: { destination_uri?: string; }, ios_push_credential_id?: string, jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }, noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled', noise_suppression_details?: { attenuation_limit?: number; engine?: string; }, onnet_t38_passthrough_enabled?: boolean, outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }, password?: string, rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }, sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal', tags?: string[], user_name?: string, webhook_api_version?: '1' | '2' | 'texml', webhook_event_failover_url?: string, webhook_event_url?: string, webhook_timeout_secs?: number): { data?: object; }`\n\n**post** `/uac_connections`\n\nCreates a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n### Parameters\n\n- `connection_name: string`\n A user-assigned name to help manage the connection.\n\n- `active?: boolean`\n Defaults to true\n\n- `anchorsite_override?: string`\n `Latency` directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n\n- `android_push_credential_id?: string`\n The uuid of the push credential for Android\n\n- `call_cost_in_webhooks?: boolean`\n Specifies if call cost webhooks should be sent for this connection.\n\n- `default_on_hold_comfort_noise_enabled?: boolean`\n When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.\n\n- `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.\n\n- `encode_contact_header_enabled?: boolean`\n Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.\n\n- `encrypted_media?: 'SRTP'`\n Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS.\n\n- `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls.\n - `auth_username?: string`\n The authentication username used in SIP digest authentication. If not set, the Username value will be used.\n - `expiration_sec?: number`\n The registration interval, in seconds, indicating how often the system refreshes the SIP registration with the external SIP peer.\n - `from_user?: string`\n The user portion of the SIP From header used in outbound requests. This controls the caller identity presented to the external SIP peer.\n - `outbound_proxy?: string`\n An optional SIP proxy used to route outbound requests before reaching the external SIP peer.\n - `password?: string`\n The SIP password used for digest authentication with the external SIP peer.\n - `proxy?: string`\n The SIP proxy address of the external SIP peer used for registrations and outbound call routing.\n - `transport?: 'UDP' | 'TLS' | 'TCP'`\n The transport protocol used for SIP signaling when communicating with the external SIP peer. One of UDP, TLS, or TCP.\n - `username?: string`\n The SIP username used to authenticate with the external SIP peer for registrations and outbound calls. Must start with a letter or number and contain only letters, numbers, hyphens, and underscores.\n\n- `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters.\n - `ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'`\n This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls.\n - `channel_limit?: number`\n When set, this will limit the total number of inbound calls to phone numbers associated with this connection.\n - `codecs?: string[]`\n Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.\n - `default_routing_method?: 'sequential' | 'round-robin'`\n Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed.\n - `dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'`\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `isup_headers_enabled?: boolean`\n When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)\n - `prack_enabled?: boolean`\n Enable PRACK messages as defined in RFC3262.\n - `shaken_stir_enabled?: boolean`\n When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.\n - `simultaneous_ringing?: 'disabled' | 'enabled'`\n When enabled, allows multiple devices to ring simultaneously on incoming calls.\n - `sip_compact_headers_enabled?: boolean`\n Defaults to true.\n - `timeout_1xx_secs?: number`\n Time(sec) before aborting if connection is not made.\n - `timeout_2xx_secs?: number`\n Time(sec) before aborting if call is unanswered (min: 1, max: 600).\n\n- `internal_uac_settings?: { destination_uri?: string; }`\n Internal Telnyx-side settings for a UAC connection.\n - `destination_uri?: string`\n The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include a `sip:` prefix. The value must be in the format `userinfo@<subdomain.>sip.telnyx.com` or `userinfo@<subdomain.>sipdev.telnyx.com`; the userinfo portion may contain only letters, digits, hyphens, and underscores.\n\n- `ios_push_credential_id?: string`\n The uuid of the push credential for Ios\n\n- `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering.\n - `enable_jitter_buffer?: boolean`\n Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.\n - `jitterbuffer_msec_max?: number`\n The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n - `jitterbuffer_msec_min?: number`\n The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n\n- `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off.\n\n- `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used.\n - `attenuation_limit?: number`\n The attenuation limit value for the selected engine. Default values vary by engine: 0 for 'denoiser', 80 for 'deep_filter_net', 'deep_filter_net_large', and all Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss'), 100 for 'quail_voice_focus'.\n - `engine?: string`\n The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression.\n\n- `onnet_t38_passthrough_enabled?: boolean`\n Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.\n\n- `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `ani_override?: string`\n Set a phone number as the ani_override value to override caller id number on outbound calls.\n - `ani_override_type?: 'always' | 'normal' | 'emergency'`\n Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.\n - `call_parking_enabled?: boolean`\n Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next.\n - `channel_limit?: number`\n When set, this will limit the total number of outbound calls to phone numbers associated with this connection.\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `instant_ringback_enabled?: boolean`\n When set, ringback will not wait for indication before sending ringback tone to calling party.\n - `localization?: string`\n A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n - `t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'`\n This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.<br/><br/> By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite.\n\n- `password?: string`\n The password to be used as part of the credentials. Must be 8 to 128 characters long.\n\n- `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `capture_enabled?: boolean`\n BETA - Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal.\n - `port?: 'rtcp-mux' | 'rtp+1'`\n RTCP port by default is rtp+1, it can also be set to rtcp-mux\n - `report_frequency_secs?: number`\n RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds.\n\n- `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).\n\n- `tags?: string[]`\n Tags associated with the connection.\n\n- `user_name?: string`\n The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).\n\n- `webhook_api_version?: '1' | '2' | 'texml'`\n Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true.\n\n- `webhook_event_failover_url?: string`\n The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.\n\n- `webhook_event_url?: string`\n The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.\n\n- `webhook_timeout_secs?: number`\n Specifies how many seconds to wait before timing out a webhook.\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: object[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: object; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: object; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: object; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.create({ connection_name: 'my name' });\n\nconsole.log(uacConnection);\n```",
49899
+ markdown: "## create\n\n`client.uacConnections.create(connection_name: string, active?: boolean, anchorsite_override?: string, android_push_credential_id?: string, call_cost_in_webhooks?: boolean, default_on_hold_comfort_noise_enabled?: boolean, dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO', encode_contact_header_enabled?: boolean, encrypted_media?: 'SRTP', external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }, inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }, internal_uac_settings?: { destination_uri?: string; }, ios_push_credential_id?: string, jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }, noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled', noise_suppression_details?: { attenuation_limit?: number; engine?: string; }, onnet_t38_passthrough_enabled?: boolean, outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }, password?: string, rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }, sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal', tags?: string[], user_name?: string, webhook_api_version?: '1' | '2' | 'texml', webhook_event_failover_url?: string, webhook_event_url?: string, webhook_timeout_secs?: number): { data?: uac_connection; }`\n\n**post** `/uac_connections`\n\nCreates a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx to maintain the registration.\n\n### Parameters\n\n- `connection_name: string`\n A user-assigned name to help manage the connection.\n\n- `active?: boolean`\n Defaults to true\n\n- `anchorsite_override?: string`\n `Latency` directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n\n- `android_push_credential_id?: string`\n The uuid of the push credential for Android\n\n- `call_cost_in_webhooks?: boolean`\n Specifies if call cost webhooks should be sent for this connection.\n\n- `default_on_hold_comfort_noise_enabled?: boolean`\n When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.\n\n- `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.\n\n- `encode_contact_header_enabled?: boolean`\n Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.\n\n- `encrypted_media?: 'SRTP'`\n Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS.\n\n- `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls.\n - `auth_username?: string`\n The authentication username used in SIP digest authentication. If not set, the Username value will be used.\n - `expiration_sec?: number`\n The registration interval, in seconds, indicating how often the system refreshes the SIP registration with the external SIP peer.\n - `from_user?: string`\n The user portion of the SIP From header used in outbound requests. This controls the caller identity presented to the external SIP peer.\n - `outbound_proxy?: string`\n An optional SIP proxy used to route outbound requests before reaching the external SIP peer.\n - `password?: string`\n The SIP password used for digest authentication with the external SIP peer.\n - `proxy?: string`\n The SIP proxy address of the external SIP peer used for registrations and outbound call routing.\n - `transport?: 'UDP' | 'TLS' | 'TCP'`\n The transport protocol used for SIP signaling when communicating with the external SIP peer. One of UDP, TLS, or TCP.\n - `username?: string`\n The SIP username used to authenticate with the external SIP peer for registrations and outbound calls. Must start with a letter or number and contain only letters, numbers, hyphens, and underscores.\n\n- `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters.\n - `ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'`\n This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls.\n - `channel_limit?: number`\n When set, this will limit the total number of inbound calls to phone numbers associated with this connection.\n - `codecs?: string[]`\n Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.\n - `default_routing_method?: 'sequential' | 'round-robin'`\n Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed.\n - `dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'`\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `isup_headers_enabled?: boolean`\n When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)\n - `prack_enabled?: boolean`\n Enable PRACK messages as defined in RFC3262.\n - `shaken_stir_enabled?: boolean`\n When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.\n - `simultaneous_ringing?: 'disabled' | 'enabled'`\n When enabled, allows multiple devices to ring simultaneously on incoming calls.\n - `sip_compact_headers_enabled?: boolean`\n Defaults to true.\n - `timeout_1xx_secs?: number`\n Time(sec) before aborting if connection is not made.\n - `timeout_2xx_secs?: number`\n Time(sec) before aborting if call is unanswered (min: 1, max: 600).\n\n- `internal_uac_settings?: { destination_uri?: string; }`\n Internal Telnyx-side settings for a UAC connection.\n - `destination_uri?: string`\n The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include a `sip:` prefix. The value must be in the format `userinfo@<subdomain.>sip.telnyx.com` or `userinfo@<subdomain.>sipdev.telnyx.com`; the userinfo portion may contain only letters, digits, hyphens, and underscores.\n\n- `ios_push_credential_id?: string`\n The uuid of the push credential for Ios\n\n- `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering.\n - `enable_jitter_buffer?: boolean`\n Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.\n - `jitterbuffer_msec_max?: number`\n The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n - `jitterbuffer_msec_min?: number`\n The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n\n- `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off.\n\n- `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used.\n - `attenuation_limit?: number`\n The attenuation limit value for the selected engine. Default values vary by engine: 0 for 'denoiser', 80 for 'deep_filter_net', 'deep_filter_net_large', and all Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss'), 100 for 'quail_voice_focus'.\n - `engine?: string`\n The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression.\n\n- `onnet_t38_passthrough_enabled?: boolean`\n Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.\n\n- `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `ani_override?: string`\n Set a phone number as the ani_override value to override caller id number on outbound calls.\n - `ani_override_type?: 'always' | 'normal' | 'emergency'`\n Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.\n - `call_parking_enabled?: boolean`\n Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next.\n - `channel_limit?: number`\n When set, this will limit the total number of outbound calls to phone numbers associated with this connection.\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `instant_ringback_enabled?: boolean`\n When set, ringback will not wait for indication before sending ringback tone to calling party.\n - `localization?: string`\n A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n - `t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'`\n This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.<br/><br/> By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite.\n\n- `password?: string`\n The password to be used as part of the credentials. Must be 8 to 128 characters long.\n\n- `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `capture_enabled?: boolean`\n BETA - Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal.\n - `port?: 'rtcp-mux' | 'rtp+1'`\n RTCP port by default is rtp+1, it can also be set to rtcp-mux\n - `report_frequency_secs?: number`\n RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds.\n\n- `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).\n\n- `tags?: string[]`\n Tags associated with the connection.\n\n- `user_name?: string`\n The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).\n\n- `webhook_api_version?: '1' | '2' | 'texml'`\n Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be set when the outbound object parameter call_parking_enabled is included and set to true.\n\n- `webhook_event_failover_url?: string`\n The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.\n\n- `webhook_event_url?: string`\n The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.\n\n- `webhook_timeout_secs?: number`\n Specifies how many seconds to wait before timing out a webhook.\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: uac_external_settings; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: uac_inbound; internal_uac_settings?: uac_internal_settings; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: uac_outbound; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.create({ connection_name: 'my name' });\n\nconsole.log(uacConnection);\n```",
49901
49900
  perLanguage: {
49902
49901
  typescript: {
49903
49902
  method: 'client.uacConnections.create',
@@ -49942,7 +49941,7 @@ const EMBEDDED_METHODS = [
49942
49941
  qualified: 'client.uacConnections.delete',
49943
49942
  params: ['id: string;'],
49944
49943
  response: '{ data?: object; }',
49945
- markdown: "## delete\n\n`client.uacConnections.delete(id: string): { data?: object; }`\n\n**delete** `/uac_connections/{id}`\n\nDeletes an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: object[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: object; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: object; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: object; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.delete('id');\n\nconsole.log(uacConnection);\n```",
49944
+ markdown: "## delete\n\n`client.uacConnections.delete(id: string): { data?: uac_connection; }`\n\n**delete** `/uac_connections/{id}`\n\nDeletes an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: uac_external_settings; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: uac_inbound; internal_uac_settings?: uac_internal_settings; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: uac_outbound; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.delete('id');\n\nconsole.log(uacConnection);\n```",
49946
49945
  perLanguage: {
49947
49946
  typescript: {
49948
49947
  method: 'client.uacConnections.delete',
@@ -49987,7 +49986,7 @@ const EMBEDDED_METHODS = [
49987
49986
  qualified: 'client.uacConnections.retrieve',
49988
49987
  params: ['id: string;'],
49989
49988
  response: '{ data?: object; }',
49990
- markdown: "## retrieve\n\n`client.uacConnections.retrieve(id: string): { data?: object; }`\n\n**get** `/uac_connections/{id}`\n\nRetrieves the details of an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: object[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: object; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: object; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: object; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.retrieve('id');\n\nconsole.log(uacConnection);\n```",
49989
+ markdown: "## retrieve\n\n`client.uacConnections.retrieve(id: string): { data?: uac_connection; }`\n\n**get** `/uac_connections/{id}`\n\nRetrieves the details of an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: uac_external_settings; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: uac_inbound; internal_uac_settings?: uac_internal_settings; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: uac_outbound; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.retrieve('id');\n\nconsole.log(uacConnection);\n```",
49991
49990
  perLanguage: {
49992
49991
  typescript: {
49993
49992
  method: 'client.uacConnections.retrieve',
@@ -50061,7 +50060,7 @@ const EMBEDDED_METHODS = [
50061
50060
  'webhook_timeout_secs?: number;',
50062
50061
  ],
50063
50062
  response: '{ data?: object; }',
50064
- markdown: "## update\n\n`client.uacConnections.update(id: string, active?: boolean, anchorsite_override?: string, android_push_credential_id?: string, call_cost_in_webhooks?: boolean, connection_name?: string, default_on_hold_comfort_noise_enabled?: boolean, dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO', encode_contact_header_enabled?: boolean, encrypted_media?: 'SRTP', external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }, inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }, internal_uac_settings?: { destination_uri?: string; }, ios_push_credential_id?: string, jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }, noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled', noise_suppression_details?: { attenuation_limit?: number; engine?: string; }, onnet_t38_passthrough_enabled?: boolean, outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }, password?: string, rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }, sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal', tags?: string[], user_name?: string, webhook_api_version?: '1' | '2', webhook_event_failover_url?: string, webhook_event_url?: string, webhook_timeout_secs?: number): { data?: object; }`\n\n**patch** `/uac_connections/{id}`\n\nUpdates settings of an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n- `active?: boolean`\n Defaults to true\n\n- `anchorsite_override?: string`\n `Latency` directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n\n- `android_push_credential_id?: string`\n The uuid of the push credential for Android\n\n- `call_cost_in_webhooks?: boolean`\n Specifies if call cost webhooks should be sent for this connection.\n\n- `connection_name?: string`\n A user-assigned name to help manage the connection.\n\n- `default_on_hold_comfort_noise_enabled?: boolean`\n When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.\n\n- `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.\n\n- `encode_contact_header_enabled?: boolean`\n Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.\n\n- `encrypted_media?: 'SRTP'`\n Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS.\n\n- `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls.\n - `auth_username?: string`\n The authentication username used in SIP digest authentication. If not set, the Username value will be used.\n - `expiration_sec?: number`\n The registration interval, in seconds, indicating how often the system refreshes the SIP registration with the external SIP peer.\n - `from_user?: string`\n The user portion of the SIP From header used in outbound requests. This controls the caller identity presented to the external SIP peer.\n - `outbound_proxy?: string`\n An optional SIP proxy used to route outbound requests before reaching the external SIP peer.\n - `password?: string`\n The SIP password used for digest authentication with the external SIP peer.\n - `proxy?: string`\n The SIP proxy address of the external SIP peer used for registrations and outbound call routing.\n - `transport?: 'UDP' | 'TLS' | 'TCP'`\n The transport protocol used for SIP signaling when communicating with the external SIP peer. One of UDP, TLS, or TCP.\n - `username?: string`\n The SIP username used to authenticate with the external SIP peer for registrations and outbound calls. Must start with a letter or number and contain only letters, numbers, hyphens, and underscores.\n\n- `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters.\n - `ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'`\n This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls.\n - `channel_limit?: number`\n When set, this will limit the total number of inbound calls to phone numbers associated with this connection.\n - `codecs?: string[]`\n Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.\n - `default_routing_method?: 'sequential' | 'round-robin'`\n Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed.\n - `dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'`\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `isup_headers_enabled?: boolean`\n When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)\n - `prack_enabled?: boolean`\n Enable PRACK messages as defined in RFC3262.\n - `shaken_stir_enabled?: boolean`\n When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.\n - `simultaneous_ringing?: 'disabled' | 'enabled'`\n When enabled, allows multiple devices to ring simultaneously on incoming calls.\n - `sip_compact_headers_enabled?: boolean`\n Defaults to true.\n - `timeout_1xx_secs?: number`\n Time(sec) before aborting if connection is not made.\n - `timeout_2xx_secs?: number`\n Time(sec) before aborting if call is unanswered (min: 1, max: 600).\n\n- `internal_uac_settings?: { destination_uri?: string; }`\n Internal Telnyx-side settings for a UAC connection.\n - `destination_uri?: string`\n The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include a `sip:` prefix. The value must be in the format `userinfo@<subdomain.>sip.telnyx.com` or `userinfo@<subdomain.>sipdev.telnyx.com`; the userinfo portion may contain only letters, digits, hyphens, and underscores.\n\n- `ios_push_credential_id?: string`\n The uuid of the push credential for Ios\n\n- `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering.\n - `enable_jitter_buffer?: boolean`\n Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.\n - `jitterbuffer_msec_max?: number`\n The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n - `jitterbuffer_msec_min?: number`\n The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n\n- `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off.\n\n- `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used.\n - `attenuation_limit?: number`\n The attenuation limit value for the selected engine. Default values vary by engine: 0 for 'denoiser', 80 for 'deep_filter_net', 'deep_filter_net_large', and all Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss'), 100 for 'quail_voice_focus'.\n - `engine?: string`\n The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression.\n\n- `onnet_t38_passthrough_enabled?: boolean`\n Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.\n\n- `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `ani_override?: string`\n Set a phone number as the ani_override value to override caller id number on outbound calls.\n - `ani_override_type?: 'always' | 'normal' | 'emergency'`\n Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.\n - `call_parking_enabled?: boolean`\n Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next.\n - `channel_limit?: number`\n When set, this will limit the total number of outbound calls to phone numbers associated with this connection.\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `instant_ringback_enabled?: boolean`\n When set, ringback will not wait for indication before sending ringback tone to calling party.\n - `localization?: string`\n A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n - `t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'`\n This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.<br/><br/> By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite.\n\n- `password?: string`\n The password to be used as part of the credentials. Must be 8 to 128 characters long.\n\n- `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `capture_enabled?: boolean`\n BETA - Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal.\n - `port?: 'rtcp-mux' | 'rtp+1'`\n RTCP port by default is rtp+1, it can also be set to rtcp-mux\n - `report_frequency_secs?: number`\n RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds.\n\n- `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).\n\n- `tags?: string[]`\n Tags associated with the connection.\n\n- `user_name?: string`\n The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).\n\n- `webhook_api_version?: '1' | '2'`\n Determines which webhook format will be used, Telnyx API v1 or v2.\n\n- `webhook_event_failover_url?: string`\n The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.\n\n- `webhook_event_url?: string`\n The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.\n\n- `webhook_timeout_secs?: number`\n Specifies how many seconds to wait before timing out a webhook.\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: object[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: object; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: object; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: object; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.update('id');\n\nconsole.log(uacConnection);\n```",
50063
+ markdown: "## update\n\n`client.uacConnections.update(id: string, active?: boolean, anchorsite_override?: string, android_push_credential_id?: string, call_cost_in_webhooks?: boolean, connection_name?: string, default_on_hold_comfort_noise_enabled?: boolean, dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO', encode_contact_header_enabled?: boolean, encrypted_media?: 'SRTP', external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }, inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }, internal_uac_settings?: { destination_uri?: string; }, ios_push_credential_id?: string, jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }, noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled', noise_suppression_details?: { attenuation_limit?: number; engine?: string; }, onnet_t38_passthrough_enabled?: boolean, outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }, password?: string, rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }, sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal', tags?: string[], user_name?: string, webhook_api_version?: '1' | '2', webhook_event_failover_url?: string, webhook_event_url?: string, webhook_timeout_secs?: number): { data?: uac_connection; }`\n\n**patch** `/uac_connections/{id}`\n\nUpdates settings of an existing UAC connection.\n\n### Parameters\n\n- `id: string`\n\n- `active?: boolean`\n Defaults to true\n\n- `anchorsite_override?: string`\n `Latency` directs Telnyx to route media through the site with the lowest round-trip time to the user's connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle all media.\n\n- `android_push_credential_id?: string`\n The uuid of the push credential for Android\n\n- `call_cost_in_webhooks?: boolean`\n Specifies if call cost webhooks should be sent for this connection.\n\n- `connection_name?: string`\n A user-assigned name to help manage the connection.\n\n- `default_on_hold_comfort_noise_enabled?: boolean`\n When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you will need to generate comfort noise or on hold music to avoid RTP timeout.\n\n- `dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'`\n Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx will be accepted in all formats.\n\n- `encode_contact_header_enabled?: boolean`\n Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.\n\n- `encrypted_media?: 'SRTP'`\n Enable use of SRTP for encryption. Cannot be set if the transport_portocol is TLS.\n\n- `external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }`\n External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls.\n - `auth_username?: string`\n The authentication username used in SIP digest authentication. If not set, the Username value will be used.\n - `expiration_sec?: number`\n The registration interval, in seconds, indicating how often the system refreshes the SIP registration with the external SIP peer.\n - `from_user?: string`\n The user portion of the SIP From header used in outbound requests. This controls the caller identity presented to the external SIP peer.\n - `outbound_proxy?: string`\n An optional SIP proxy used to route outbound requests before reaching the external SIP peer.\n - `password?: string`\n The SIP password used for digest authentication with the external SIP peer.\n - `proxy?: string`\n The SIP proxy address of the external SIP peer used for registrations and outbound call routing.\n - `transport?: 'UDP' | 'TLS' | 'TCP'`\n The transport protocol used for SIP signaling when communicating with the external SIP peer. One of UDP, TLS, or TCP.\n - `username?: string`\n The SIP username used to authenticate with the external SIP peer for registrations and outbound calls. Must start with a letter or number and contain only letters, numbers, hyphens, and underscores.\n\n- `inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }`\n Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters.\n - `ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'`\n This setting allows you to set the format with which the caller's number (ANI) is sent for inbound phone calls.\n - `channel_limit?: number`\n When set, this will limit the total number of inbound calls to phone numbers associated with this connection.\n - `codecs?: string[]`\n Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal account, in priority order. This only works when the Connection the number is assigned to uses Media Handling mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.\n - `default_routing_method?: 'sequential' | 'round-robin'`\n Default routing method to be used when a number is associated with the connection. Must be one of the routing method types or left blank, other values are not allowed.\n - `dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'`\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `isup_headers_enabled?: boolean`\n When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and only when using TCP or TLS transport.)\n - `prack_enabled?: boolean`\n Enable PRACK messages as defined in RFC3262.\n - `shaken_stir_enabled?: boolean`\n When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE message of inbound calls, even when using UDP transport.\n - `simultaneous_ringing?: 'disabled' | 'enabled'`\n When enabled, allows multiple devices to ring simultaneously on incoming calls.\n - `sip_compact_headers_enabled?: boolean`\n Defaults to true.\n - `timeout_1xx_secs?: number`\n Time(sec) before aborting if connection is not made.\n - `timeout_2xx_secs?: number`\n Time(sec) before aborting if call is unanswered (min: 1, max: 600).\n\n- `internal_uac_settings?: { destination_uri?: string; }`\n Internal Telnyx-side settings for a UAC connection.\n - `destination_uri?: string`\n The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include a `sip:` prefix. The value must be in the format `userinfo@<subdomain.>sip.telnyx.com` or `userinfo@<subdomain.>sipdev.telnyx.com`; the userinfo portion may contain only letters, digits, hyphens, and underscores.\n\n- `ios_push_credential_id?: string`\n The uuid of the push credential for Ios\n\n- `jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }`\n Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter and reordering.\n - `enable_jitter_buffer?: boolean`\n Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.\n - `jitterbuffer_msec_max?: number`\n The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n - `jitterbuffer_msec_min?: number`\n The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer is not true.\n\n- `noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'`\n Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both directions. When set to 'disabled', noise suppression is turned off.\n\n- `noise_suppression_details?: { attenuation_limit?: number; engine?: string; }`\n Configuration options for noise suppression. These settings are stored regardless of the noise_suppression value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable it, the previously configured settings will be used.\n - `attenuation_limit?: number`\n The attenuation limit value for the selected engine. Default values vary by engine: 0 for 'denoiser', 80 for 'deep_filter_net', 'deep_filter_net_large', and all Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss'), 100 for 'quail_voice_focus'.\n - `engine?: string`\n The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large' are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite', 'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides Quail-based voice focus noise suppression.\n\n- `onnet_t38_passthrough_enabled?: boolean`\n Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each leg's settings.\n\n- `outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }`\n - `ani_override?: string`\n Set a phone number as the ani_override value to override caller id number on outbound calls.\n - `ani_override_type?: 'always' | 'normal' | 'emergency'`\n Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.\n - `call_parking_enabled?: boolean`\n Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command to define which action will be taken next.\n - `channel_limit?: number`\n When set, this will limit the total number of outbound calls to phone numbers associated with this connection.\n - `generate_ringback_tone?: boolean`\n Generate ringback tone through 183 session progress message with early media.\n - `instant_ringback_enabled?: boolean`\n When set, ringback will not wait for indication before sending ringback tone to calling party.\n - `localization?: string`\n A 2-character country code specifying the country whose national dialing rules should be used. For example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank, Telnyx will try US and GB dialing rules, in that order, by default.\n - `outbound_voice_profile_id?: string`\n Identifies the associated outbound voice profile.\n - `t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'`\n This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether or not Telnyx sends a t.38 reinvite.<br/><br/> By default, Telnyx will send the re-invite. If set to `customer`, the caller is expected to send the t.38 reinvite.\n\n- `password?: string`\n The password to be used as part of the credentials. Must be 8 to 128 characters long.\n\n- `rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }`\n - `capture_enabled?: boolean`\n BETA - Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control Portal.\n - `port?: 'rtcp-mux' | 'rtp+1'`\n RTCP port by default is rtp+1, it can also be set to rtcp-mux\n - `report_frequency_secs?: number`\n RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be set to values from 5 to 3000 seconds.\n\n- `sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'`\n This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted) then anyone who calls the SIP URI <your-username>@telnyx.com will be connected to your Connection. You can also choose to allow only calls that are originated on any Connections under your account (internal).\n\n- `tags?: string[]`\n Tags associated with the connection.\n\n- `user_name?: string`\n The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric values only (no spaces or special characters).\n\n- `webhook_api_version?: '1' | '2'`\n Determines which webhook format will be used, Telnyx API v1 or v2.\n\n- `webhook_event_failover_url?: string`\n The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.\n\n- `webhook_event_url?: string`\n The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.\n\n- `webhook_timeout_secs?: number`\n Specifies how many seconds to wait before timing out a webhook.\n\n### Returns\n\n- `{ data?: { id?: string; active?: boolean; anchorsite_override?: anchorsite_override; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: dtmf_type; encode_contact_header_enabled?: boolean; encrypted_media?: encrypted_media; external_uac_settings?: uac_external_settings; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: fqdn[]; inbound?: uac_inbound; internal_uac_settings?: uac_internal_settings; ios_push_credential_id?: string; jitter_buffer?: connection_jitter_buffer; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: connection_noise_suppression_details; onnet_t38_passthrough_enabled?: boolean; outbound?: uac_outbound; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: connection_rtcp_settings; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }; }`\n\n - `data?: { id?: string; active?: boolean; anchorsite_override?: string; android_push_credential_id?: string; authentication?: 'uac-authentication'; call_cost_in_webhooks?: boolean; connection_name?: string; created_at?: string; default_on_hold_comfort_noise_enabled?: boolean; dtmf_type?: 'RFC 2833' | 'Inband' | 'SIP INFO'; encode_contact_header_enabled?: boolean; encrypted_media?: 'SRTP'; external_uac_settings?: { auth_username?: string; expiration_sec?: number; from_user?: string; outbound_proxy?: string; password?: string; proxy?: string; transport?: 'UDP' | 'TLS' | 'TCP'; username?: string; }; fqdn?: string; fqdn_outbound_authentication?: 'credential-authentication'; fqdns?: { id?: string; connection_id?: string; created_at?: string; dns_record_type?: string; fqdn?: string; port?: number; record_type?: string; updated_at?: string; }[]; inbound?: { ani_number_format?: '+E.164' | 'E.164' | '+E.164-national' | 'E.164-national'; channel_limit?: number; codecs?: string[]; default_routing_method?: 'sequential' | 'round-robin'; dnis_number_format?: '+e164' | 'e164' | 'national' | 'sip_username'; generate_ringback_tone?: boolean; isup_headers_enabled?: boolean; prack_enabled?: boolean; shaken_stir_enabled?: boolean; simultaneous_ringing?: 'disabled' | 'enabled'; sip_compact_headers_enabled?: boolean; sip_subdomain?: string; sip_subdomain_receive_settings?: 'only_my_connections' | 'from_anyone'; timeout_1xx_secs?: number; timeout_2xx_secs?: number; }; internal_uac_settings?: { destination_uri?: string; }; ios_push_credential_id?: string; jitter_buffer?: { enable_jitter_buffer?: boolean; jitterbuffer_msec_max?: number; jitterbuffer_msec_min?: number; }; noise_suppression?: 'inbound' | 'outbound' | 'both' | 'disabled'; noise_suppression_details?: { attenuation_limit?: number; engine?: string; }; onnet_t38_passthrough_enabled?: boolean; outbound?: { ani_override?: string; ani_override_type?: 'always' | 'normal' | 'emergency'; call_parking_enabled?: boolean; channel_limit?: number; generate_ringback_tone?: boolean; instant_ringback_enabled?: boolean; localization?: string; outbound_voice_profile_id?: string; t38_reinvite_source?: 'telnyx' | 'customer' | 'disabled' | 'passthru' | 'caller-passthru' | 'callee-passthru'; }; password?: string; record_type?: string; registration_status?: string; registration_status_updated_at?: string; rtcp_settings?: { capture_enabled?: boolean; port?: 'rtcp-mux' | 'rtp+1'; report_frequency_secs?: number; }; sip_uri_calling_preference?: 'disabled' | 'unrestricted' | 'internal'; tags?: string[]; updated_at?: string; user_name?: string; webhook_api_version?: '1' | '2'; webhook_event_failover_url?: string; webhook_event_url?: string; webhook_timeout_secs?: number; }`\n\n### Example\n\n```typescript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx();\n\nconst uacConnection = await client.uacConnections.update('id');\n\nconsole.log(uacConnection);\n```",
50065
50064
  perLanguage: {
50066
50065
  typescript: {
50067
50066
  method: 'client.uacConnections.update',