> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# एजेंट ड्राफ़्ट बनाएं

POST https://api.elevenlabs.io/v1/convai/agents/{agent_id}/drafts
Content-Type: application/json

एजेंट के लिए नया ड्राफ़्ट बनाएं

Reference: https://elevenlabs.io/docs/api-reference/agents/drafts/create

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `agent_id` (string, required) — एजेंट की id। यह एजेंट बनाते समय लौटाई जाती है।

### Query parameters

- `branch_id` (string, required) — उपयोग करने के लिए एजेंट ब्रांच की ID

### Body (application/json)

This endpoint expects a Body_Create_agent_draft_v1_convai_agents__agent_id__drafts_post.

- `conversation_config` (map from string to any, required) — ड्राफ़्ट के लिए बातचीत कॉन्फ़िगरेशन
- `platform_settings` (map from string to any, required) — draft के लिए platform settings
- `workflow` (AgentWorkflowRequestModel, required) — ड्राफ़्ट के लिए वर्कफ़्लो
- `name` (string, required) — ड्राफ़्ट का नाम
- `tags` (list of string, optional, nullable) — एजेंट को वर्गीकृत और फ़िल्टर करने में मदद करने वाले टैग्स

## Response

### 200

सफल रिस्पॉन्स

- `any`

## Errors

### 422 Unprocessable Entity Error

वैलिडेशन एरर

- `detail` (list of ValidationError, optional)

## Types

### AgentWorkflowRequestModel

- `edges` (map from string to WorkflowEdgeModel-Input, optional)
- `nodes` (map from string to AgentWorkflowRequestModelNodes, optional)
- `prevent_subagent_loops` (boolean, optional, default: false) — क्या workflow एक्ज़ीक्यूशन में लूप रोकने हैं।

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### WorkflowEdgeModel-Input

- `source` (string, required) — स्रोत नोड की ID।
- `target` (string, required) — टारगेट नोड की ID।
- `forward_condition` (WorkflowEdgeModelInputForwardCondition, optional, nullable) — एज को आगे की दिशा (सोर्स से टारगेट) में ट्रैवर्स करने के लिए पूरी की जाने वाली शर्त।
- `backward_condition` (WorkflowEdgeModelInputBackwardCondition, optional, nullable) — एज को पीछे की दिशा (टारगेट से सोर्स) में ट्रैवर्स करने के लिए पूरी की जाने वाली शर्त।

### AgentWorkflowRequestModelNodes

- `type`: `end` (WorkflowEndNodeModel)
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `outcome` (enum, optional, default: success) — इस End नोड पर पहुंचने से बातचीत सफलता के रूप में समाप्त होती है या विफलता के रूप में।
    - Allowed values: `success`, `failure`
  - `position` (Position-Input, optional) — workflow में node की position।
- `type`: `override_agent` (WorkflowOverrideAgentNodeModel)
  - `label` (string, required) — पूरे UI में इस्तेमाल होने वाले नोड के लिए मानव-पठनीय लेबल।
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — अतिरिक्त नॉलेज बेस दस्तावेज़, जिनका एक्सेस सबएजेंट के पास है। इन्हें मुख्य एजेंट के दस्तावेज़ों के साथ इस्तेमाल किया जाएगा।
  - `additional_prompt` (string, optional) — इस subagent का विशिष्ट goal। इसे system prompt में जोड़ा जाएगा और इस विशेष context में agent के behavior को और बेहतर करने के लिए इस्तेमाल किया जा सकता है।
  - `additional_tool_ids` (list of string, optional) — उन अतिरिक्त टूल की ID जिनका सबएजेंट को एक्सेस है। इनका इस्तेमाल मुख्य एजेंट के टूल के अतिरिक्त किया जाएगा।
  - `conversation_config` (ConversationalConfigAPIModelWorkflowOverride-Input, optional) — सबएजेंट द्वारा बातचीत संचालित करने के दौरान लागू किए गए कॉन्फ़िगरेशन ओवरराइड।
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `entry_behavior` (enum, optional, default: auto) — यह तय करता है कि इस नोड को प्रवेश पर तुरंत रिस्पॉन्स जनरेट करना चाहिए या यूज़र इनपुट का इंतज़ार करना चाहिए। "auto" सेट होने पर, व्यवहार पिछले नोड के प्रकार के आधार पर तय होगा: "say" और "start" नोड्स के बाद "wait_for_user", अन्यथा "generate_immediately"।
    - Allowed values: `generate_immediately`, `wait_for_user`, `auto`
  - `position` (Position-Input, optional) — workflow में node की position।
- `type`: `phone_number` (WorkflowPhoneNumberNodeModel)
  - `transfer_destination` (WorkflowPhoneNumberNodeModelInputTransferDestination, required)
  - `custom_sip_headers` (list of WorkflowPhoneNumberNodeModelInputCustomSipHeadersItems, optional) — कॉल ट्रांसफ़र करते समय शामिल किए जाने वाले कस्टम SIP हेडर। हर हेडर स्टैटिक वैल्यू या डायनेमिक वेरिएबल रेफ़रेंस हो सकता है।
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `position` (Position-Input, optional) — workflow में node की position।
  - `post_dial_digits` (WorkflowPhoneNumberNodeModelInputPostDialDigits, optional, nullable) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।
  - `sip_refer_play_dialtone` (boolean, optional, default: true) — True होने पर, SIP REFER ट्रांसफ़र पूरा होने तक मूल कॉल लेग पर रिंगिंग टोन बजती है। टोन RTP के ज़रिए REFER निष्पादित करने वाले SIP peer तक भेजी जाती है, इसलिए अगर रिसीविंग सिस्टम (जैसे SBC या कॉन्टैक्ट सेंटर) को यह नहीं सुननी चाहिए तो इसे बंद करें। बंद होने पर, ट्रांसफ़र पूरा होने तक कॉलर को सन्नाटा सुनाई देता है। केवल SIP REFER ट्रांसफ़र के लिए।
  - `transfer_type` (enum, optional, default: conference)
    - Allowed values: `blind`, `conference`, `sip_refer`
  - `uui` (UUITransferConfig, optional, nullable) — SIP REFER ट्रांसफ़र के साथ अटैच करने के लिए User-to-User Information (RFC 7433)। यह ट्रांसफ़र सीमा के पार CRM आइडेंटिफ़ायर या एस्केलेशन कारण जैसे कॉल कॉन्टेक्स्ट को ले जाता है।
- `type`: `standalone_agent` (WorkflowStandaloneAgentNodeModel)
  - `agent_id` (string, optional, nullable) — उस एजेंट की ID जिसमें बातचीत ट्रांसफ़र करनी है। None का मतलब है मौजूदा एजेंट के भीतर ट्रांसफ़र।
  - `branch_id` (string, optional, nullable) — लक्ष्य एजेंट के लिए वैकल्पिक ब्रांच ID। None होने पर लक्ष्य एजेंट के ट्रैफ़िक डिप्लॉयमेंट का अनुसरण होता है, या node_id सेट होने पर उसकी मुख्य ब्रांच इस्तेमाल होती है।
  - `delay_ms` (integer, optional, default: 0) — बातचीत ट्रांसफ़र करने से पहले लागू किया जाने वाला कृत्रिम विलंब, मिलीसेकंड में।
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `enable_transferred_agent_first_message` (boolean, optional, default: false) — क्या ट्रांसफ़र किए गए एजेंट को ट्रांसफ़र के बाद अपना कॉन्फ़िगर किया गया पहला मैसेज भेजने की अनुमति देनी है।
  - `node_id` (string, optional, nullable) — गंतव्य एजेंट के workflow में वैकल्पिक लक्ष्य node ID। सेट होने पर, ट्रांसफ़र डिफ़ॉल्ट entry node की बजाय इस node से शुरू होता है।
  - `position` (Position-Input, optional) — workflow में node की position।
  - `preserve_client_tts_overrides` (boolean, optional, default: false) — तय करता है कि TTS क्लाइंट ओवरराइड्स को ट्रांसफ़र किए गए एजेंट पर लागू रखा जाए या नहीं।
  - `preserve_voice_settings` (boolean, optional, default: false) — निर्धारित करता है कि बेस वॉइस, TTS मॉडल और वॉइस सेटिंग्स ट्रांसफ़र किए गए एजेंट में ले जानी चाहिए या नहीं।
  - `transfer_message` (string, optional, nullable) — transfer शुरू होने से पहले user को भेजा जाने वाला वैकल्पिक message।
- `type`: `start` (WorkflowStartNodeModel)
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `position` (Position-Input, optional) — workflow में node की position।
- `type`: `tool` (WorkflowToolNodeModel)
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `position` (Position-Input, optional) — workflow में node की position।
  - `tools` (list of WorkflowToolLocator, optional) — समानांतर चलाए जाने वाले टूल की सूची। सभी टूल सफलतापूर्वक चलने पर पूरे नोड को सफल माना जाता है।
- `type`: `say` (WorkflowSayNodeModel)
  - `label` (string, required) — पूरे UI में इस्तेमाल होने वाले नोड के लिए मानव-पठनीय लेबल।
  - `message` (WorkflowSayNodeModelInputMessage, required) — इस नोड द्वारा बोला जाने वाला संदेश। सटीक टेक्स्ट के लिए `literal` इस्तेमाल करें या विवरण से LLM द्वारा संदेश जनरेट कराने के लिए `prompt` इस्तेमाल करें।
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — इस नोड द्वारा संदेश जनरेट करते समय LLM के लिए उपलब्ध नॉलेज बेस दस्तावेज़, एजेंट के दस्तावेज़ों के अलावा।
  - `additional_prompt` (string, optional) — सबएजेंट नोड्स के साथ एकरूपता के लिए स्वीकार किया जाता है, लेकिन इस्तेमाल नहीं होता। संदेश को `message.prompt` में लिखें या सिस्टम प्रॉम्प्ट को `conversation_config.agent.prompt.prompt` से बदलें।
  - `additional_tool_ids` (list of string, optional) — सबएजेंट नोड्स के साथ एकरूपता के लिए स्वीकार किया जाता है, लेकिन इस्तेमाल नहीं होता। say नोड टूल्स को कॉल नहीं कर सकता।
  - `conversation_config` (ConversationalConfigAPIModelWorkflowOverride-Input, optional) — इस नोड के बोलते समय लागू होने वाले कॉन्फ़िगरेशन ओवरराइड, जैसे वॉइस या प्रॉम्प्ट संदेशों के लिए LLM और सिस्टम प्रॉम्प्ट।
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `position` (Position-Input, optional) — workflow में node की position।
  - `wait_for_speech_completion` (boolean, optional, default: false) — true होने पर, संदेश पूरी तरह बोले जाने के बाद ही वर्कफ़्लो अगले नोड पर जाता है।
  - `wait_for_user_response` (boolean, optional, default: false) — true होने पर, नोड अपना संदेश बोलता है और आउटगोइंग एज का मूल्यांकन करने से पहले यूज़र के जवाब का इंतज़ार करता है, ताकि एज जवाब के आधार पर ब्रांच कर सकें। यूज़र के चुप रहने पर, टर्न टाइमआउट के बाद वर्कफ़्लो आगे बढ़ता है।
- `type`: `update_state` (WorkflowUpdateStateNodeModel)
  - `label` (string, required) — पूरे UI में इस्तेमाल होने वाले नोड के लिए मानव-पठनीय लेबल।
  - `updates` (list of WorkflowStateUpdate-Input, required) — वर्कफ़्लो के इस नोड पर पहुंचने पर लागू होने वाले स्टेट अपडेट। एक नोड अधिकतम 50 अपडेट स्वीकार करता है।
  - `edge_order` (list of string, optional) — outgoing edges के ID, जिस क्रम में उनका मूल्यांकन किया जाना चाहिए।
  - `position` (Position-Input, optional) — workflow में node की position।

### ValidationErrorLocItems

### WorkflowEdgeModelInputForwardCondition

एज को आगे की दिशा (सोर्स से टारगेट) में ट्रैवर्स करने के लिए पूरी की जाने वाली शर्त।

- `type`: `expression` (WorkflowExpressionConditionModel)
  - `expression` (ASTNode-Input, required) — मूल्यांकन करने के लिए expression।
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `llm` (WorkflowLLMConditionModel)
  - `condition` (string, required) — मूल्यांकन की जाने वाली शर्त
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `result` (WorkflowResultConditionModel)
  - `successful` (boolean, required) — क्या पहले निष्पादित tool node के सभी टूल सफलतापूर्वक निष्पादित हुए।
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `unconditional` (WorkflowUnconditionalModel)
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।

### WorkflowEdgeModelInputBackwardCondition

एज को पीछे की दिशा (टारगेट से सोर्स) में ट्रैवर्स करने के लिए पूरी की जाने वाली शर्त।

- `type`: `expression` (WorkflowExpressionConditionModel)
  - `expression` (ASTNode-Input, required) — मूल्यांकन करने के लिए expression।
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `llm` (WorkflowLLMConditionModel)
  - `condition` (string, required) — मूल्यांकन की जाने वाली शर्त
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `result` (WorkflowResultConditionModel)
  - `successful` (boolean, required) — क्या पहले निष्पादित tool node के सभी टूल सफलतापूर्वक निष्पादित हुए।
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।
- `type`: `unconditional` (WorkflowUnconditionalModel)
  - `label` (string, optional, nullable) — पूरे UI में इस्तेमाल की जाने वाली condition के लिए वैकल्पिक human-readable label।

### Position-Input

- `x` (double, optional, default: 0)
- `y` (double, optional, default: 0)

### KnowledgeBaseLocator

- `type` (enum, required) — नॉलेज बेस का टाइप
  - Allowed values: `file`, `url`, `text`, `folder`
- `name` (string, required) — knowledge base का नाम
- `id` (string, required) — नॉलेज बेस की ID
- `usage_mode` (enum, optional, default: auto) — नॉलेज बेस का उपयोग मोड
  - Allowed values: `prompt`, `auto`

### ConversationalConfigAPIModelWorkflowOverride-Input

- `asr` (ASRConversationalConfigWorkflowOverride, optional, nullable) — कन्वर्सेशनल ट्रांसक्रिप्शन के लिए कॉन्फ़िगरेशन
- `turn` (TurnConfigWorkflowOverride, optional, nullable) — टर्न डिटेक्शन के लिए कॉन्फ़िगरेशन
- `tts` (TTSConversationalConfigWorkflowOverride-Input, optional, nullable) — कन्वर्सेशनल टेक्स्ट टू स्पीच के लिए कॉन्फ़िगरेशन
- `conversation` (ConversationConfigWorkflowOverride-Input, optional, nullable) — कन्वर्सेशनल इवेंट के लिए कॉन्फ़िगरेशन
- `language_presets` (map from string to LanguagePreset-Input, optional, nullable) — बातचीत के लिए भाषा प्रीसेट्स
- `vad` (VADConfigWorkflowOverride, optional, nullable) — वॉइस एक्टिविटी डिटेक्शन के लिए कॉन्फ़िगरेशन
- `agent` (AgentConfigAPIModelWorkflowOverride-Input, optional, nullable) — एजेंट-विशिष्ट कॉन्फ़िगरेशन

### WorkflowPhoneNumberNodeModelInputTransferDestination

- `type`: `phone` (PhoneNumberTransferDestination)
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable` (PhoneNumberDynamicVariableTransferDestination)
  - `phone_number` (string, required)
- `type`: `sip_uri` (SIPUriTransferDestination)
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable` (SIPUriDynamicVariableTransferDestination)
  - `sip_uri` (string, required)

### WorkflowPhoneNumberNodeModelInputCustomSipHeadersItems

- `type`: `dynamic` (CustomSIPHeaderWithDynamicVariable)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — हेडर वैल्यू

### WorkflowPhoneNumberNodeModelInputPostDialDigits

कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')

### UUITransferConfig

SIP REFER ट्रांसफ़र के लिए User-to-User Information envelope (RFC 7433)। आउटबाउंड payloads hex-encoded होते हैं (RFC 7433 में परिभाषित एकमात्र encoding)। protocol discriminator axis की मदद से हर प्लेटफ़ॉर्म के फ़ॉर्मैट (Talkdesk, Genesys, ...) बिखरे हुए ट्रांसफ़र फ़्लैग्स की जगह कॉन्फ़िगरेशन से व्यक्त किए जा सकते हैं। अतिरिक्त axes (ASCII encoding, header name, purpose/content parameters) को ट्रांसफ़र मॉडल में बदलाव किए बिना यहां जोड़ा जा सकता है।

- `data` (string, required) — SIP REFER ट्रांसफ़र पर भेजने के लिए UUI payload। इनलाइन डायनामिक वेरिएबल समर्थित हैं और ट्रांसफ़र के समय इसे hex-encoded किया जाता है।
- `protocol_discriminator` (string, optional, nullable) — वैकल्पिक one-octet protocol discriminator (दो hex digits, जैसे '00')। Genesys Cloud जैसे platforms के लिए आवश्यक है, जो अन्यथा payload का पहला octet हटा देते हैं। bare hex payload अपेक्षित करने वाले Talkdesk जैसे platforms के लिए इसे सेट न करें।
- `protocol_discriminator_mode` (enum, optional, default: prefix) — protocol\_discriminator कैसे अटैच करना है। 'prefix' ऑक्टेट को hex पेलोड के आगे जोड़ता है (User-to-User=XX\<hex>;encoding=hex)। 'pd\_parameter' इसे अलग पैरामीटर के रूप में भेजता है (User-to-User=\<hex>;pd=XX;encoding=hex)। protocol\_discriminator सेट न होने पर इसे अनदेखा किया जाता है।
  - Allowed values: `prefix`, `pd_parameter`

### WorkflowToolLocator

- `tool_id` (string, required)
- `schema_overrides` (map from string to WorkflowToolLocatorSchemaOverrides, optional, nullable) — tool के अपने configuration के ऊपर लागू प्रति-node parameter overrides। Keys dotted parameter paths हैं (webhook tools keys के आगे path_params./query_params./request_body. लगाते हैं)। ये tool पर पहले से तय किसी भी overrides पर प्राथमिकता लेते हैं।

### WorkflowSayNodeModelInputMessage

इस नोड द्वारा बोला जाने वाला संदेश। सटीक टेक्स्ट के लिए `literal` इस्तेमाल करें या विवरण से LLM द्वारा संदेश जनरेट कराने के लिए `prompt` इस्तेमाल करें।

- `type`: `literal` (SayNodeLiteralMessage)
  - `text` (string, required) — एजेंट द्वारा बोला जाने वाला सटीक टेक्स्ट। `{{variable_name}}` डायनामिक वेरिएबल प्लेसहोल्डर समर्थित हैं।
  - `text_translations` (map from string to TranslatedString, optional) — `text` के अनुवाद, जो भाषा कोड के आधार पर व्यवस्थित हैं। जब बातचीत की भाषा के लिए कोई एंट्री होती है, तो `text` की जगह उसका मान बोला जाता है।
- `type`: `prompt` (SayNodePromptMessage)
  - `prompt` (string, required) — उस संदेश का विवरण जो LLM को जनरेट करना चाहिए। इस नोड के सक्रिय रहने पर इसे एजेंट के सिस्टम प्रॉम्प्ट में जोड़ा जाता है।

### WorkflowStateUpdate-Input

- `variable_name` (string, required) — असाइन किए जाने वाले डायनामिक वेरिएबल का नाम।
- `expression` (ASTNode-Input, required) — वह एक्सप्रेशन जिसका परिणाम वेरिएबल को असाइन किया जाता है। इसमें कॉन्स्टेंट, अन्य डायनामिक वेरिएबल, LLM से निकाली गई वैल्यू और ऑपरेटर शामिल हो सकते हैं।
- `type` ("dynamic_variable", optional, default: dynamic_variable)
- `required` (boolean, optional, default: true) — false होने पर, LLM उन वैल्यू को छोड़ सकता है जिन पर यह अपडेट निर्भर करता है। तब अपडेट छोड़ दिया जाता है और वेरिएबल अपनी मौजूदा वैल्यू बनाए रखता है।

### ASTNode-Input

- `type`: `add_operator` (ASTAdditionOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `and_operator` (ASTAndOperatorNode)
  - `children` (list of ASTNode-Input, required) — लॉजिकल ऑपरेटर के चाइल्ड नोड।
- `type`: `boolean_literal` (ASTBooleanNode)
  - `value` (boolean, required) — इस literal की वैल्यू।
- `type`: `conditional_operator` (ASTConditionalOperatorNode)
  - `condition` (ASTNode-Input, required) — कौन-सा एक्सप्रेशन चुना जाए, यह तय करने वाली शर्त।
  - `falseExpression` (ASTNode-Input, required) — शर्त false होने पर चुना गया expression।
  - `trueExpression` (ASTNode-Input, required) — शर्त true होने पर चुना गया expression।
- `type`: `div_operator` (ASTDivisionOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `dynamic_variable` (ASTDynamicVariableNode)
  - `name` (string, required) — dynamic variable का नाम।
- `type`: `eq_operator` (ASTEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `gt_operator` (ASTGreaterThanOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `gte_operator` (ASTGreaterThanOrEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `llm` (llm)
- `type`: `lt_operator` (ASTLessThanOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `lte_operator` (ASTLessThanOrEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `mul_operator` (ASTMultiplicationOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `neq_operator` (ASTNotEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।
- `type`: `null_literal` (ASTNullNode)
- `type`: `number_literal` (ASTNumberNode)
  - `value` (AstNumberNodeInputValue, required) — इस literal की वैल्यू।
- `type`: `or_operator` (ASTOrOperatorNode)
  - `children` (list of ASTNode-Input, required) — लॉजिकल ऑपरेटर के चाइल्ड नोड।
- `type`: `string_literal` (ASTStringNode)
  - `value` (string, required) — इस literal की वैल्यू।
- `type`: `sub_operator` (ASTSubtractionOperatorNode)
  - `left` (ASTNode-Input, required) — बाइनरी ऑपरेटर का बायां ऑपरेंड।
  - `right` (ASTNode-Input, required) — बाइनरी ऑपरेटर का दायां ऑपरेंड।

### ASRConversationalConfigWorkflowOverride

- `quality` (enum, optional, nullable, default: high) — ट्रांसक्रिप्शन की क्वालिटी
  - Allowed values: `high`
- `provider` (enum, optional, nullable, default: scribe_realtime) — ट्रांसक्रिप्शन सेवा का प्रदाता
  - Allowed values: `elevenlabs`, `scribe_realtime`, `scribe_v2_turbo`
- `user_input_audio_format` (enum, optional, nullable, default: pcm_16000) — ट्रांसक्राइब किए जाने वाले ऑडियो का फ़ॉर्मैट
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `keywords` (list of string, optional, nullable) — जिनके लिए अनुमान की संभावना बढ़ानी है वे कीवर्ड्स

### TurnConfigWorkflowOverride

- `turn_timeout` (double, optional, nullable) — यूज़र से दोबारा संपर्क करने से पहले उसके जवाब की प्रतीक्षा का अधिकतम समय
- `initial_wait_time` (double, optional, nullable) — पहला मैसेज खाली होने पर एजेंट यूज़र के बातचीत शुरू करने का कितनी देर इंतज़ार करेगा। सेट न होने पर सामान्य turn_timeout इस्तेमाल होता है।
- `silence_end_call_timeout` (double, optional, nullable) — कॉल समाप्त करने से पहले यूज़र के आखिरी बार बोलने के बाद प्रतीक्षा का अधिकतम समय
- `turn_eagerness` (enum, optional, nullable, default: normal) — यह नियंत्रित करता है कि एजेंट जवाब देने के लिए कितना तत्पर है। Low = कम तत्पर (ज़्यादा देर इंतज़ार करता है), Standard = डिफ़ॉल्ट तत्परता, High = अधिक तत्पर (जल्दी जवाब देता है)
  - Allowed values: `patient`, `normal`, `eager`
- `spelling_patience` (enum, optional, nullable, default: auto) — जब यूज़र संख्याओं और नामित इकाइयों की स्पेलिंग बता रहा हो, तब एजेंट को ज़्यादा धैर्य रखना चाहिए या नहीं, यह नियंत्रित करता है। Auto = मॉडल आधारित, Off = कभी अतिरिक्त प्रतीक्षा नहीं
  - Allowed values: `auto`, `off`
- `speculative_turn` (boolean, optional, nullable) — सक्षम होने पर, पूरी turn confidence हासिल होने से पहले चुप्पी के दौरान LLM रिस्पॉन्स जनरेट करना शुरू करता है, जिससे महसूस होने वाली latency कम होती है। LLM लागत बढ़ सकती है।
- `retranscribe_on_turn_timeout` (boolean, optional, nullable) — सक्षम होने पर, अगर VAD को कोई स्पीच नहीं मिलती, तो टर्न टाइमआउट पर जमा हुए ऑडियो को फिर से ट्रांसक्राइब करने की कोशिश करता है। सक्रिय एजेंट या workflow नोड के लिए सक्षम रहने तक साइलेंस डिस्काउंट बिलिंग बंद रहती है।
- `turn_model` (enum, optional, nullable, default: turn_v3) — इस्तेमाल करने के लिए turn detection मॉडल का वर्ज़न।
  - Allowed values: `turn_v2`, `turn_v3`
- `interruption_ignore_terms` (list of string, optional, nullable) — उन शब्दों की सूची, जिन्हें यूज़र के बोलने पर इंटरप्शन ट्रिगर नहीं होना चाहिए (जैसे, 'gotcha', 'understood')। केस-इनसेंसिटिव सटीक मिलान इस्तेमाल करता है।
- `interruption_ignore_term_languages` (list of string, optional, nullable) — वे भाषा कोड जिनके लिए प्रीसेट ignore-term श्रेणियां सक्रिय की गई हैं। इन्हें स्पष्ट रूप से स्टोर किया जाता है, ताकि डिस्प्ले का अनुमान शब्दों के ओवरलैप से न लगाया जाए।
- `merge_with_default_ignore_terms` (boolean, optional, nullable) — सक्षम होने पर, interruption_ignore_terms के अलावा interruption_ignore_term_languages के क्यूरेट किए गए डिफ़ॉल्ट terms भी इस्तेमाल होते हैं।
- `transcribe_on_disabled_interruptions` (boolean, optional, nullable) — इंटरप्शन बंद होने पर भी यूज़र की बात को ट्रांसक्राइब करें, ताकि उसे अगले टर्न में शामिल किया जा सके। बंद होने पर, जिस टर्न में इंटरप्शन नहीं हो सकता उसमें यूज़र की आवाज़ अनदेखी की जाती है और नया टर्न ट्रिगर नहीं होता।
- `soft_timeout_config` (SoftTimeoutConfigWorkflowOverride, optional, nullable) — सॉफ्ट टाइमआउट सुविधा के लिए कॉन्फ़िगरेशन। लंबे LLM रिस्पॉन्स के दौरान तुरंत फ़ीडबैक देता है।

### TTSConversationalConfigWorkflowOverride-Input

- `model_id` (enum, optional, nullable, default: eleven_v4_turbo) — TTS के लिए इस्तेमाल किया जाने वाला मॉडल
  - Allowed values: `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`
- `voice_id` (string, optional, nullable) — TTS के लिए इस्तेमाल की जाने वाली वॉइस ID
- `supported_voices` (list of SupportedVoice, optional, nullable) — एजेंट के लिए अतिरिक्त समर्थित वॉइसेज़
- `expressive_mode` (boolean, optional, nullable) — सक्षम होने पर, expressive audio tags prompt लागू करता है। गैर-v3 मॉडल्स के लिए यह अपने-आप बंद हो जाता है।
- `suggested_audio_tags` (list of SuggestedAudioTag, optional, nullable) — भावपूर्ण स्पीच को बेहतर बनाने के लिए सुझाए गए ऑडियो टैग्स (eleven_v3 और eleven_v3_conversational मॉडल के लिए)। एजेंट यहाँ सूचीबद्ध न किए गए अन्य टैग्स भी इस्तेमाल कर सकता है।
- `agent_output_audio_format` (enum, optional, nullable, default: pcm_16000) — TTS के लिए इस्तेमाल किया जाने वाला ऑडियो फ़ॉर्मैट
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `optimize_streaming_latency` (enum, optional, nullable) — डीप्रिकेटेड: यह फ़ील्ड कोई काम नहीं करता और अनदेखा किया जाता है।
  - Allowed values: `0`, `1`, `2`, `3`, `4`
- `stability` (double, optional, nullable) — जनरेट की गई स्पीच की स्थिरता
- `speed` (double, optional, nullable) — जनरेट की गई स्पीच की गति
- `similarity_boost` (double, optional, nullable) — जनरेट की गई स्पीच के लिए सिमिलैरिटी बूस्ट
- `text_normalisation_type` (enum, optional, nullable, default: system_prompt) — टेक्स्ट को स्पीच में बदलने से पहले संख्याओं को शब्दों में बदलने का तरीका। SYSTEM_PROMPT पर सेट होने पर, नॉर्मलाइज़ेशन निर्देश शामिल करने के लिए सिस्टम प्रॉम्प्ट अपडेट होगा। ELEVENLABS पर सेट होने पर, जनरेशन के बाद टेक्स्ट नॉर्मलाइज़ किया जाएगा, जिससे थोड़ी अतिरिक्त लेटेंसी होगी।
  - Allowed values: `system_prompt`, `elevenlabs`
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional, nullable) — उच्चारण शब्दकोश लोकेटर्स
- `enable_phoneme_tags` (boolean, optional, nullable) — V3 models के लिए SSML phoneme tag handling को opt-in करें। सक्षम होने पर phoneme tags (inline और pronunciation dictionaries से) को model पर भेजने से पहले inline IPA में parse किया जाता है।
- `audio_effects` (EffectsSpec-Input, optional, nullable) — वैकल्पिक TTS effects spec: filter preset, दूरी (proximity EQ), और environment (convolution reverb)।

### ConversationConfigWorkflowOverride-Input

- `text_only` (boolean, optional, nullable) — इसे सक्षम करने पर ऑडियो प्रोसेस नहीं होगा और केवल टेक्स्ट का इस्तेमाल होगा। ऑडियो की कीमत से बचने के लिए इसका इस्तेमाल करें।
- `max_duration_seconds` (integer, optional, nullable) — बातचीत की अधिकतम अवधि, सेकंड में
- `client_events` (list of enum, optional, nullable) — वे इवेंट्स जो क्लाइंट को भेजे जाएंगे
  - Allowed values: `conversation_initiation_metadata`, `asr_initiation_metadata`, `ping`, `audio`, `interruption`, `user_transcript`, `tentative_user_transcript`, `agent_response`, `agent_response_correction`, `client_tool_call`, `mcp_tool_call`, `mcp_connection_status`, `agent_tool_request`, `agent_tool_response`, `agent_tool_response_full_payload`, `agent_response_metadata`, `vad_score`, `agent_chat_response_part`, `client_error`, `guardrail_triggered`, `dtmf_request`, `agent_response_complete`, `context_usage`, `internal_turn_probability`, `internal_tentative_agent_response`
- `file_input` (FileInputConfigWorkflowOverride, optional, nullable) — बातचीत के दौरान फ़ाइल इनपुट (इमेज/PDF अपलोड) के लिए कॉन्फ़िगरेशन।
- `monitoring_enabled` (boolean, optional, nullable) — WebSocket के ज़रिए बातचीत की रीयल-टाइम मॉनिटरिंग सक्षम करें
- `monitoring_events` (list of enum, optional, nullable) — वे इवेंट्स जो मॉनिटरिंग कनेक्शंस को भेजे जाएंगे।
  - Allowed values: `conversation_initiation_metadata`, `asr_initiation_metadata`, `ping`, `audio`, `interruption`, `user_transcript`, `tentative_user_transcript`, `agent_response`, `agent_response_correction`, `client_tool_call`, `mcp_tool_call`, `mcp_connection_status`, `agent_tool_request`, `agent_tool_response`, `agent_tool_response_full_payload`, `agent_response_metadata`, `vad_score`, `agent_chat_response_part`, `client_error`, `guardrail_triggered`, `dtmf_request`, `agent_response_complete`, `context_usage`, `internal_turn_probability`, `internal_tentative_agent_response`
- `dtmf_input_settings` (DTMFInputConfig, optional, nullable) — फ़ोन कॉल के दौरान DTMF (कीपैड) इनपुट कलेक्शन कॉन्फ़िगर करें
- `background_sound` (BackgroundSoundConfigWorkflowOverride, optional, nullable) — बातचीत के दौरान बैकग्राउंड साउंड के लिए कॉन्फ़िगरेशन।
- `source_attribution` (boolean, optional, nullable) — सक्षम होने और नॉलेज बेस कॉन्टेंट मौजूद होने पर, LLM को यह बताने का निर्देश दिया जाता है कि उसने किन सोर्सेज़ का इस्तेमाल किया।

### LanguagePreset-Input

- `overrides` (ConversationConfigClientOverride-Input, required) — भाषा प्रीसेट के लिए ओवरराइड्स
- `first_message_translation` (LanguagePresetTranslation, optional, nullable) — पहले मैसेज का अनुवाद
- `soft_timeout_translation` (LanguagePresetTranslation, optional, nullable) — सॉफ्ट टाइमआउट मैसेज का अनुवाद

### VADConfigWorkflowOverride

### AgentConfigAPIModelWorkflowOverride-Input

- `first_message` (string, optional, nullable) — खाली न होने पर, एजेंट का पहला संदेश। खाली होने पर एजेंट चर्चा शुरू करने के लिए यूज़र का इंतज़ार करता है।
- `language` (string, optional, nullable) — एजेंट की भाषा — ASR और TTS के लिए इस्तेमाल होती है
- `hinglish_mode` (boolean, optional, nullable) — सक्षम होने पर, एजेंट हिंदी, मलयालम, तेलुगु या कन्नड़ में जवाबों के साथ अंग्रेज़ी शब्द और वाक्यांश मिलाता है।
- `dynamic_variables` (DynamicVariablesConfigWorkflowOverride, optional, nullable) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
- `disable_first_message_interruptions` (boolean, optional, nullable) — अगर true है, तो पहला संदेश दिए जाने के दौरान यूज़र एजेंट को बाधित नहीं कर सकेगा।
- `max_conversation_duration_message` (string, optional, nullable) — खाली न होने पर, अधिकतम बातचीत अवधि पूरी होने पर एजेंट द्वारा भेजा जाने वाला संदेश।
- `text_behavior_overrides` (map from string to BehaviorOverride, optional, nullable) — text conversations के लिए प्रति-channel response behavior overrides। सेट न होने पर built-in channel defaults लागू होते हैं।
- `prompt` (PromptAgentAPIModelWorkflowOverride-Input, optional, nullable) — एजेंट के लिए प्रॉम्प्ट

### WorkflowToolLocatorSchemaOverrides

- `source`: `constant` (ConstantSchemaOverride)
  - `constant_value` (WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue, required, nullable) — इस्तेमाल किया जाने वाला कॉन्स्टेंट मान
- `source`: `dynamic_variable` (DynamicVariableSchemaOverride)
  - `dynamic_variable` (string, required) — इस्तेमाल किए जाने वाले dynamic variable का नाम
- `source`: `llm` (LLMSchemaOverride)
  - `prompt` (string, optional, nullable) — LLM के लिए प्रॉम्प्ट ओवरराइड। न देने पर, मूल schema विवरण इस्तेमाल किया जाता है।
- `source`: `omit` (OmitSchemaOverride)

### TranslatedString

- `value` (string, required)

### AstNumberNodeInputValue

इस literal की वैल्यू।

### SoftTimeoutConfigWorkflowOverride

- `timeout_seconds` (double, optional, nullable) — LLM के जवाब की प्रतीक्षा के दौरान पहले से तय संदेश दिखाने से पहले का समय, सेकंड में। बंद करने के लिए -1 सेट करें।
- `message` (string, optional, nullable) — LLM जवाब की प्रतीक्षा के दौरान पहला सॉफ्ट टाइमआउट होने पर दिखाया जाने वाला संदेश। डायनामिक वेरिएबल समर्थित हैं (जैसे, \{\{system\_\_time}}, \{\{custom\_variable}})।
- `additional_soft_timeout_messages` (list of string, optional, nullable) — उसी LLM जनरेशन में बाद के soft timeout के लिए अतिरिक्त स्थिर filler संदेश। पहला timeout `message` का उपयोग करता है। यदि कॉन्फ़िगर किए गए संदेश `max_soft_timeouts_per_generation` से कम हैं, तो आखिरी कॉन्फ़िगर किया गया संदेश दोहराया जाता है; अन्यथा built-in filler इस्तेमाल होता है।
- `use_llm_generated_message` (boolean, optional, nullable) — सक्षम होने पर, स्थिर संदेश के बजाय soft timeout संदेश को डाइनैमिक रूप से जनरेट किया जाएगा।
- `randomize_fillers` (boolean, optional, nullable) — सक्षम होने पर, हर टर्न की शुरुआत में स्थिर soft timeout संदेशों का क्रम एक बार बदलें। यह केवल तब लागू होता है जब use_llm_generated_message false हो।
- `max_soft_timeouts_per_generation` (integer, optional, nullable) — एक LLM जवाब की प्रतीक्षा के दौरान अधिकतम फिलर संदेश। LLM के कंटेंट स्ट्रीम करने या यह सीमा पूरी होने तक हर timeout_seconds पर ट्रिगर होता है।
- `llm_generated_message_prompt_override` (string, optional, nullable) — use\_llm\_generated\_message सक्षम होने पर सॉफ्ट टाइमआउट फ़िलर संदेश बनाने के लिए कस्टम प्रॉम्प्ट। हाल की बातचीत का संदर्भ अलग यूज़र संदेश के रूप में दिया जाता है। सेट न होने पर डिफ़ॉल्ट प्रॉम्प्ट इस्तेमाल होगा। डायनेमिक वेरिएबल्स का समर्थन करता है (जैसे, \{\{system\_\_time}}, \{\{custom\_variable}})।
- `disable_until_first_user_message` (boolean, optional, nullable) — true होने पर, बातचीत में कम-से-कम एक वास्तविक यूज़र संदेश आने तक soft timeout filler दबाए जाते हैं। यह एजेंट के शुरुआती टर्न में filler को रोकता है (जैसे यूज़र के बोलने से पहले workflow generate-immediately / टूल कॉल)।

### SupportedVoice

- `label` (string, required)
- `voice_id` (string, required)
- `description` (string, optional, nullable)
- `language` (string, optional, nullable)
- `model_family` (enum, optional, nullable)
  - Allowed values: `turbo`, `flash`, `multilingual`, `v3_conversational`, `v4`, `v4_turbo`
- `optimize_streaming_latency` (enum, optional, nullable)
  - Allowed values: `0`, `1`, `2`, `3`, `4`
- `stability` (double, optional, nullable)
- `speed` (double, optional, nullable)
- `similarity_boost` (double, optional, nullable)

### SuggestedAudioTag

- `tag` (string, required) — इस्तेमाल करने के लिए ऑडियो टैग (बेहतर प्रदर्शन के लिए 1-2 शब्द, जैसे 'happy', 'excited')
- `description` (string, optional, nullable) — इस tag को कब इस्तेमाल करना है, उसका वैकल्पिक description

### PydanticPronunciationDictionaryVersionLocator

अन्य दस्तावेज़ों के लिए किसी खास शब्दकोश और उसके संस्करण का संदर्भ देने वाला लोकेटर। यह PronunciationDictionaryVersionLocatorDBModel का pydantic संस्करण है। अन्य एजेंट डेटा मॉडल्स के साथ संगतता सुनिश्चित करने के लिए आवश्यक है।

- `pronunciation_dictionary_id` (string, required) — उच्चारण डिक्शनरी की ID
- `version_id` (string, required, nullable) — उच्चारण डिक्शनरी के वर्ज़न की ID

### EffectsSpec-Input

जनरेट की गई स्पीच पर लागू ऑडियो इफेक्ट्स: फ़िल्टर प्रीसेट, महसूस होने वाली दूरी, रीवर्ब environment, बैकग्राउंड नॉइज़ बेड और स्टीरियो पैनिंग। बिना प्रोसेस किया हुआ ऑडियो पाने के लिए हर फ़ील्ड को उसके डिफ़ॉल्ट मान पर छोड़ दें।

- `filter_preset_id` (string, optional, nullable) — वॉइस का टोन बदलने वाले फ़िल्टर प्रीसेट की ID, जैसे `phone` या `old_radio`। मान्य IDs की सूची `GET /v1/audio-effects/catalog` से प्राप्त करें।
- `distance` (double, optional, default: 0) — स्पीकर माइक्रोफ़ोन से कितना दूर सुनाई देता है: 0 (पास, अपरिवर्तित) से 1 (दूर) तक। ज़्यादा मान कम और ज़्यादा फ़्रीक्वेंसी को घटाते हैं और environment सेट होने पर संतुलन को ड्राई वॉइस से रीवर्ब की ओर ले जाते हैं।
- `environment_id` (string, optional, nullable) — वॉइस को किसी स्थान में रखने वाले रीवर्ब environment की ID, जैसे `small_room` या `hall`। मान्य IDs की सूची `GET /v1/audio-effects/catalog` से प्राप्त करें। रीवर्ब स्टीरियो में रेंडर होता है और स्पीच खत्म होने के बाद कई सेकंड तक टेल जोड़ता है।
- `background_noise_id` (string, optional, nullable) — वॉइस के नीचे लूप होने वाले बैकग्राउंड नॉइज़ बेड की ID, जैसे `cafe` या `keyboard`। मान्य IDs की सूची `GET /v1/audio-effects/catalog` से प्राप्त करें।
- `send_level` (double, optional, default: 1) — वॉइस का कितना हिस्सा रीवर्ब में भेजा जाए: 0 (कोई नहीं) से 1 (पूरा) तक। यह केवल `environment_id` सेट होने पर लागू होता है; 0 रीवर्ब बंद कर देता है।
- `pan` (double, optional, default: 0) — वॉइस की स्टीरियो स्थिति, -1 (पूरी तरह बाएं) से 0 (केंद्र) होते हुए 1 (पूरी तरह दाएं) तक। केवल वॉइस को पैन किया जाता है; रीवर्ब और बैकग्राउंड नॉइज़ केंद्र में रहते हैं।

### FileInputConfigWorkflowOverride

- `enabled` (boolean, optional, nullable) — सक्षम होने पर, जब LLM मल्टीमॉडल इनपुट को सपोर्ट करता है, तो यूज़र चैट में इमेज, PDF या टेक्स्ट फ़ाइलें अटैच कर सकते हैं।
- `max_files_in_memory` (integer, optional, nullable) — बातचीत के दौरान मेमोरी में रखी जाने वाली सबसे हाल की files की संख्या। पुरानी files का सारांश बनाया जाता है और उनके bytes मुक्त कर दिए जाते हैं।
- `max_files_per_conversation` (integer, optional, nullable) — एक बातचीत में यूज़र जितनी कुल फ़ाइलें अपलोड कर सकता है। हर फ़ाइल के लिए शुल्क लिया जाता है। कोई सीमा न रखने के लिए -1, या max_files_in_memory से बड़ा या उसके बराबर मान इस्तेमाल करें।

### DTMFInputConfig

फ़ोन कॉल के दौरान DTMF (कीपैड) इनपुट कलेक्शन के लिए कॉन्फ़िगरेशन।

- `dtmf_input_timeout` (double, optional, default: 2) — अतिरिक्त DTMF अंकों की प्रतीक्षा के लिए टाइमआउट, सेकंड में
- `hash_terminator` (boolean, optional, default: true) — अगर true है, तो # दबाते ही DTMF इनपुट तुरंत पूरा हो जाता है
- `redact_input` (boolean, optional, default: false) — अगर true है, तो ट्रांसक्रिप्ट, बातचीत लॉग और विश्लेषण में कॉलर की DTMF (कीपैड) एंट्रीज़ को redaction marker से बदल दिया जाएगा। एजेंट जिन अंकों को दोहराता है या किसी टूल को भेजता है, वे प्रभावित नहीं होंगे।

### BackgroundSoundConfigWorkflowOverride

- `source_type` (enum, optional, nullable) — बैकग्राउंड साउंड सोर्स का टाइप।
  - Allowed values: `preset`
- `source_id` (enum, optional, nullable) — साउंड स्रोत का पहचानकर्ता।
  - Allowed values: `office2`, `office1`, `restaurant`, `city`, `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `volume` (double, optional, nullable) — बैकग्राउंड साउंड का वॉल्यूम स्तर (0.01 से 1.0)।
- `crossfade_loop` (boolean, optional, nullable) — साउंड के लूप होने पर सुनाई देने वाली पॉप आवाज़ से बचने के लिए लूप सीमा पर क्रॉसफ़ेड लागू करें।

### ConversationConfigClientOverride-Input

- `asr` (ASRConversationalConfigOverride, optional, nullable) — कन्वर्सेशनल ट्रांसक्रिप्शन के लिए कॉन्फ़िगरेशन
- `turn` (TurnConfigOverride, optional, nullable) — टर्न डिटेक्शन के लिए कॉन्फ़िगरेशन
- `tts` (TTSConversationalConfigOverride, optional, nullable) — कन्वर्सेशनल टेक्स्ट टू स्पीच के लिए कॉन्फ़िगरेशन
- `conversation` (ConversationConfigOverride, optional, nullable) — कन्वर्सेशनल इवेंट के लिए कॉन्फ़िगरेशन
- `agent` (AgentConfigOverride-Input, optional, nullable) — एजेंट-विशिष्ट कॉन्फ़िगरेशन

### LanguagePresetTranslation

- `source_hash` (string, required)
- `text` (string, required)

### DynamicVariablesConfigWorkflowOverride

- `dynamic_variable_placeholders` (map from string to any, optional, nullable) — dynamic variable placeholders और उनके मानों का शब्दकोश।

### BehaviorOverride

- `verbosity` (enum, optional, nullable) — वर्बोसिटी ओवरराइड। सेट न होने पर आधारभूत डिफ़ॉल्ट लागू होता है।
  - Allowed values: `auto`, `concise`, `thorough`
- `output_format` (enum, optional, nullable) — Output format override। सेट न होने पर मूल डिफ़ॉल्ट लागू होता है।
  - Allowed values: `mp3_22050_32`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `ulaw_8000`
- `interaction_budget` (enum, optional, nullable) — इंटरैक्शन बजट ओवरराइड। सेट न होने पर मूल डिफ़ॉल्ट लागू होता है।
  - Allowed values: `realtime`, `5_minutes`, `10_minutes`, `1_hour`

### PromptAgentAPIModelWorkflowOverride-Input

- `prompt` (string, optional, nullable) — एजेंट के लिए प्रॉम्प्ट
- `llm` (enum, optional, nullable) — prompt और चैट हिस्ट्री के साथ क्वेरी करने वाला LLM। data residency इस्तेमाल करने पर, LLM का data residency एनवायरनमेंट में समर्थित होना ज़रूरी है।
  - Allowed values: `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-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`
- `reasoning_effort` (enum, optional, nullable) — मॉडल का रीजनिंग प्रयास। केवल कुछ मॉडलों के लिए उपलब्ध।
  - Allowed values: `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`
- `thinking_budget` (integer, optional, nullable) — सोचने के लिए इस्तेमाल होने वाले टोकन की अधिकतम संख्या। मॉडल समर्थन करता हो तो बंद करने के लिए 0 इस्तेमाल करें।
- `enable_reasoning_summary` (boolean, optional, nullable) — मॉडल रीजनिंग सारांश सक्षम करें। अक्षम होने पर, तेज़ TTFB के लिए हम संभव होने पर प्रोवाइडर से सारांश का अनुरोध नहीं करते। ZRM के साथ संगत नहीं है।
- `temperature` (double, optional, nullable) — LLM के लिए टेम्परेचर। डिफ़ॉल्ट रूप से 0 है। पैरामीटर को LLM अनुरोध से पूरी तरह हटाने के लिए इसे null पर सेट करें (ऐसे कस्टम LLM के लिए उपयोगी जो temperature फ़ील्ड अस्वीकार करते हैं)।
- `max_tokens` (integer, optional, nullable) — 0 से अधिक होने पर, LLM द्वारा अनुमानित किए जा सकने वाले टोकन की अधिकतम संख्या
- `tool_ids` (list of string, optional, nullable) — एजेंट द्वारा इस्तेमाल किए गए टूल की IDs की सूची।
- `tool_ids_strict` (boolean, optional, nullable) — यह केवल कन्वर्सेशन ओवरराइड के रूप में लागू होता है और जब भी tool_ids को ओवरराइड किया जा सकता हो, तब अनुमत है। true होने पर, ओवरराइड किया गया tool_ids कन्वर्सेशन में अनुमत टूल की पूरी सूची होता है, जिसमें workflow नोड्स के टूल भी शामिल हैं। एजेंट पर सेट होने पर इसे अनदेखा किया जाता है।
- `built_in_tools` (BuiltInToolsWorkflowOverride-Input, optional, nullable) — एजेंट द्वारा इस्तेमाल किए जाने वाले बिल्ट-इन सिस्टम टूल
- `enable_parallel_tool_calls` (boolean, optional, nullable) — पैरेलल टूल कॉलिंग सक्षम करें। सक्षम होने पर, एजेंट एक ही टर्न में कई टूल पैरेलल रूप से चला सकता है। सभी मॉडल इसे सपोर्ट नहीं करते।
- `mcp_server_ids` (list of string, optional, nullable) — एजेंट द्वारा उपयोग किए जाने वाले MCP सर्वर ids की सूची
- `native_mcp_server_ids` (list of string, optional, nullable) — एजेंट द्वारा उपयोग किए जाने वाले Native MCP सर्वर ids की सूची
- `knowledge_base` (list of KnowledgeBaseLocator, optional, nullable) — एजेंट द्वारा उपयोग किए जाने वाले नॉलेज बेस की सूची
- `custom_llm` (CustomLLM, optional, nullable) — यदि LLM फ़ील्ड 'CUSTOM_LLM' पर सेट है, तो कस्टम LLM की परिभाषा
- `ignore_default_personality` (boolean, optional, nullable) — सिस्टम प्रॉम्प्ट से डिफ़ॉल्ट पर्सनैलिटी लाइनें हटानी हैं या नहीं
- `rag` (RagConfigWorkflowOverride-Input, optional, nullable) — RAG के लिए कॉन्फ़िगरेशन
- `timezone` (string, optional, nullable) — सिस्टम प्रॉम्प्ट में वर्तमान समय दिखाने के लिए टाइमज़ोन। सेट होने पर, इस टाइमज़ोन का उपयोग करके वर्तमान समय सिस्टम प्रॉम्प्ट में शामिल होगा। यह मान्य टाइमज़ोन नाम होना चाहिए (जैसे, 'America/New_York', 'Europe/London', 'UTC')। समय के हिसाब से सटीक जवाबों के लिए इसकी सलाह दी जाती है; इसके बिना एजेंट को मौजूदा तारीख/समय की जानकारी नहीं होगी, जब तक आप उसे dynamic variables या tools से न दें, जिससे गलत या काल्पनिक समय संदर्भ आ सकते हैं।
- `backup_llm_config` (PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig, optional, nullable) — बैकअप LLM कैस्केडिंग के लिए कॉन्फ़िगरेशन। इसे बंद किया जा सकता है, सिस्टम डिफ़ॉल्ट इस्तेमाल किए जा सकते हैं या कस्टम क्रम तय किया जा सकता है।
- `cascade_timeout_seconds` (double, optional, nullable) — बैकअप LLM पर जाने से पहले का समय, सेकंड में। यह 2 से 15 सेकंड के बीच होना चाहिए।
- `tools` (list of PromptAgentApiModelWorkflowOverrideInputToolsItems, optional, nullable) — बातचीत के दौरान एजेंट जिन टूल्स का उपयोग कर सकता है उनकी सूची, इसके बजाय tool_ids का उपयोग करें

### WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue

इस्तेमाल किया जाने वाला कॉन्स्टेंट मान

### ASRConversationalConfigOverride

- `keywords` (list of string, optional, nullable) — जिनके लिए अनुमान की संभावना बढ़ानी है वे कीवर्ड्स

### TurnConfigOverride

- `soft_timeout_config` (SoftTimeoutConfigOverride, optional, nullable) — सॉफ्ट टाइमआउट सुविधा के लिए कॉन्फ़िगरेशन। लंबे LLM रिस्पॉन्स के दौरान तुरंत फ़ीडबैक देता है।

### TTSConversationalConfigOverride

- `model_id` (enum, optional, nullable, default: eleven_v4_turbo) — TTS के लिए इस्तेमाल किया जाने वाला मॉडल
  - Allowed values: `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`
- `voice_id` (string, optional, nullable) — TTS के लिए इस्तेमाल की जाने वाली वॉइस ID
- `supported_voices` (list of SupportedVoice, optional, nullable) — एजेंट के लिए अतिरिक्त समर्थित वॉइसेज़
- `stability` (double, optional, nullable) — जनरेट की गई स्पीच की स्थिरता
- `speed` (double, optional, nullable) — जनरेट की गई स्पीच की गति
- `similarity_boost` (double, optional, nullable) — जनरेट की गई स्पीच के लिए सिमिलैरिटी बूस्ट
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional, nullable) — उच्चारण शब्दकोश लोकेटर्स

### ConversationConfigOverride

- `text_only` (boolean, optional, nullable) — इसे सक्षम करने पर ऑडियो प्रोसेस नहीं होगा और केवल टेक्स्ट का इस्तेमाल होगा। ऑडियो की कीमत से बचने के लिए इसका इस्तेमाल करें।
- `max_duration_seconds` (integer, optional, nullable) — बातचीत की अधिकतम अवधि, सेकंड में

### AgentConfigOverride-Input

- `first_message` (string, optional, nullable) — खाली न होने पर, एजेंट का पहला संदेश। खाली होने पर एजेंट चर्चा शुरू करने के लिए यूज़र का इंतज़ार करता है।
- `language` (string, optional, nullable) — एजेंट की भाषा — ASR और TTS के लिए इस्तेमाल होती है
- `max_conversation_duration_message` (string, optional, nullable) — खाली न होने पर, अधिकतम बातचीत अवधि पूरी होने पर एजेंट द्वारा भेजा जाने वाला संदेश।
- `prompt` (PromptAgentAPIModelOverride-Input, optional, nullable) — एजेंट के लिए प्रॉम्प्ट

### BuiltInToolsWorkflowOverride-Input

- `transfer_to_agent` (SystemToolConfig, optional, nullable) — एजेंट को ट्रांसफ़र करने का टूल
- `end_call` (SystemToolConfig, optional, nullable) — कॉल समाप्ति टूल
- `language_detection` (SystemToolConfig, optional, nullable) — भाषा पहचान टूल
- `transfer_to_number` (SystemToolConfig, optional, nullable) — नंबर पर ट्रांसफ़र करने का टूल
- `skip_turn` (SystemToolConfig, optional, nullable) — स्किप टर्न टूल
- `play_keypad_touch_tone` (SystemToolConfig, optional, nullable) — Play DTMF टूल
- `voicemail_detection` (SystemToolConfig, optional, nullable) — वॉइसमेल डिटेक्शन टूल

### CustomLLM

- `url` (string, required) — Chat Completions-संगत एंडपॉइंट का URL
- `model_id` (string, optional, nullable) — अगर URL कई मॉडल उपलब्ध कराता है, तो इस्तेमाल किया जाने वाला मॉडल ID
- `api_key` (CustomLlmApiKey, optional, nullable) — ऑथेंटिकेशन के लिए API key। या तो वर्कस्पेस सीक्रेट रेफ़रेंस \{'secret\_id': '...'} या एनवायरनमेंट वैरिएबल रेफ़रेंस \{'env\_var\_label': '...'}।
- `auth_connection` (CustomLlmAuthConnection, optional, nullable) — authentication के लिए वैकल्पिक workspace auth connection। केवल वे auth connections समर्थित हैं जो Authorization Bearer token बनाते हैं; Basic auth, mTLS, custom header और URL secret auth connections समर्थित नहीं हैं।
- `request_headers` (map from string to CustomLlmRequestHeaders, optional) — रिक्वेस्ट में शामिल किए जाने वाले हेडर
- `api_version` (string, optional, nullable) — रिक्वेस्ट के लिए इस्तेमाल करने वाला API वर्शन
- `api_type` (enum, optional, default: chat_completions) — इस्तेमाल करने के लिए API टाइप (chat_completions, responses या websocket)
  - Allowed values: `chat_completions`, `responses`, `websocket`

### RagConfigWorkflowOverride-Input

- `enabled` (boolean, optional, nullable)
- `embedding_model` (enum, optional, nullable, default: e5_mistral_7b_instruct)
  - Allowed values: `e5_mistral_7b_instruct`, `multilingual_e5_large_instruct`
- `max_vector_distance` (double, optional, nullable) — प्राप्त चंक्स की अधिकतम वेक्टर दूरी।
- `max_documents_length` (integer, optional, nullable) — RAG से प्राप्त दस्तावेज़ चंक्स की अधिकतम कुल लंबाई।
- `max_retrieved_rag_chunks_count` (integer, optional, nullable) — वेक्टर स्टोर से शुरुआत में प्राप्त किए जाने वाले RAG दस्तावेज़ चंक्स की अधिकतम संख्या। इसके बाद इन्हें वेक्टर दूरी और कुल लंबाई के आधार पर फ़िल्टर किया जाता है।
- `num_candidates` (integer, optional, nullable) — ANN वेक्टर खोज में आंके गए उम्मीदवारों की संख्या। ज़्यादा संख्या से बेहतर नतीजे मिलते हैं, लेकिन विलंब भी बढ़ता है। न्यूनतम सुझाया गया मान 100 है। अक्षम होने पर डिफ़ॉल्ट मान इस्तेमाल होता है।
- `query_rewrite_prompt_override` (string, optional, nullable) — RAG रिट्रीवल से पहले यूज़र क्वेरी को दोबारा लिखने के लिए कस्टम प्रॉम्प्ट। बातचीत का इतिहास अंत में अपने-आप जोड़ा जाएगा। सेट न होने पर डिफ़ॉल्ट प्रॉम्प्ट इस्तेमाल होगा।
- `knowledge_base_tool_info` (KnowledgeBaseToolInfo, optional, nullable) — सेट होने पर, एजेंट लेगसी knowledge_base_rag टूल के बजाय knowledge_base टूल का उपयोग करता है। None का मतलब है कि एजेंट ने इसे चुना नहीं है।

### PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig

बैकअप LLM कैस्केडिंग के लिए कॉन्फ़िगरेशन। इसे बंद किया जा सकता है, सिस्टम डिफ़ॉल्ट इस्तेमाल किए जा सकते हैं या कस्टम क्रम तय किया जा सकता है।

### PromptAgentApiModelWorkflowOverrideInputToolsItems

टूल का टाइप

- `type`: `api_integration_webhook` (ApiIntegrationWebhookToolConfig)
  - `api_integration_connection_id` (string, required)
  - `api_integration_id` (string, required)
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `api_schema_overrides` (ApiIntegrationWebhookOverrides, optional, nullable) — बेस api_schema पर लागू यूज़र ओवरराइड
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में। यह 5 से 300 सेकंड (दोनों सहित) के बीच होना चाहिए।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `tool_version` (string, optional, default: 1.0.0) — API इंटीग्रेशन टूल का वर्ज़न
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — अगर true है, तो इस टूल को कॉल करने पर बातचीत तब तक रुकेगी जब तक क्लाइंट कोई जवाब नहीं देता, जो llm को भेजा जाता है। अगर false है, तो हम क्लाइंट के जवाब का इंतज़ार किए बिना बातचीत जारी रखेंगे। यह यूज़र को कंटेंट दिखाने के लिए उपयोगी है, बिना बातचीत रोके।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Input, optional, nullable) — क्लाइंट को भेजे जाने वाले किसी भी पैरामीटर का स्कीमा
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल पूरा होने की प्रतीक्षा करने का अधिकतम समय, सेकंड में। यह 1 से 120 सेकंड (दोनों शामिल) के बीच होना चाहिए, या क्लाइंट के जवाब की अनिश्चितकाल तक प्रतीक्षा करने के लिए -1 होना चाहिए (इसके लिए expects_response आवश्यक है)।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `mcp` (mcp)
- `type`: `smb` (smb)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `description` (string, optional, default: ) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण। उस डिफ़ॉल्ट विवरण का इस्तेमाल करने के लिए इसे खाली छोड़ें जो खास टूल प्रकार के लिए ऑप्टिमाइज़ किया गया है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Input, required) — आउटगोइंग वेबहुक का स्कीमा, जिसमें पैरामीटर्स और URL विनिर्देशन शामिल हैं
  - `description` (string, required) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण।
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
  - `dynamic_variables` (DynamicVariablesConfig, optional) — डायनामिक वेरिएबल के लिए कॉन्फ़िगरेशन
  - `execution_mode` (enum, optional, default: immediate) — यह तय करता है कि टूल कब और कैसे चले: 'immediate', LLM के अनुरोध पर टूल को तुरंत चलाता है; 'post_tool_speech', एजेंट के बोलना पूरा करने तक इंतज़ार करता है; 'async', बिना ब्लॉक किए टूल को बैकग्राउंड में चलाता है — लंबे समय तक चलने वाले ऑपरेशंस के लिए सबसे अच्छा।
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — एंडपॉइंट से रीडायरेक्ट को रिज़ॉल्व करके अंतिम रिस्पॉन्स लौटाना है या नहीं। एक रीडायरेक्ट को, रिक्वेस्ट बॉडी के बिना GET के रूप में फ़ॉलो किया जाता है; इस टूल पर कॉन्फ़िगर की गई कोई भी चीज़ (हेडर, ऑथेंटिकेशन, क्लाइंट सर्टिफ़िकेट) रीडायरेक्ट टारगेट को नहीं भेजी जाती। एंडपॉइंट और रीडायरेक्ट टारगेट, दोनों को HTTPS का इस्तेमाल करना चाहिए। API इंटीग्रेशन टूल्स के लिए समर्थित नहीं है।
  - `follow_redirects_allowed_domains` (list of string, optional) — वे डोमेन जिन पर रीडायरेक्ट पॉइंट कर सकता है, जैसे 'test.example.com'। रीडायरेक्ट फ़ॉलो करते समय आवश्यक; सूची के बाहर के टारगेट को अस्वीकार कर दिया जाता है।
  - `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में। यह 5 से 300 सेकंड (दोनों सहित) के बीच होना चाहिए।
  - `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।

### SoftTimeoutConfigOverride

- `message` (string, optional, nullable) — LLM जवाब की प्रतीक्षा के दौरान पहला सॉफ्ट टाइमआउट होने पर दिखाया जाने वाला संदेश। डायनामिक वेरिएबल समर्थित हैं (जैसे, \{\{system\_\_time}}, \{\{custom\_variable}})।
- `additional_soft_timeout_messages` (list of string, optional, nullable) — उसी LLM जनरेशन में बाद के soft timeout के लिए अतिरिक्त स्थिर filler संदेश। पहला timeout `message` का उपयोग करता है। यदि कॉन्फ़िगर किए गए संदेश `max_soft_timeouts_per_generation` से कम हैं, तो आखिरी कॉन्फ़िगर किया गया संदेश दोहराया जाता है; अन्यथा built-in filler इस्तेमाल होता है।

### PromptAgentAPIModelOverride-Input

- `prompt` (string, optional, nullable) — एजेंट के लिए प्रॉम्प्ट
- `llm` (enum, optional, nullable) — prompt और चैट हिस्ट्री के साथ क्वेरी करने वाला LLM। data residency इस्तेमाल करने पर, LLM का data residency एनवायरनमेंट में समर्थित होना ज़रूरी है।
  - Allowed values: `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-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`
- `tool_ids` (list of string, optional, nullable) — एजेंट द्वारा इस्तेमाल किए गए टूल की IDs की सूची।
- `tool_ids_strict` (boolean, optional, nullable) — यह केवल कन्वर्सेशन ओवरराइड के रूप में लागू होता है और जब भी tool_ids को ओवरराइड किया जा सकता हो, तब अनुमत है। true होने पर, ओवरराइड किया गया tool_ids कन्वर्सेशन में अनुमत टूल की पूरी सूची होता है, जिसमें workflow नोड्स के टूल भी शामिल हैं। एजेंट पर सेट होने पर इसे अनदेखा किया जाता है।
- `native_mcp_server_ids` (list of string, optional, nullable) — एजेंट द्वारा उपयोग किए जाने वाले Native MCP सर्वर ids की सूची
- `knowledge_base` (list of KnowledgeBaseLocator, optional, nullable) — एजेंट द्वारा उपयोग किए जाने वाले नॉलेज बेस की सूची

### SystemToolConfig

सिस्टम टूल वह टूल है जिसका उपयोग सर्वर में सिस्टम मेथड कॉल करने के लिए किया जाता है

- `name` (string, required)
- `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
- `description` (string, optional, default: ) — टूल का इस्तेमाल कब करना चाहिए और यह क्या करता है, इसका विवरण। उस डिफ़ॉल्ट विवरण का इस्तेमाल करने के लिए इसे खाली छोड़ें जो खास टूल प्रकार के लिए ऑप्टिमाइज़ किया गया है।
- `response_timeout_secs` (integer, optional, default: 20) — टूल कॉल के पूरा होने की प्रतीक्षा का अधिकतम समय, सेकंड में।
- `interruption_mode` (enum, optional, default: allow) — यह नियंत्रित करता है कि यूज़र इस टूल कॉल के दौरान एजेंट को बाधित कर सकता है या नहीं। 'allow' (डिफ़ॉल्ट) यूज़र को किसी भी समय बाधित करने देता है, 'disable_during_tool' केवल टूल के चलने के दौरान बाधा को रोकता है और 'disable_during_tool_and_turn' टूल के चलने के दौरान और उसके बाद आने वाले एजेंट रिस्पॉन्स के लिए बाधा को रोकता है।
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `pre_tool_speech` (enum, optional, default: auto) — यह नियंत्रित करता है कि इस टूल को कॉल करने से पहले एजेंट बोले या नहीं। 'auto' (डिफ़ॉल्ट) हाल की टूल लेटेंसी के आधार पर तय करता है, 'force' हमेशा एजेंट को बोलने के लिए कहता है और 'off' लेटेंसी की परवाह किए बिना इसे पूरी तरह बंद कर देता है।
  - Allowed values: `auto`, `force`, `off`
- `assignments` (list of DynamicVariableAssignment, optional) — टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन
- `tool_call_sound` (enum, optional, nullable) — tool execution के दौरान चलाने वाला पूर्वनिर्धारित tool call sound type। निर्दिष्ट न होने पर कोई tool call sound नहीं चलेगा।
  - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `tool_call_sound_behavior` (enum, optional, default: auto) — यह तय करता है कि टूल कॉल की ध्वनि कब बजे। 'auto' केवल तब बजता है जब टूल से पहले स्पीच हो, जबकि 'always' हर टूल कॉल के लिए बजता है।
  - Allowed values: `auto`, `always`
- `tool_error_handling_mode` (enum, optional, default: auto) — एजेंट के साथ साझा करने से पहले टूल की त्रुटियों को कैसे प्रोसेस किया जाए, यह नियंत्रित करता है। 'auto' टूल के प्रकार के आधार पर हैंडलिंग तय करता है (नेटिव इंटीग्रेशन के लिए सारांशित, दूसरों के लिए छिपाया गया), 'summarized' LLM से जनरेट किया गया सारांश भेजता है, 'passthrough' मूल त्रुटि भेजता है और 'hide' त्रुटि को एजेंट के साथ साझा नहीं करता।
  - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
- `disable_interruptions` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `interruption_mode` इस्तेमाल करें। true होने पर, इस टूल के चलने के दौरान यूज़र एजेंट को बाधित नहीं कर पाएगा।
- `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — डीप्रिकेटेड: इसके बजाय `pre_tool_speech` इस्तेमाल करें। true होने पर, एजेंट टूल कॉल से पहले बोलेगा।

### CustomLlmApiKey

ऑथेंटिकेशन के लिए API key। या तो वर्कस्पेस सीक्रेट रेफ़रेंस \{'secret\_id': '...'} या एनवायरनमेंट वैरिएबल रेफ़रेंस \{'env\_var\_label': '...'}।

### CustomLlmAuthConnection

authentication के लिए वैकल्पिक workspace auth connection। केवल वे auth connections समर्थित हैं जो Authorization Bearer token बनाते हैं; Basic auth, mTLS, custom header और URL secret auth connections समर्थित नहीं हैं।

### CustomLlmRequestHeaders

### KnowledgeBaseToolInfo

- `enabled_strategies` (list of enum, optional) — model के लिए उपलब्ध search strategies। खाली नहीं होनी चाहिए।
  - Allowed values: `cat`, `keyword`, `semantic`, `ls`

### BackupLLMDefault

### BackupLLMDisabled

### BackupLLMOverride

- `order` (list of enum, required)
  - Allowed values: `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-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`

### ApiIntegrationWebhookOverrides

- `schema_overrides` (map from string to ApiIntegrationWebhookOverridesSchemaOverrides, optional, nullable)
- `response_filter_mode` (enum, optional, nullable, default: all) — एजेंट को दिखने से पहले टूल के रिस्पॉन्स को कैसे फ़िल्टर किया जाए, यह नियंत्रित करता है।
  - Allowed values: `all`, `allow`, `hide_all`
- `response_filters` (list of string, optional, nullable)
- `request_headers` (map from string to ApiIntegrationWebhookOverridesRequestHeaders, optional, nullable)

### DynamicVariableAssignment

टूल रिस्पॉन्स से वैल्यू निकालने और उन्हें डायनामिक वेरिएबल को असाइन करने के लिए कॉन्फ़िगरेशन।

- `dynamic_variable` (string, required) — निकाली गई वैल्यू असाइन करने के लिए dynamic variable का नाम
- `value_path` (string, required) — सोर्स से मान निकालने के लिए डॉट नोटेशन पाथ (जैसे, 'user.name' या 'data.0.id')
- `source` ("response", optional, default: response) — वह स्रोत जिससे वैल्यू निकाली जाएगी। फ़िलहाल केवल 'response' समर्थित है।
- `sanitize` (boolean, optional, default: false) — अगर true है, तो इस असाइनमेंट का मान LLM और ट्रांसक्रिप्ट को भेजने से पहले टूल रिस्पॉन्स से हटा दिया जाएगा, लेकिन वेरिएबल असाइनमेंट के लिए फिर भी प्रोसेस किया जाएगा।
- `preserve_native_type` (boolean, optional, default: false) — अगर true है, तो टूल रिस्पॉन्स से निकाले गए नॉन-स्केलर मानों (सूचियों, ऑब्जेक्ट्स) को JSON स्ट्रिंग में बदलने के बजाय उनके मूल प्रकार में स्टोर किया जाता है। निकाले गए arrays को सीधे सूची dynamic variables के रूप में इस्तेमाल करने के लिए इसे सक्षम करें।

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — dynamic variable placeholders और उनके मानों का शब्दकोश।

### ObjectJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (map from string to any, optional, nullable) — सेट होने पर, पूरा object रनटाइम पर इस स्थिर JSON मान का उपयोग करता है। यह description (LLM-प्रदत्त object), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — ज़रूरी फ़ील्ड्स तक सीमित anyOf/allOf कंपोज़िशन कंस्ट्रेंट्स के लिए रैपर।

### ToolRequestModelToolConfigDiscriminatorMappingSystemParams

- `system_tool_type`: `end_call` (EndCallToolConfig)
- `system_tool_type`: `end_procedure` (EndProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures, optional)
- `system_tool_type`: `knowledge_base` (KnowledgeBaseToolConfig)
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag` (KnowledgeBaseRagToolConfig)
- `system_tool_type`: `language_detection` (LanguageDetectionToolConfig)
  - `only_at_conversation_start` (boolean, optional, default: false) — अगर यूज़र के पहले 2 टर्न में भाषा नहीं बदलती, तो बाद के प्रयास विफल होंगे और बातचीत मौजूदा भाषा में रहेगी। अगर उन टर्न के दौरान भाषा बदलती है, तो बाद में भाषा बदलना उपलब्ध रहेगा। गलत भाषा-परिवर्तन की संभावना कम करने के लिए इसे सक्षम करें।
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — अगर true है, तो DTMF टोन चलाने के बाद एजेंट आगे कोई स्पीच जनरेट नहीं करेगा। इससे एजेंट की स्पीच IVR सिस्टम में बाधा नहीं डालेगी।
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — in-band audio के बजाय DTMF tones को out-of-band RTP events (RFC 4733) के रूप में भेजें। केवल SIP trunk imported numbers के लिए प्रभावी है।
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — skip_turn के बाद एजेंट द्वारा संदर्भानुकूल चेक-इन जनरेट करने से पहले प्रतीक्षा के सेकंड। प्रतीक्षा के दौरान "End conversation after silence" टाइमर रुका रहता है। -1 प्रतीक्षा को निष्क्रिय करता है: skip_turn के बाद एजेंट कॉलर के बोलने तक चुप रहता है और वह टाइमर चलता रहता है। केवल वॉइस बातचीत पर लागू होता है।
- `system_tool_type`: `start_procedure` (StartProcedureToolConfig)
  - `procedures` (map from string to ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures, optional)
- `system_tool_type`: `transfer_to_agent` (TransferToAgentToolConfig)
  - `transfers` (list of AgentTransfer-Input, required)
- `system_tool_type`: `transfer_to_number` (TransferToNumberToolConfig)
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — क्या ट्रांसफ़र की प्रतीक्षा के दौरान क्लाइंट को एक मैसेज चलाना है। बैकवर्ड कंपैटिबिलिटी के लिए डिफ़ॉल्ट रूप से true है।
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — voicemail का पता चलने पर छोड़ने के लिए वैकल्पिक message। न दिए जाने पर voicemail का पता चलते ही call समाप्त हो जाएगी। dynamic variables समर्थित हैं (जैसे, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}})।

### WebhookToolApiSchemaConfig-Input

- `url` (string, required) — वह URL जिस पर वेबहुक भेजा जाएगा। इसमें पाथ पैरामीटर शामिल हो सकते हैं, जैसे [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeaders, optional) — रिक्वेस्ट में शामिल किए जाने वाले हेडर
- `method` (enum, optional, default: GET) — वेबहुक के लिए इस्तेमाल की जाने वाली HTTP विधि
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — यदि कोई path parameters हों, तो उनके लिए स्कीमा। keys को URL के placeholders से मेल खाना चाहिए।
- `query_params_schema` (QueryParamsJsonSchema-Input, optional, nullable) — यदि कोई query params हों, तो उनके लिए स्कीमा। इन्हें URL के अंत में query params के रूप में जोड़ा जाएगा। ध्यान दें: query param में सभी properties literal types की होनी चाहिए
- `request_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — यदि कोई body parameters हों, तो उनके लिए स्कीमा। POST/PATCH/PUT requests के लिए इस्तेमाल होता है। स्कीमा एक object होना चाहिए, जिसे json body के रूप में भेजा जाएगा
- `response_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — अपेक्षित रिस्पॉन्स बॉडी संरचना बताने वाला स्कीमा। केवल डॉक्यूमेंटेशन के लिए; LLM को नहीं दिखाया जाता।
- `response_filter` (ResponseFilter, optional, nullable) — LLM के देखने से पहले response पर लागू होने वाला वैकल्पिक allow-list filter, ताकि बड़े responses context को प्रभावित न करें। डिफ़ॉल्ट रूप से पूरा response होता है।
- `content_type` (enum, optional, default: application/json) — रिक्वेस्ट बॉडी के लिए कॉन्टेंट टाइप। केवल POST/PUT/PATCH रिक्वेस्ट पर लागू होता है।
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — path_params_schema के बजाय auth कनेक्शन से रिज़ॉल्व किए गए URL प्लेसहोल्डर (जैसे UrlSecretAuthConnection से डाले गए secrets)।
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional, nullable) — इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### ConvAISecretLocator

एजेंट के secret store में मौजूद secret को रेफ़र करने के लिए इस्तेमाल होता है।

- `secret_id` (string, required)

### ConvAIEnvVarLocator

लेबल से environment variable को रेफ़र करने के लिए इस्तेमाल होता है।

- `env_var_label` (string, required)

### AuthConnectionLocator

वर्कस्पेस के auth कनेक्शन store से auth कनेक्शन को रेफ़र करने के लिए इस्तेमाल होता है।

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

लेबल के ज़रिए 'auth_connection' टाइप के environment variable को रेफ़र करता है। रनटाइम पर, मौजूदा environment के लिए auth connection निर्धारित करता है, और न मिलने पर default environment इस्तेमाल करता है।

- `env_var_label` (string, required)

### ConvAIDynamicVariable

डायनामिक वेरिएबल को रेफ़र करने के लिए इस्तेमाल होता है।

- `variable_name` (string, required)

### ApiIntegrationWebhookOverridesSchemaOverrides

- `source`: `constant` (ConstantSchemaOverride)
  - `constant_value` (WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue, required, nullable) — इस्तेमाल किया जाने वाला कॉन्स्टेंट मान
- `source`: `dynamic_variable` (DynamicVariableSchemaOverride)
  - `dynamic_variable` (string, required) — इस्तेमाल किए जाने वाले dynamic variable का नाम
- `source`: `llm` (LLMSchemaOverride)
  - `prompt` (string, optional, nullable) — LLM के लिए प्रॉम्प्ट ओवरराइड। न देने पर, मूल schema विवरण इस्तेमाल किया जाता है।
- `source`: `omit` (OmitSchemaOverride)

### ApiIntegrationWebhookOverridesRequestHeaders

### ObjectJsonSchemaPropertyInput

### RequiredConstraints

ज़रूरी फ़ील्ड्स तक सीमित anyOf/allOf कंपोज़िशन कंस्ट्रेंट्स के लिए रैपर।

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingEndProcedureProcedures

### ToolResponseModelToolConfigDiscriminatorMappingSystemParamsDiscriminatorMappingStartProcedureProcedures

### AgentTransfer-Input

- `condition` (string, required)
- `agent_id` (string, optional, nullable)
- `branch_id` (string, optional, nullable)
- `node_id` (string, optional, nullable)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional, nullable)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — तय करता है कि TTS क्लाइंट ओवरराइड्स को ट्रांसफ़र किए गए एजेंट पर लागू रखा जाए या नहीं।
- `preserve_voice_settings` (boolean, optional, default: false) — निर्धारित करता है कि बेस वॉइस, TTS मॉडल और वॉइस सेटिंग्स ट्रांसफ़र किए गए एजेंट में ले जानी चाहिए या नहीं।

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItems, optional) — कॉल ट्रांसफ़र करते समय शामिल किए जाने वाले कस्टम SIP हेडर। हर हेडर स्टैटिक वैल्यू या डायनेमिक वेरिएबल रेफ़रेंस हो सकता है।
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — True होने पर, SIP REFER ट्रांसफ़र पूरा होने तक मूल कॉल लेग पर रिंगिंग टोन बजती है। टोन RTP के ज़रिए REFER निष्पादित करने वाले SIP peer तक भेजी जाती है, इसलिए अगर रिसीविंग सिस्टम (जैसे SBC या कॉन्टैक्ट सेंटर) को यह नहीं सुननी चाहिए तो इसे बंद करें। बंद होने पर, ट्रांसफ़र पूरा होने तक कॉलर को सन्नाटा सुनाई देता है। केवल SIP REFER ट्रांसफ़र के लिए।
- `uui` (UUITransferConfig, optional, nullable) — SIP REFER ट्रांसफ़र के साथ अटैच करने के लिए User-to-User Information (RFC 7433)। यह ट्रांसफ़र सीमा के पार CRM आइडेंटिफ़ायर या एस्केलेशन कारण जैसे कॉल कॉन्टेक्स्ट को ले जाता है।
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional, nullable) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।
- `phone_number` (string, optional, nullable, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeaders

### LiteralJsonSchemaProperty

literal JSON types के लिए schema property। ज़रूरी: इनमें से केवल एक field सेट की जा सकती है: description (LLM value देता है), dynamic_variable (variable से value), is_system_provided (system value देता है), constant_value (fixed value), या is_omitted (parameter छोड़ा गया है)। ये परस्पर अनन्य हैं।

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — प्रॉपर्टी का विवरण। सेट होने पर, LLM इस विवरण के आधार पर मान देगा। यह dynamic_variable, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य है।
- `enum` (list of string, optional, nullable) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — अगर true है, तो सिस्टम रनटाइम पर मान भर देगा। टेम्पलेटिंग के लिए API Integration Webhook टूल द्वारा उपयोग किया जाता है। description, dynamic_variable, constant_value और is_omitted के साथ परस्पर अनन्य है।
- `dynamic_variable` (string, optional, default: ) — इस प्रॉपर्टी की वैल्यू के लिए इस्तेमाल किए जाने वाले dynamic variable का नाम। description, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य।
- `allowed_values` (AllowedValues, optional, nullable) — LLM द्वारा दी गई value के लिए server-side rejection guard: runtime इस object के बताए permitted set से बाहर की हर value को अस्वीकार करता है और यह set LLM को enum के रूप में नहीं बताया जाता। केवल तब समर्थित है, जब value source `description` हो; इसे dynamic_variable, is_system_provided, constant_value या is_omitted के साथ मिलाने पर अस्वीकार कर दिया जाता है।
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional, nullable, default: ) — इस प्रॉपर्टी के लिए इस्तेमाल किया जाने वाला स्थिर मान। description, dynamic_variable, is_system_provided और is_omitted के साथ परस्पर अनन्य है।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable, is_system_provided और constant_value के साथ परस्पर अनन्य है।
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — डीप्रिकेटेड: इसके बजाय `allowed_values` इस्तेमाल करें। सेट होने पर LLM वैल्यू देता है, लेकिन रनटाइम इस डायनेमिक वेरिएबल की सूची में मौजूद न होने वाली किसी भी वैल्यू को अस्वीकार करता है (यह ["ws_alpha", "ws_beta"] जैसा JSON ऐरे होना चाहिए)। LLM को सर्वर-वेरिफ़ाइड सेट से चुनने देने के लिए इस्तेमाल करें (जैसे वे ID जिन्हें वर्तमान यूज़र एक्सेस कर सकता है)। description आवश्यक है; dynamic_variable, is_system_provided, constant_value और is_omitted के साथ परस्पर अनन्य है।

### QueryParamsJsonSchema-Input

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

टूल रिस्पॉन्स को एजेंट के लिए दिखने से पहले फ़िल्टर करने की कॉन्फ़िगरेशन।

- `mode` (enum, optional, default: all) — टूल के रिस्पॉन्स को कैसे फ़िल्टर किया जाए, यह नियंत्रित करता है। 'all' पूरा रिस्पॉन्स लौटाता है, 'allow' सिर्फ़ तय किए गए पथ लौटाता है और 'hide_all' पूरा रिस्पॉन्स छिपा देता है।
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — मोड 'allow' होने पर शामिल किए जाने वाले डॉट नोटेशन पाथ (जैसे, ['ticket.id', 'ticket.status'])।
- `content_type` ("application/json", optional, default: application/json) — रिस्पॉन्स फ़िल्टरिंग के लिए कॉन्टेंट टाइप। केवल 'application/json' रिस्पॉन्स फ़िल्टर किए जाते हैं।

### WebhookToolApiSchemaConfigInputAuthConnection

इस webhook के साथ authentication के लिए इस्तेमाल होने वाला वैकल्पिक auth connection

### ArrayJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — सेट होने पर, पूरा parameter रनटाइम पर इस dynamic variable से भरा जाता है। यह description (LLM-प्रदत्त मान), constant_value और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `constant_value` (list of any, optional, nullable) — सेट होने पर, पूरा array रनटाइम पर इस स्थिर मान का उपयोग करता है। यह description (LLM-प्रदत्त array), dynamic_variable और is_omitted के साथ एक साथ उपयोग नहीं किया जा सकता।
- `is_omitted` (boolean, optional, default: false) — अगर true है, तो यह पैरामीटर रिक्वेस्ट से पूरी तरह हटा दिया जाएगा। केवल वैकल्पिक पैरामीटर्स के लिए मान्य है। description, dynamic_variable और constant_value के साथ परस्पर अनन्य है।
- `type` ("array", optional, default: array)
- `items` (ArrayJsonSchemaPropertyInputItems, optional, default: {"allowed_values_dynamic_variable":"","constant_value":"","description":"Array element","dynamic_variable":"","is_omitted":false,"is_system_provided":false,"type":"string"}) — array elements के लिए स्कीमा।

### RequiredConstraint

फ़ील्ड्स का एक सेट, जिन सभी का मौजूद होना इस बाध्यता को पूरा करने के लिए ज़रूरी है।

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — Procedure ID
- `version_id` (string, required) — procedure वर्ज़न की वर्ज़न ID।

### ProcedureDraftRef

- `procedure_id` (string, required) — Procedure ID
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone` (PhoneNumberTransferDestination)
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable` (PhoneNumberDynamicVariableTransferDestination)
  - `phone_number` (string, required)
- `type`: `sip_uri` (SIPUriTransferDestination)
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable` (SIPUriDynamicVariableTransferDestination)
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItems

- `type`: `dynamic` (CustomSIPHeaderWithDynamicVariable)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — SIP हेडर का नाम (जैसे, 'X-Customer-ID')
  - `value` (string, required) — हेडर वैल्यू

### PhoneNumberTransferPostDialDigits

कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')। यह स्थिर मान या डायनामिक वेरिएबल रेफ़रेंस हो सकता है। 0.5 सेकंड के पॉज़ के लिए 'w' का इस्तेमाल करें। केवल Twilio ट्रांसफ़र के लिए सपोर्टेड है।

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — रिज़ॉल्व किए जाने वाले डायनामिक वेरिएबल का नाम
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — कॉल कनेक्ट होने के बाद भेजे जाने वाले DTMF अंक (जैसे, एक्सटेंशन के लिए 'ww1234')

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — उस डायनामिक वेरिएबल का नाम जिसका मान अनुमत मानों की JSON ऐरे में बदलना चाहिए, जैसे ["ws_alpha", "ws_beta"]। सिस्टम वेरिएबल केवल सूची में बदलने पर काम करते हैं।

### LiteralJsonSchemaPropertyConstantValue

इस प्रॉपर्टी के लिए इस्तेमाल किया जाने वाला स्थिर मान। description, dynamic_variable, is_system_provided और is_omitted के साथ परस्पर अनन्य है।

### ArrayJsonSchemaPropertyInputItems

array elements के लिए स्कीमा।

## Examples

**Request**

```json
{
  "workflow": {
    "edges": {
      "entry_to_tool_a": {
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": {
          "condition": "Tool A condition"
        }
      },
      "start_to_entry": {
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": {}
      },
      "tool_a_to_failure": {
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": {
          "successful": false
        }
      },
      "tool_a_to_tool_b": {
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": {
          "successful": true
        }
      },
      "tool_b_to_agent_transfer": {
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": {}
      },
      "tool_b_to_conversation": {
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": {
          "condition": "Conversation condition"
        }
      },
      "tool_b_to_end": {
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": {
          "condition": "End condition"
        }
      },
      "tool_b_to_phone": {
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": {
          "expression": {
            "children": [
              {
                "name": "force_phone_transfer"
              },
              {
                "prompt": "Phone condition",
                "value_schema": {
                  "description": "Phone condition",
                  "type": "boolean"
                }
              },
              {
                "left": {
                  "name": "mode"
                },
                "right": {
                  "value": "dev"
                }
              }
            ]
          }
        }
      }
    },
    "nodes": {
      "entry_node": {
        "conversation_config": {},
        "edge_order": [
          "entry_to_tool_a"
        ],
        "label": "Entry"
      },
      "failure_node": {
        "conversation_config": {},
        "label": "Failure"
      },
      "start_node": {
        "edge_order": [
          "start_to_entry"
        ]
      },
      "success_conversation": {
        "conversation_config": {},
        "label": "Success A"
      },
      "success_end": {},
      "success_phone": {
        "transfer_destination": {
          "phone_number": "+1234567890"
        }
      },
      "success_transfer": {
        "agent_id": "success_transfer_agent"
      },
      "tool_node_a": {
        "edge_order": [
          "tool_a_to_failure",
          "tool_a_to_tool_b"
        ],
        "tools": [
          {
            "tool_id": "tool_a"
          },
          {
            "tool_id": "tool_b"
          }
        ]
      },
      "tool_node_b": {
        "edge_order": [
          "tool_b_to_conversation",
          "tool_b_to_end",
          "tool_b_to_phone",
          "tool_b_to_agent_transfer"
        ],
        "tools": [
          {
            "tool_id": "tool_a"
          }
        ]
      }
    }
  },
  "name": "string"
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts"

querystring = {"branch_id":"agtbrch_8901k4t9z5defmb8vh3e9361y7nj"}

payload = {
    "workflow": {
        "edges": {
            "entry_to_tool_a": {
                "source": "entry_node",
                "target": "tool_node_a",
                "forward_condition": { "condition": "Tool A condition" }
            },
            "start_to_entry": {
                "source": "start_node",
                "target": "entry_node",
                "forward_condition": {}
            },
            "tool_a_to_failure": {
                "source": "tool_node_a",
                "target": "failure_node",
                "forward_condition": { "successful": False }
            },
            "tool_a_to_tool_b": {
                "source": "tool_node_a",
                "target": "tool_node_b",
                "forward_condition": { "successful": True }
            },
            "tool_b_to_agent_transfer": {
                "source": "tool_node_b",
                "target": "success_transfer",
                "forward_condition": {}
            },
            "tool_b_to_conversation": {
                "source": "tool_node_b",
                "target": "success_conversation",
                "forward_condition": { "condition": "Conversation condition" }
            },
            "tool_b_to_end": {
                "source": "tool_node_b",
                "target": "success_end",
                "forward_condition": { "condition": "End condition" }
            },
            "tool_b_to_phone": {
                "source": "tool_node_b",
                "target": "success_phone",
                "forward_condition": { "expression": { "children": [
                            { "name": "force_phone_transfer" },
                            {
                                "prompt": "Phone condition",
                                "value_schema": {
                                    "description": "Phone condition",
                                    "type": "boolean"
                                }
                            },
                            {
                                "left": { "name": "mode" },
                                "right": { "value": "dev" }
                            }
                        ] } }
            }
        },
        "nodes": {
            "entry_node": {
                "conversation_config": {},
                "edge_order": ["entry_to_tool_a"],
                "label": "Entry"
            },
            "failure_node": {
                "conversation_config": {},
                "label": "Failure"
            },
            "start_node": { "edge_order": ["start_to_entry"] },
            "success_conversation": {
                "conversation_config": {},
                "label": "Success A"
            },
            "success_end": {},
            "success_phone": { "transfer_destination": { "phone_number": "+1234567890" } },
            "success_transfer": { "agent_id": "success_transfer_agent" },
            "tool_node_a": {
                "edge_order": ["tool_a_to_failure", "tool_a_to_tool_b"],
                "tools": [{ "tool_id": "tool_a" }, { "tool_id": "tool_b" }]
            },
            "tool_node_b": {
                "edge_order": ["tool_b_to_conversation", "tool_b_to_end", "tool_b_to_phone", "tool_b_to_agent_transfer"],
                "tools": [{ "tool_id": "tool_a" }]
            }
        }
    },
    "name": "string"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"workflow":{"edges":{"entry_to_tool_a":{"source":"entry_node","target":"tool_node_a","forward_condition":{"condition":"Tool A condition"}},"start_to_entry":{"source":"start_node","target":"entry_node","forward_condition":{}},"tool_a_to_failure":{"source":"tool_node_a","target":"failure_node","forward_condition":{"successful":false}},"tool_a_to_tool_b":{"source":"tool_node_a","target":"tool_node_b","forward_condition":{"successful":true}},"tool_b_to_agent_transfer":{"source":"tool_node_b","target":"success_transfer","forward_condition":{}},"tool_b_to_conversation":{"source":"tool_node_b","target":"success_conversation","forward_condition":{"condition":"Conversation condition"}},"tool_b_to_end":{"source":"tool_node_b","target":"success_end","forward_condition":{"condition":"End condition"}},"tool_b_to_phone":{"source":"tool_node_b","target":"success_phone","forward_condition":{"expression":{"children":[{"name":"force_phone_transfer"},{"prompt":"Phone condition","value_schema":{"description":"Phone condition","type":"boolean"}},{"left":{"name":"mode"},"right":{"value":"dev"}}]}}}},"nodes":{"entry_node":{"conversation_config":{},"edge_order":["entry_to_tool_a"],"label":"Entry"},"failure_node":{"conversation_config":{},"label":"Failure"},"start_node":{"edge_order":["start_to_entry"]},"success_conversation":{"conversation_config":{},"label":"Success A"},"success_end":{},"success_phone":{"transfer_destination":{"phone_number":"+1234567890"}},"success_transfer":{"agent_id":"success_transfer_agent"},"tool_node_a":{"edge_order":["tool_a_to_failure","tool_a_to_tool_b"],"tools":[{"tool_id":"tool_a"},{"tool_id":"tool_b"}]},"tool_node_b":{"edge_order":["tool_b_to_conversation","tool_b_to_end","tool_b_to_phone","tool_b_to_agent_transfer"],"tools":[{"tool_id":"tool_a"}]}}},"name":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj"

	payload := strings.NewReader("{\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"condition\": \"Tool A condition\"\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {}\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"successful\": false\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"successful\": true\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {}\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"condition\": \"Conversation condition\"\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"condition\": \"End condition\"\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"expression\": {\n            \"children\": [\n              {\n                \"name\": \"force_phone_transfer\"\n              },\n              {\n                \"prompt\": \"Phone condition\",\n                \"value_schema\": {\n                  \"description\": \"Phone condition\",\n                  \"type\": \"boolean\"\n                }\n              },\n              {\n                \"left\": {\n                  \"name\": \"mode\"\n                },\n                \"right\": {\n                  \"value\": \"dev\"\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"conversation_config\": {},\n        \"edge_order\": [\n          \"entry_to_tool_a\"\n        ],\n        \"label\": \"Entry\"\n      },\n      \"failure_node\": {\n        \"conversation_config\": {},\n        \"label\": \"Failure\"\n      },\n      \"start_node\": {\n        \"edge_order\": [\n          \"start_to_entry\"\n        ]\n      },\n      \"success_conversation\": {\n        \"conversation_config\": {},\n        \"label\": \"Success A\"\n      },\n      \"success_end\": {},\n      \"success_phone\": {\n        \"transfer_destination\": {\n          \"phone_number\": \"+1234567890\"\n        }\n      },\n      \"success_transfer\": {\n        \"agent_id\": \"success_transfer_agent\"\n      },\n      \"tool_node_a\": {\n        \"edge_order\": [\n          \"tool_a_to_failure\",\n          \"tool_a_to_tool_b\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          },\n          {\n            \"tool_id\": \"tool_b\"\n          }\n        ]\n      },\n      \"tool_node_b\": {\n        \"edge_order\": [\n          \"tool_b_to_conversation\",\n          \"tool_b_to_end\",\n          \"tool_b_to_phone\",\n          \"tool_b_to_agent_transfer\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          }\n        ]\n      }\n    }\n  },\n  \"name\": \"string\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"condition\": \"Tool A condition\"\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {}\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"successful\": false\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"successful\": true\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {}\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"condition\": \"Conversation condition\"\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"condition\": \"End condition\"\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"expression\": {\n            \"children\": [\n              {\n                \"name\": \"force_phone_transfer\"\n              },\n              {\n                \"prompt\": \"Phone condition\",\n                \"value_schema\": {\n                  \"description\": \"Phone condition\",\n                  \"type\": \"boolean\"\n                }\n              },\n              {\n                \"left\": {\n                  \"name\": \"mode\"\n                },\n                \"right\": {\n                  \"value\": \"dev\"\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"conversation_config\": {},\n        \"edge_order\": [\n          \"entry_to_tool_a\"\n        ],\n        \"label\": \"Entry\"\n      },\n      \"failure_node\": {\n        \"conversation_config\": {},\n        \"label\": \"Failure\"\n      },\n      \"start_node\": {\n        \"edge_order\": [\n          \"start_to_entry\"\n        ]\n      },\n      \"success_conversation\": {\n        \"conversation_config\": {},\n        \"label\": \"Success A\"\n      },\n      \"success_end\": {},\n      \"success_phone\": {\n        \"transfer_destination\": {\n          \"phone_number\": \"+1234567890\"\n        }\n      },\n      \"success_transfer\": {\n        \"agent_id\": \"success_transfer_agent\"\n      },\n      \"tool_node_a\": {\n        \"edge_order\": [\n          \"tool_a_to_failure\",\n          \"tool_a_to_tool_b\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          },\n          {\n            \"tool_id\": \"tool_b\"\n          }\n        ]\n      },\n      \"tool_node_b\": {\n        \"edge_order\": [\n          \"tool_b_to_conversation\",\n          \"tool_b_to_end\",\n          \"tool_b_to_phone\",\n          \"tool_b_to_agent_transfer\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          }\n        ]\n      }\n    }\n  },\n  \"name\": \"string\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")
  .header("Content-Type", "application/json")
  .body("{\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"condition\": \"Tool A condition\"\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {}\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"successful\": false\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"successful\": true\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {}\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"condition\": \"Conversation condition\"\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"condition\": \"End condition\"\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"expression\": {\n            \"children\": [\n              {\n                \"name\": \"force_phone_transfer\"\n              },\n              {\n                \"prompt\": \"Phone condition\",\n                \"value_schema\": {\n                  \"description\": \"Phone condition\",\n                  \"type\": \"boolean\"\n                }\n              },\n              {\n                \"left\": {\n                  \"name\": \"mode\"\n                },\n                \"right\": {\n                  \"value\": \"dev\"\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"conversation_config\": {},\n        \"edge_order\": [\n          \"entry_to_tool_a\"\n        ],\n        \"label\": \"Entry\"\n      },\n      \"failure_node\": {\n        \"conversation_config\": {},\n        \"label\": \"Failure\"\n      },\n      \"start_node\": {\n        \"edge_order\": [\n          \"start_to_entry\"\n        ]\n      },\n      \"success_conversation\": {\n        \"conversation_config\": {},\n        \"label\": \"Success A\"\n      },\n      \"success_end\": {},\n      \"success_phone\": {\n        \"transfer_destination\": {\n          \"phone_number\": \"+1234567890\"\n        }\n      },\n      \"success_transfer\": {\n        \"agent_id\": \"success_transfer_agent\"\n      },\n      \"tool_node_a\": {\n        \"edge_order\": [\n          \"tool_a_to_failure\",\n          \"tool_a_to_tool_b\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          },\n          {\n            \"tool_id\": \"tool_b\"\n          }\n        ]\n      },\n      \"tool_node_b\": {\n        \"edge_order\": [\n          \"tool_b_to_conversation\",\n          \"tool_b_to_end\",\n          \"tool_b_to_phone\",\n          \"tool_b_to_agent_transfer\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          }\n        ]\n      }\n    }\n  },\n  \"name\": \"string\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj', [
  'body' => '{
  "workflow": {
    "edges": {
      "entry_to_tool_a": {
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": {
          "condition": "Tool A condition"
        }
      },
      "start_to_entry": {
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": {}
      },
      "tool_a_to_failure": {
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": {
          "successful": false
        }
      },
      "tool_a_to_tool_b": {
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": {
          "successful": true
        }
      },
      "tool_b_to_agent_transfer": {
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": {}
      },
      "tool_b_to_conversation": {
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": {
          "condition": "Conversation condition"
        }
      },
      "tool_b_to_end": {
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": {
          "condition": "End condition"
        }
      },
      "tool_b_to_phone": {
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": {
          "expression": {
            "children": [
              {
                "name": "force_phone_transfer"
              },
              {
                "prompt": "Phone condition",
                "value_schema": {
                  "description": "Phone condition",
                  "type": "boolean"
                }
              },
              {
                "left": {
                  "name": "mode"
                },
                "right": {
                  "value": "dev"
                }
              }
            ]
          }
        }
      }
    },
    "nodes": {
      "entry_node": {
        "conversation_config": {},
        "edge_order": [
          "entry_to_tool_a"
        ],
        "label": "Entry"
      },
      "failure_node": {
        "conversation_config": {},
        "label": "Failure"
      },
      "start_node": {
        "edge_order": [
          "start_to_entry"
        ]
      },
      "success_conversation": {
        "conversation_config": {},
        "label": "Success A"
      },
      "success_end": {},
      "success_phone": {
        "transfer_destination": {
          "phone_number": "+1234567890"
        }
      },
      "success_transfer": {
        "agent_id": "success_transfer_agent"
      },
      "tool_node_a": {
        "edge_order": [
          "tool_a_to_failure",
          "tool_a_to_tool_b"
        ],
        "tools": [
          {
            "tool_id": "tool_a"
          },
          {
            "tool_id": "tool_b"
          }
        ]
      },
      "tool_node_b": {
        "edge_order": [
          "tool_b_to_conversation",
          "tool_b_to_end",
          "tool_b_to_phone",
          "tool_b_to_agent_transfer"
        ],
        "tools": [
          {
            "tool_id": "tool_a"
          }
        ]
      }
    }
  },
  "name": "string"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"condition\": \"Tool A condition\"\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {}\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"successful\": false\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"successful\": true\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {}\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"condition\": \"Conversation condition\"\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"condition\": \"End condition\"\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"expression\": {\n            \"children\": [\n              {\n                \"name\": \"force_phone_transfer\"\n              },\n              {\n                \"prompt\": \"Phone condition\",\n                \"value_schema\": {\n                  \"description\": \"Phone condition\",\n                  \"type\": \"boolean\"\n                }\n              },\n              {\n                \"left\": {\n                  \"name\": \"mode\"\n                },\n                \"right\": {\n                  \"value\": \"dev\"\n                }\n              }\n            ]\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"conversation_config\": {},\n        \"edge_order\": [\n          \"entry_to_tool_a\"\n        ],\n        \"label\": \"Entry\"\n      },\n      \"failure_node\": {\n        \"conversation_config\": {},\n        \"label\": \"Failure\"\n      },\n      \"start_node\": {\n        \"edge_order\": [\n          \"start_to_entry\"\n        ]\n      },\n      \"success_conversation\": {\n        \"conversation_config\": {},\n        \"label\": \"Success A\"\n      },\n      \"success_end\": {},\n      \"success_phone\": {\n        \"transfer_destination\": {\n          \"phone_number\": \"+1234567890\"\n        }\n      },\n      \"success_transfer\": {\n        \"agent_id\": \"success_transfer_agent\"\n      },\n      \"tool_node_a\": {\n        \"edge_order\": [\n          \"tool_a_to_failure\",\n          \"tool_a_to_tool_b\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          },\n          {\n            \"tool_id\": \"tool_b\"\n          }\n        ]\n      },\n      \"tool_node_b\": {\n        \"edge_order\": [\n          \"tool_b_to_conversation\",\n          \"tool_b_to_end\",\n          \"tool_b_to_phone\",\n          \"tool_b_to_agent_transfer\"\n        ],\n        \"tools\": [\n          {\n            \"tool_id\": \"tool_a\"\n          }\n        ]\n      }\n    }\n  },\n  \"name\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "workflow": [
    "edges": [
      "entry_to_tool_a": [
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": ["condition": "Tool A condition"]
      ],
      "start_to_entry": [
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": []
      ],
      "tool_a_to_failure": [
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": ["successful": false]
      ],
      "tool_a_to_tool_b": [
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": ["successful": true]
      ],
      "tool_b_to_agent_transfer": [
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": []
      ],
      "tool_b_to_conversation": [
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": ["condition": "Conversation condition"]
      ],
      "tool_b_to_end": [
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": ["condition": "End condition"]
      ],
      "tool_b_to_phone": [
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": ["expression": ["children": [
              ["name": "force_phone_transfer"],
              [
                "prompt": "Phone condition",
                "value_schema": [
                  "description": "Phone condition",
                  "type": "boolean"
                ]
              ],
              [
                "left": ["name": "mode"],
                "right": ["value": "dev"]
              ]
            ]]]
      ]
    ],
    "nodes": [
      "entry_node": [
        "conversation_config": [],
        "edge_order": ["entry_to_tool_a"],
        "label": "Entry"
      ],
      "failure_node": [
        "conversation_config": [],
        "label": "Failure"
      ],
      "start_node": ["edge_order": ["start_to_entry"]],
      "success_conversation": [
        "conversation_config": [],
        "label": "Success A"
      ],
      "success_end": [],
      "success_phone": ["transfer_destination": ["phone_number": "+1234567890"]],
      "success_transfer": ["agent_id": "success_transfer_agent"],
      "tool_node_a": [
        "edge_order": ["tool_a_to_failure", "tool_a_to_tool_b"],
        "tools": [["tool_id": "tool_a"], ["tool_id": "tool_b"]]
      ],
      "tool_node_b": [
        "edge_order": ["tool_b_to_conversation", "tool_b_to_end", "tool_b_to_phone", "tool_b_to_agent_transfer"],
        "tools": [["tool_id": "tool_a"]]
      ]
    ]
  ],
  "name": "string"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```