export type TelephonyDirection = 'inbound' | 'outbound'; export type ASRConversationalConfigOverride = {keywords?: (Array | null) | undefined}; export type SoftTimeoutConfigOverride = {message?: (string | null) | undefined, additional_soft_timeout_messages?: (Array | null) | undefined}; export type TurnConfigOverride = {soft_timeout_config?: (SoftTimeoutConfigOverride | null) | undefined, noisy_environment_message?: (string | null) | undefined}; export type TTSModelFamily = 'turbo' | 'flash' | 'multilingual' | 'v3_conversational' | 'v4' | 'v4_turbo'; export type TTSOptimizeStreamingLatency = 0 | 1 | 2 | 3 | 4; export type SupportedVoice = {label: string, voice_id: string, description?: (string | null) | undefined, language?: (string | null) | undefined, model_family?: (TTSModelFamily | null) | undefined, optimize_streaming_latency?: (TTSOptimizeStreamingLatency | null) | undefined, stability?: (number | null) | undefined, speed?: (number | null) | undefined, similarity_boost?: (number | null) | undefined, clone_strength?: (number | null) | undefined}; export type PydanticPronunciationDictionaryVersionLocator = {pronunciation_dictionary_id: string, version_id: string | null}; export type TTSConversationalConfigOverride = {model_id?: ('eleven_turbo_v2' | 'eleven_turbo_v2_5' | 'eleven_flash_v2' | 'eleven_flash_v2_5' | 'eleven_multilingual_v2' | 'eleven_v3_conversational' | 'eleven_v4' | 'eleven_v4_turbo' | null) | undefined, voice_id?: (string | null) | undefined, supported_voices?: (Array | null) | undefined, stability?: (number | null) | undefined, speed?: (number | null) | undefined, similarity_boost?: (number | null) | undefined, clone_strength?: (number | null) | undefined, pronunciation_dictionary_locators?: (Array | null) | undefined}; export type ConversationConfigOverride = {text_only?: (boolean | null) | undefined, max_duration_seconds?: (number | null) | undefined}; export type KnowledgeBaseDocumentType = 'file' | 'url' | 'text' | 'folder'; export type DocumentUsageModeEnum = 'prompt' | 'auto'; export type KnowledgeBaseLocator = {type: KnowledgeBaseDocumentType, name: string, id: string, usage_mode?: DocumentUsageModeEnum | undefined}; export type PromptAgentAPIModelOverrideInput = {prompt?: (string | null) | undefined, llm?: ('gpt-4o-mini' | 'gpt-4o' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-5' | 'gpt-5.1' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.5' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-6-astra' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-6.1-sol' | 'gpt-6.1-terra' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-3.5-turbo' | 'gemini-1.5-pro' | 'gemini-1.5-flash' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash' | 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-3.1-flash-lite' | 'gemini-3.5-flash' | 'gemini-3.5-flash-lite' | 'gemini-3.6-flash' | 'gemini-3.7-flash' | 'gemini-3.8-flash' | 'gemini-4-argon' | 'claude-sonnet-4-5' | 'claude-opus-4-6' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-opus-5' | 'claude-opus-5-5' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-sonnet-5-5' | 'claude-sonnet-4' | 'claude-haiku-4-5' | 'claude-haiku-5-5' | 'claude-3-7-sonnet' | 'claude-3-5-sonnet' | 'claude-3-5-sonnet-v1' | 'claude-3-haiku' | 'grok-beta' | 'custom-llm' | 'qwen3-4b' | 'qwen3-30b-a3b' | 'qwen36-35b-a3b' | 'qwen35-397b-a17b' | 'gpt-oss-20b' | 'gpt-oss-120b' | 'glm-45-air-fp8' | 'glm-52' | 'deepseek-v41-flash' | 'nemotron-35-super-vl-nvfp4' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-2.5-flash-lite-preview-09-2025' | 'gemini-2.5-flash-preview-05-20' | 'gemini-2.5-flash-preview-04-17' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-flash-001' | 'gemini-1.5-pro-002' | 'gemini-1.5-pro-001' | 'claude-sonnet-4@20250514' | 'claude-sonnet-4-5@20250929' | 'claude-haiku-4-5@20251001' | 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet@20240620' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-haiku@20240307' | 'gpt-5-2025-08-07' | 'gpt-5.1-2025-11-13' | 'gpt-5.2-2025-12-11' | 'gpt-5.4-2026-03-05' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.5-2026-04-23' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-05-13' | 'gpt-4-0613' | 'gpt-4-0314' | 'gpt-4-turbo-2024-04-09' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'watt-tool-8b' | 'watt-tool-70b' | null) | undefined, reasoning_effort?: ('none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | null) | undefined, tool_ids?: (Array | null) | undefined, tool_ids_strict?: (boolean | null) | undefined, native_mcp_server_ids?: (Array | null) | undefined, knowledge_base?: (Array | null) | undefined}; export type AgentConfigOverrideInput = {first_message?: (string | null) | undefined, language?: (string | null) | undefined, max_conversation_duration_message?: (string | null) | undefined, prompt?: (PromptAgentAPIModelOverrideInput | null) | undefined}; export type ConversationConfigClientOverrideInput = {asr?: (ASRConversationalConfigOverride | null) | undefined, turn?: (TurnConfigOverride | null) | undefined, tts?: (TTSConversationalConfigOverride | null) | undefined, conversation?: (ConversationConfigOverride | null) | undefined, agent?: (AgentConfigOverrideInput | null) | undefined}; export type ConversationInitiationSource = 'unknown' | 'android_sdk' | 'node_js_sdk' | 'react_native_sdk' | 'react_sdk' | 'js_sdk' | 'python_sdk' | 'widget' | 'sip_trunk' | 'twilio' | 'exotel' | 'genesys' | 'avaya' | 'audiocodes' | 'swift_sdk' | 'whatsapp' | 'twilio_sms' | 'flutter_sdk' | 'zendesk_integration' | 'slack_integration' | 'telegram_integration' | 'intercom_integration' | 'freshdesk_integration' | 'salesforce_integration' | 'template_preview' | 'genesys_bot_connector' | 'subagent_tool'; export type ConversationInitiationSourceInfo = {source?: (ConversationInitiationSource | null) | undefined, version?: (string | null) | undefined}; export type ConversationInitiationClientDataRequestInput = {conversation_config_override?: ConversationConfigClientOverrideInput | undefined, custom_llm_extra_body?: {[key: string]: unknown} | undefined, user_id?: (string | null) | undefined, source_info?: ConversationInitiationSourceInfo | undefined, branch_id?: (string | null) | undefined, environment?: (string | null) | undefined, starting_workflow_node_id?: (string | null) | undefined, procedure_ids?: (Array | null) | undefined, start_procedure_ids?: (Array | null) | undefined, dynamic_variables?: {[key: string]: unknown} | undefined}; export type BodyRegisterATwilioCallAndReturnTwiMLV1ConvaiTwilioRegisterCallPost = {agent_id: string, from_number: string, to_number: string, direction?: TelephonyDirection | undefined, conversation_initiation_client_data?: (ConversationInitiationClientDataRequestInput | null) | undefined}; export type CreateApiV1ConvaiTwilioRegisterCallArgs = {'xi-api-key'?: (string | null) | undefined, body: BodyRegisterATwilioCallAndReturnTwiMLV1ConvaiTwilioRegisterCallPost}; export type CreateApiV1ConvaiTwilioRegisterCallOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; /** * Register A Twilio Call And Return Twiml * * POST /v1/convai/twilio/register-call */ export const createApiV1ConvaiTwilioRegisterCall = async (args: CreateApiV1ConvaiTwilioRegisterCallArgs, options: CreateApiV1ConvaiTwilioRegisterCallOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "text/html") if (args['xi-api-key'] != null) headers.set("xi-api-key", String(args['xi-api-key'])) const url = `${baseUrl.replace(/\/+$/, '')}/v1/convai/twilio/register-call${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return res.text() };