> 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.

# Agent-Entwurf erstellen

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

Erstellen Sie einen neuen Entwurf für einen Agenten.

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) — Die ID eines Agenten. Sie wird beim Erstellen des Agenten zurückgegeben.

### Query parameters

- `branch_id` (string, required) — Die ID des zu verwendenden Agent-Branches

### 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) — Gesprächskonfiguration für den Entwurf
- `platform_settings` (map from string to any, required) — Plattformeinstellungen für den Entwurf
- `workflow` (AgentWorkflowRequestModel, required) — Workflow für den Entwurf
- `name` (string, required) — Name für den Entwurf
- `tags` (list of string, optional, nullable) — Tags zum Klassifizieren und Filtern des Agents

## Response

### 200

Erfolgreiche Antwort

- `any`

## Errors

### 422 Unprocessable Entity Error

Validierungsfehler

- `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) — Ob Schleifen bei der Workflow-Ausführung verhindert werden sollen.

### ValidationError

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

### WorkflowEdgeModel-Input

- `source` (string, required) — ID des Quellknotens.
- `target` (string, required) — ID des Zielknotens.
- `forward_condition` (WorkflowEdgeModelInputForwardCondition, optional, nullable) — Bedingung, die erfüllt sein muss, damit die Kante vorwärts durchlaufen wird (Quelle zu Ziel).
- `backward_condition` (WorkflowEdgeModelInputBackwardCondition, optional, nullable) — Bedingung, die erfüllt sein muss, damit die Kante rückwärts durchlaufen wird (Ziel zu Quelle).

### AgentWorkflowRequestModelNodes

- `type`: `end` (WorkflowEndNodeModel)
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `outcome` (enum, optional, default: success) — Ob das Erreichen dieses Endknotens die Konversation erfolgreich beendet oder fehlschlagen lässt.
    - Allowed values: `success`, `failure`
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
- `type`: `override_agent` (WorkflowOverrideAgentNodeModel)
  - `label` (string, required) — Menschenlesbare Bezeichnung für den Knoten, die in der gesamten Benutzeroberfläche verwendet wird.
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — Zusätzliche Wissensdatenbankdokumente, auf die der Subagent zugreifen kann. Sie werden zusätzlich zu den Dokumenten des Hauptagenten verwendet.
  - `additional_prompt` (string, optional) — Spezifisches Ziel für diesen Subagenten. Es wird dem System-Prompt hinzugefügt und kann verwendet werden, um das Verhalten des Agenten in diesem Kontext weiter zu verfeinern.
  - `additional_tool_ids` (list of string, optional) — IDs zusätzlicher Tools, auf die der Subagent Zugriff hat. Diese werden zusätzlich zu den Tools des Hauptagenten verwendet.
  - `conversation_config` (ConversationalConfigAPIModelWorkflowOverride-Input, optional) — Konfigurationsüberschreibungen, die angewendet werden, während der Subagent die Unterhaltung führt.
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `entry_behavior` (enum, optional, default: auto) — Legt fest, ob dieser Knoten beim Eintritt sofort eine Antwort generieren oder auf Nutzereingaben warten soll. Bei "auto" wird das Verhalten anhand des Typs des vorhergehenden Knotens bestimmt: "wait_for_user" nach den Knoten "say" und "start", andernfalls "generate_immediately".
    - Allowed values: `generate_immediately`, `wait_for_user`, `auto`
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
- `type`: `phone_number` (WorkflowPhoneNumberNodeModel)
  - `transfer_destination` (WorkflowPhoneNumberNodeModelInputTransferDestination, required)
  - `custom_sip_headers` (list of WorkflowPhoneNumberNodeModelInputCustomSipHeadersItems, optional) — Benutzerdefinierte SIP-Header, die bei der Gesprächsweiterleitung eingeschlossen werden. Jeder Header kann entweder ein statischer Wert oder ein Verweis auf eine dynamische Variable sein.
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
  - `post_dial_digits` (WorkflowPhoneNumberNodeModelInputPostDialDigits, optional, nullable) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.
  - `sip_refer_play_dialtone` (boolean, optional, default: true) — Wenn True, wird auf dem ursprünglichen Anrufzweig ein Klingelton wiedergegeben, während eine SIP-REFER-Weiterleitung abgeschlossen wird. Der Ton wird über RTP an den SIP-Peer übertragen, der den REFER ausführt. Deaktivieren Sie dies, wenn das empfangende System, z. B. ein SBC oder Contact Center, ihn nicht hören soll. Wenn deaktiviert, hört der Anrufer bis zum Abschluss der Weiterleitung Stille. Nur für SIP-REFER-Weiterleitungen.
  - `transfer_type` (enum, optional, default: conference)
    - Allowed values: `blind`, `conference`, `sip_refer`
  - `uui` (UUITransferConfig, optional, nullable) — User-to-User Information (RFC 7433), die SIP-REFER-Weiterleitungen beigefügt wird. Überträgt den Anrufkontext, etwa CRM-Identifikatoren oder den Eskalationsgrund, über die Weiterleitungsgrenze hinweg.
- `type`: `standalone_agent` (WorkflowStandaloneAgentNodeModel)
  - `agent_id` (string, optional, nullable) — Die ID des Agenten, an den die Unterhaltung übergeben werden soll. None bedeutet eine Übergabe innerhalb des aktuellen Agenten.
  - `branch_id` (string, optional, nullable) — Optionale Branch-ID für den Zielagenten. Ohne Angabe folgt sie dem Traffic-Deployment des Zielagenten oder verwendet dessen Haupt-Branch, wenn node_id gesetzt ist.
  - `delay_ms` (integer, optional, default: 0) — Künstliche Verzögerung in Millisekunden vor der Weiterleitung der Unterhaltung.
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `enable_transferred_agent_first_message` (boolean, optional, default: false) — Ob der übertragene Agent nach der Übergabe seine konfigurierte erste Nachricht senden soll.
  - `node_id` (string, optional, nullable) — Optionale Zielknoten-ID im Workflow des Ziel-Agenten. Wenn festgelegt, startet die Übergabe an diesem Knoten statt am Standard-Einstiegsknoten.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
  - `preserve_client_tts_overrides` (boolean, optional, default: false) — Legt fest, ob TTS-Client-Überschreibungen auf den weitergeleiteten Agenten übertragen werden sollen.
  - `preserve_voice_settings` (boolean, optional, default: false) — Legt fest, ob die Basisstimme, das TTS-Modell und die Stimmeinstellungen auf den übertragenen Agenten übernommen werden sollen.
  - `transfer_message` (string, optional, nullable) — Optionale Nachricht, die vor dem Einleiten der Weiterleitung an den Benutzer gesendet wird.
- `type`: `start` (WorkflowStartNodeModel)
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
- `type`: `tool` (WorkflowToolNodeModel)
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
  - `tools` (list of WorkflowToolLocator, optional) — Liste der parallel auszuführenden Tools. Der gesamte Knoten gilt als erfolgreich, wenn alle Tools erfolgreich ausgeführt wurden.
- `type`: `say` (WorkflowSayNodeModel)
  - `label` (string, required) — Menschenlesbare Bezeichnung für den Knoten, die in der gesamten Benutzeroberfläche verwendet wird.
  - `message` (WorkflowSayNodeModelInputMessage, required) — Nachricht, die dieser Knoten spricht. Verwenden Sie `literal` für genauen Text oder `prompt`, damit das LLM die Nachricht aus einer Beschreibung erzeugt.
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — Wissensbasisdokumente, die dem LLM beim Erzeugen der Nachricht dieses Knotens zusätzlich zu den Dokumenten des Agenten zur Verfügung stehen.
  - `additional_prompt` (string, optional) — Wird zur Konsistenz mit Subagent-Knoten akzeptiert, aber nicht verwendet. Beschreiben Sie die Nachricht in `message.prompt` oder ersetzen Sie den System-Prompt durch `conversation_config.agent.prompt.prompt`.
  - `additional_tool_ids` (list of string, optional) — Wird zur Konsistenz mit Subagent-Knoten akzeptiert, aber nicht verwendet. Ein Say-Knoten kann keine Tools aufrufen.
  - `conversation_config` (ConversationalConfigAPIModelWorkflowOverride-Input, optional) — Konfigurationsüberschreibungen, die angewendet werden, während dieser Knoten spricht, etwa die Stimme oder bei Prompt-Nachrichten das LLM und der System-Prompt.
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.
  - `wait_for_speech_completion` (boolean, optional, default: false) — Bei true wechselt der Workflow erst zum nächsten Knoten, nachdem die Nachricht vollständig gesprochen wurde.
  - `wait_for_user_response` (boolean, optional, default: false) — Bei true spricht der Knoten seine Nachricht und wartet dann auf die Antwort des Nutzers, bevor ausgehende Kanten ausgewertet werden. So können Kanten anhand der Antwort verzweigen. Bleibt der Nutzer still, wird der Workflow nach dem Turn-Timeout fortgesetzt.
- `type`: `update_state` (WorkflowUpdateStateNodeModel)
  - `label` (string, required) — Menschenlesbare Bezeichnung für den Knoten, die in der gesamten Benutzeroberfläche verwendet wird.
  - `updates` (list of WorkflowStateUpdate-Input, required) — Statusaktualisierungen, die angewendet werden, wenn der Workflow diesen Knoten erreicht. Ein Knoten akzeptiert höchstens 50 Aktualisierungen.
  - `edge_order` (list of string, optional) — Die IDs ausgehender Kanten in der Reihenfolge, in der sie ausgewertet werden sollen.
  - `position` (Position-Input, optional) — Position des Knotens im Workflow.

### ValidationErrorLocItems

### WorkflowEdgeModelInputForwardCondition

Bedingung, die erfüllt sein muss, damit die Kante vorwärts durchlaufen wird (Quelle zu Ziel).

- `type`: `expression` (WorkflowExpressionConditionModel)
  - `expression` (ASTNode-Input, required) — Auszuwertender Ausdruck.
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `llm` (WorkflowLLMConditionModel)
  - `condition` (string, required) — Auszuwertende Bedingung
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `result` (WorkflowResultConditionModel)
  - `successful` (boolean, required) — Gibt an, ob alle Tools im zuvor ausgeführten Tool-Knoten erfolgreich ausgeführt wurden.
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `unconditional` (WorkflowUnconditionalModel)
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.

### WorkflowEdgeModelInputBackwardCondition

Bedingung, die erfüllt sein muss, damit die Kante rückwärts durchlaufen wird (Ziel zu Quelle).

- `type`: `expression` (WorkflowExpressionConditionModel)
  - `expression` (ASTNode-Input, required) — Auszuwertender Ausdruck.
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `llm` (WorkflowLLMConditionModel)
  - `condition` (string, required) — Auszuwertende Bedingung
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `result` (WorkflowResultConditionModel)
  - `successful` (boolean, required) — Gibt an, ob alle Tools im zuvor ausgeführten Tool-Knoten erfolgreich ausgeführt wurden.
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.
- `type`: `unconditional` (WorkflowUnconditionalModel)
  - `label` (string, optional, nullable) — Optionale menschenlesbare Bezeichnung für die in der gesamten Benutzeroberfläche verwendete Bedingung.

### Position-Input

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

### KnowledgeBaseLocator

- `type` (enum, required) — Der Typ der Wissensdatenbank
  - Allowed values: `file`, `url`, `text`, `folder`
- `name` (string, required) — Der Name der Wissensdatenbank
- `id` (string, required) — Die ID der Wissensdatenbank
- `usage_mode` (enum, optional, default: auto) — Der Nutzungsmodus der Wissensdatenbank
  - Allowed values: `prompt`, `auto`

### ConversationalConfigAPIModelWorkflowOverride-Input

- `asr` (ASRConversationalConfigWorkflowOverride, optional, nullable) — Konfiguration für Transkription in Unterhaltungen
- `turn` (TurnConfigWorkflowOverride, optional, nullable) — Konfiguration für Sprecherwechselerkennung
- `tts` (TTSConversationalConfigWorkflowOverride-Input, optional, nullable) — Konfiguration für Text to Speech in Unterhaltungen
- `conversation` (ConversationConfigWorkflowOverride-Input, optional, nullable) — Konfiguration für Unterhaltungsereignisse
- `language_presets` (map from string to LanguagePreset-Input, optional, nullable) — Sprachvoreinstellungen für Gespräche
- `vad` (VADConfigWorkflowOverride, optional, nullable) — Konfiguration für Sprachaktivitätserkennung
- `agent` (AgentConfigAPIModelWorkflowOverride-Input, optional, nullable) — Agent-spezifische Konfiguration

### 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) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der Header-Wert

### WorkflowPhoneNumberNodeModelInputPostDialDigits

Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl)

### UUITransferConfig

User-to-User-Information-Umschlag für SIP-REFER-Weiterleitungen (RFC 7433). Ausgehende Payloads sind hexadezimal codiert (die einzige in RFC 7433 definierte Codierung). Die Protokolldiskriminator-Achse ermöglicht, plattformspezifische Formate (Talkdesk, Genesys, ...) per Konfiguration auszudrücken, statt über verstreute Weiterleitungs-Flags. Weitere Achsen (ASCII-Codierung, Header-Name, Zweck-/Inhaltsparameter) können hier ergänzt werden, ohne das Weiterleitungsmodell anzupassen.

- `data` (string, required) — UUI-Payload, die bei SIP-REFER-Weiterleitungen gesendet wird. Unterstützt eingebettete dynamische Variablen und wird bei der Weiterleitung hexadezimal codiert.
- `protocol_discriminator` (string, optional, nullable) — Optionaler Ein-Oktett-Protokolldiskriminator (zwei Hexadezimalziffern, z. B. '00'). Erforderlich für Plattformen wie Genesys Cloud, die andernfalls das erste Oktett der Payload entfernen. Für Plattformen wie Talkdesk, die eine reine Hex-Payload erwarten, nicht festlegen.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Wie protocol\_discriminator angehängt wird. 'prefix' stellt das Oktett der hexadezimalen Nutzlast voran (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' sendet es als separaten Parameter (User-to-User=\<hex>;pd=XX;encoding=hex). Wird ignoriert, wenn protocol\_discriminator nicht festgelegt ist.
  - Allowed values: `prefix`, `pd_parameter`

### WorkflowToolLocator

- `tool_id` (string, required)
- `schema_overrides` (map from string to WorkflowToolLocatorSchemaOverrides, optional, nullable) — Parameterüberschreibungen pro Knoten, die zusätzlich zur Konfiguration des Tools angewendet werden. Schlüssel sind punktgetrennte Parameterpfade (Webhook-Tools stellen Schlüsseln path_params./query_params./request_body. voran). Sie haben Vorrang vor allen Überschreibungen, die bereits im Tool selbst definiert sind.

### WorkflowSayNodeModelInputMessage

Nachricht, die dieser Knoten spricht. Verwenden Sie `literal` für genauen Text oder `prompt`, damit das LLM die Nachricht aus einer Beschreibung erzeugt.

- `type`: `literal` (SayNodeLiteralMessage)
  - `text` (string, required) — Der genaue Text, den der Agent spricht. Unterstützt Platzhalter für dynamische Variablen wie `{{variable_name}}`.
  - `text_translations` (map from string to TranslatedString, optional) — Übersetzungen von `text`, nach Sprachcode geordnet. Wenn für die Gesprächssprache ein Eintrag vorhanden ist, wird dessen Wert statt `text` gesprochen.
- `type`: `prompt` (SayNodePromptMessage)
  - `prompt` (string, required) — Beschreibung der Nachricht, die das LLM erzeugen soll. Sie wird zum System-Prompt des Agenten hinzugefügt, während dieser Knoten aktiv ist.

### WorkflowStateUpdate-Input

- `variable_name` (string, required) — Name der dynamischen Variablen, der ein Wert zugewiesen wird.
- `expression` (ASTNode-Input, required) — Ausdruck, dessen Ergebnis der Variablen zugewiesen wird. Er kann Konstanten, andere dynamische Variablen, vom LLM extrahierte Werte und Operatoren kombinieren.
- `type` ("dynamic_variable", optional, default: dynamic_variable)
- `required` (boolean, optional, default: true) — Bei false kann das LLM die Werte weglassen, auf denen diese Aktualisierung basiert. Die Aktualisierung wird dann übersprungen und die Variable behält ihren aktuellen Wert.

### ASTNode-Input

- `type`: `add_operator` (ASTAdditionOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `and_operator` (ASTAndOperatorNode)
  - `children` (list of ASTNode-Input, required) — Untergeordnete Knoten des logischen Operators.
- `type`: `boolean_literal` (ASTBooleanNode)
  - `value` (boolean, required) — Wert dieses Literals.
- `type`: `conditional_operator` (ASTConditionalOperatorNode)
  - `condition` (ASTNode-Input, required) — Bedingung, die festlegt, welcher Ausdruck ausgewählt wird.
  - `falseExpression` (ASTNode-Input, required) — Ausdruck, der ausgewählt wird, wenn die Bedingung false ist.
  - `trueExpression` (ASTNode-Input, required) — Ausdruck, der ausgewählt wird, wenn die Bedingung true ist.
- `type`: `div_operator` (ASTDivisionOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `dynamic_variable` (ASTDynamicVariableNode)
  - `name` (string, required) — Der Name der dynamischen Variable.
- `type`: `eq_operator` (ASTEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `gt_operator` (ASTGreaterThanOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `gte_operator` (ASTGreaterThanOrEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `llm` (llm)
- `type`: `lt_operator` (ASTLessThanOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `lte_operator` (ASTLessThanOrEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `mul_operator` (ASTMultiplicationOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `neq_operator` (ASTNotEqualsOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.
- `type`: `null_literal` (ASTNullNode)
- `type`: `number_literal` (ASTNumberNode)
  - `value` (AstNumberNodeInputValue, required) — Wert dieses Literals.
- `type`: `or_operator` (ASTOrOperatorNode)
  - `children` (list of ASTNode-Input, required) — Untergeordnete Knoten des logischen Operators.
- `type`: `string_literal` (ASTStringNode)
  - `value` (string, required) — Wert dieses Literals.
- `type`: `sub_operator` (ASTSubtractionOperatorNode)
  - `left` (ASTNode-Input, required) — Linker Operand des binären Operators.
  - `right` (ASTNode-Input, required) — Rechter Operand des binären Operators.

### ASRConversationalConfigWorkflowOverride

- `quality` (enum, optional, nullable, default: high) — Die Qualität der Transkription
  - Allowed values: `high`
- `provider` (enum, optional, nullable, default: scribe_realtime) — Der Anbieter des Transkriptionsdienstes
  - Allowed values: `elevenlabs`, `scribe_realtime`, `scribe_v2_turbo`
- `user_input_audio_format` (enum, optional, nullable, default: pcm_16000) — Das Format des zu transkribierenden Audios
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `keywords` (list of string, optional, nullable) — Schlüsselwörter, deren Vorhersagewahrscheinlichkeit erhöht werden soll

### TurnConfigWorkflowOverride

- `turn_timeout` (double, optional, nullable) — Maximale Wartezeit auf die Antwort des Nutzers, bevor der Nutzer erneut angesprochen wird
- `initial_wait_time` (double, optional, nullable) — Wie lange der Agent wartet, bis der Benutzer die Unterhaltung beginnt, wenn die erste Nachricht leer ist. Wenn nicht festgelegt, wird der reguläre turn_timeout verwendet.
- `silence_end_call_timeout` (double, optional, nullable) — Maximale Zeit seit der letzten Äußerung des Nutzers, bevor der Anruf beendet wird
- `turn_eagerness` (enum, optional, nullable, default: normal) — Steuert, wie schnell der Agent antwortet. Niedrig = weniger schnell (wartet länger), Standard = Standardgeschwindigkeit, Hoch = schneller (antwortet früher)
  - Allowed values: `patient`, `normal`, `eager`
- `spelling_patience` (enum, optional, nullable, default: auto) — Steuert, ob der Agent geduldiger sein soll, wenn der Nutzer Zahlen und benannte Entitäten buchstabiert. Auto = modellbasiert, Off = nie zusätzlich warten
  - Allowed values: `auto`, `off`
- `speculative_turn` (boolean, optional, nullable) — Wenn aktiviert, beginnt die Generierung von LLM-Antworten während Stille, bevor die volle Turn-Konfidenz erreicht ist. Dies reduziert die wahrgenommene Latenz, kann aber die LLM-Kosten erhöhen.
- `retranscribe_on_turn_timeout` (boolean, optional, nullable) — Wenn aktiviert und VAD keine Sprache erkennt, wird beim Turn-Timeout versucht, das angesammelte Audio erneut zu transkribieren. Deaktiviert die Abrechnung mit Stille-Rabatt, solange die Funktion für den aktiven Agenten oder Workflow-Knoten aktiviert ist.
- `turn_model` (enum, optional, nullable, default: turn_v3) — Zu verwendende Version des Turn-Detection-Modells.
  - Allowed values: `turn_v2`, `turn_v3`
- `interruption_ignore_terms` (list of string, optional, nullable) — Liste von Begriffen, die keine Unterbrechung auslösen sollen, wenn der Nutzer sie sagt (z. B. 'gotcha', 'understood'). Verwendet exakte Groß-/Kleinschreibungsunabhängige Übereinstimmung.
- `interruption_ignore_term_languages` (list of string, optional, nullable) — Sprachcodes, für die voreingestellte Kategorien ignorierter Begriffe aktiviert wurden. Sie werden explizit gespeichert, damit die Anzeige nicht aus Begriffsüberschneidungen abgeleitet wird.
- `merge_with_default_ignore_terms` (boolean, optional, nullable) — Wenn aktiviert, werden zusätzlich zu interruption_ignore_terms die kuratierten Standardbegriffe für interruption_ignore_term_languages verwendet.
- `transcribe_on_disabled_interruptions` (boolean, optional, nullable) — Wenn Unterbrechungen deaktiviert sind, wird das Gesagte des Benutzers dennoch transkribiert, damit es in den nächsten Turn übernommen werden kann. Wenn deaktiviert, wird Benutzersprache während eines nicht unterbrechbaren Turns ignoriert und löst keinen Turn aus.
- `soft_timeout_config` (SoftTimeoutConfigWorkflowOverride, optional, nullable) — Konfiguration für die Soft-Timeout-Funktion. Liefert sofortiges Feedback bei längeren LLM-Antworten.

### TTSConversationalConfigWorkflowOverride-Input

- `model_id` (enum, optional, nullable, default: eleven_v4_turbo) — Das für TTS zu verwendende Modell
  - 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) — Die für TTS zu verwendende Stimmen-ID
- `supported_voices` (list of SupportedVoice, optional, nullable) — Zusätzlich unterstützte Stimmen für den Agenten
- `expressive_mode` (boolean, optional, nullable) — Wenn aktiviert, wird der Prompt für ausdrucksstarke Audiotags angewendet. Für Nicht-v3-Modelle wird er automatisch deaktiviert.
- `suggested_audio_tags` (list of SuggestedAudioTag, optional, nullable) — Vorgeschlagene Audio-Tags für ausdrucksstärkere Sprache (für die Modelle eleven_v3 und eleven_v3_conversational). Der Agent kann weiterhin andere, hier nicht aufgeführte Tags verwenden.
- `agent_output_audio_format` (enum, optional, nullable, default: pcm_16000) — Das für TTS zu verwendende Audioformat
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `optimize_streaming_latency` (enum, optional, nullable) — Veraltet: Dieses Feld hat keine Wirkung und wird ignoriert.
  - Allowed values: `0`, `1`, `2`, `3`, `4`
- `stability` (double, optional, nullable) — Die Stabilität der generierten Sprache
- `speed` (double, optional, nullable) — Die Geschwindigkeit der generierten Sprache
- `similarity_boost` (double, optional, nullable) — Der Ähnlichkeits-Boost für generierte Sprache
- `text_normalisation_type` (enum, optional, nullable, default: system_prompt) — Methode zum Umwandeln von Zahlen in Wörter vor der Umwandlung von Text in Sprache. Bei SYSTEM_PROMPT wird der System-Prompt um Normalisierungsanweisungen ergänzt. Bei ELEVENLABS wird der Text nach der Generierung normalisiert, was eine leicht erhöhte Latenz verursacht.
  - Allowed values: `system_prompt`, `elevenlabs`
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional, nullable) — Die Referenzen auf Aussprachewörterbücher
- `enable_phoneme_tags` (boolean, optional, nullable) — Aktivierung der Verarbeitung von SSML-Phonem-Tags für V3-Modelle. Wenn aktiviert, werden Phonem-Tags (inline und aus Aussprachewörterbüchern) vor dem Senden an das Modell in inline-IPA geparst.
- `audio_effects` (EffectsSpec-Input, optional, nullable) — Optionale TTS-Effektspezifikation: Filtervoreinstellung, Distanz (Proximity-EQ) und Umgebung (Convolution-Reverb).

### ConversationConfigWorkflowOverride-Input

- `text_only` (boolean, optional, nullable) — Wenn aktiviert, wird Audio nicht verarbeitet und nur Text verwendet. Verwenden Sie dies, um Audiokosten zu vermeiden.
- `max_duration_seconds` (integer, optional, nullable) — Die maximale Dauer einer Unterhaltung in Sekunden
- `client_events` (list of enum, optional, nullable) — Die Ereignisse, die an den Client gesendet werden
  - 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) — Konfiguration für Dateieingaben (Bild-/PDF-Uploads) während Unterhaltungen.
- `monitoring_enabled` (boolean, optional, nullable) — Aktiviert die Echtzeitüberwachung von Gesprächen über WebSocket
- `monitoring_events` (list of enum, optional, nullable) — Die Ereignisse, die an Monitoring-Verbindungen gesendet werden.
  - 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) — Erfassung von DTMF-Eingaben (Tastenfeld) während Telefonanrufen konfigurieren
- `background_sound` (BackgroundSoundConfigWorkflowOverride, optional, nullable) — Konfiguration für Hintergrundgeräusche während Unterhaltungen.
- `source_attribution` (boolean, optional, nullable) — Wenn aktiviert und Inhalte der Wissensbasis vorhanden sind, wird das LLM angewiesen anzugeben, welche Quellen es verwendet hat.

### LanguagePreset-Input

- `overrides` (ConversationConfigClientOverride-Input, required) — Die Überschreibungen für die Sprachvoreinstellung
- `first_message_translation` (LanguagePresetTranslation, optional, nullable) — Die Übersetzung der ersten Nachricht
- `soft_timeout_translation` (LanguagePresetTranslation, optional, nullable) — Die Übersetzung der Soft-Timeout-Nachricht

### VADConfigWorkflowOverride

### AgentConfigAPIModelWorkflowOverride-Input

- `first_message` (string, optional, nullable) — Wenn nicht leer, die erste Nachricht, die der Agent sagt. Wenn leer, wartet der Agent, bis der Nutzer die Unterhaltung beginnt.
- `language` (string, optional, nullable) — Sprache des Agenten – verwendet für ASR und TTS
- `hinglish_mode` (boolean, optional, nullable) — Wenn aktiviert, mischt der Agent englische Wörter und Ausdrücke in Antworten auf Hindi, Malayalam, Telugu oder Kannada.
- `dynamic_variables` (DynamicVariablesConfigWorkflowOverride, optional, nullable) — Konfiguration für dynamische Variablen
- `disable_first_message_interruptions` (boolean, optional, nullable) — Wenn true, kann der Nutzer den Agenten nicht unterbrechen, während die erste Nachricht übermittelt wird.
- `max_conversation_duration_message` (string, optional, nullable) — Wenn nicht leer, die Nachricht, die der Agent sendet, wenn die maximale Gesprächsdauer erreicht ist.
- `text_behavior_overrides` (map from string to BehaviorOverride, optional, nullable) — Überschreibungen des Antwortverhaltens pro Kanal für Textunterhaltungen. Wenn nicht festgelegt, gelten die integrierten Kanalstandards.
- `prompt` (PromptAgentAPIModelWorkflowOverride-Input, optional, nullable) — Der Prompt für den Agenten

### WorkflowToolLocatorSchemaOverrides

- `source`: `constant` (ConstantSchemaOverride)
  - `constant_value` (WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue, required, nullable) — Der zu verwendende konstante Wert
- `source`: `dynamic_variable` (DynamicVariableSchemaOverride)
  - `dynamic_variable` (string, required) — Der Name der zu verwendenden dynamischen Variable
- `source`: `llm` (LLMSchemaOverride)
  - `prompt` (string, optional, nullable) — Prompt-Überschreibung für das LLM. Wenn nicht angegeben, wird die ursprüngliche Schemabeschreibung verwendet.
- `source`: `omit` (OmitSchemaOverride)

### TranslatedString

- `value` (string, required)

### AstNumberNodeInputValue

Wert dieses Literals.

### SoftTimeoutConfigWorkflowOverride

- `timeout_seconds` (double, optional, nullable) — Zeit in Sekunden, bevor die vordefinierte Nachricht während des Wartens auf die LLM-Antwort angezeigt wird. Zum Deaktivieren auf -1 setzen.
- `message` (string, optional, nullable) — Nachricht, die angezeigt wird, wenn beim Warten auf die LLM-Antwort der erste weiche Timeout erreicht wird. Unterstützt dynamische Variablen (z. B. \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional, nullable) — Zusätzliche statische Füllnachrichten für nachfolgende Soft-Timeouts in derselben LLM-Generierung. Das erste Timeout verwendet `message`. Wenn weniger Nachrichten als `max_soft_timeouts_per_generation` konfiguriert sind, wird die zuletzt konfigurierte Nachricht wiederholt; andernfalls wird eine integrierte Füllnachricht verwendet.
- `use_llm_generated_message` (boolean, optional, nullable) — Wenn aktiviert, wird die Nachricht bei einem Soft-Timeout dynamisch generiert, statt die statische Nachricht zu verwenden.
- `randomize_fillers` (boolean, optional, nullable) — Wenn aktiviert, wird die Reihenfolge statischer Nachrichten bei einem Soft-Timeout einmal zu Beginn jedes Turns zufällig gemischt. Gilt nur, wenn use_llm_generated_message false ist.
- `max_soft_timeouts_per_generation` (integer, optional, nullable) — Maximale Anzahl von Füllnachrichten beim Warten auf eine einzelne LLM-Antwort. Wird alle timeout_seconds ausgelöst, bis das LLM Inhalte streamt oder dieses Limit erreicht ist.
- `llm_generated_message_prompt_override` (string, optional, nullable) — Benutzerdefinierter Prompt zum Generieren der Überbrückungsnachricht bei Soft-Timeout, wenn use\_llm\_generated\_message aktiviert ist. Der aktuelle Gesprächskontext wird als separate Benutzernachricht bereitgestellt. Wenn nicht festgelegt, wird der Standard-Prompt verwendet. Unterstützt dynamische Variablen (z. B. \{\{system\_\_time}}, \{\{custom\_variable}}).
- `disable_until_first_user_message` (boolean, optional, nullable) — Wenn true, werden weiche Timeout-Fülltexte unterdrückt, bis die Unterhaltung mindestens eine tatsächliche Benutzernachricht enthält. Verhindert Fülltexte während des Eröffnungsturns des Agenten, z. B. bei Workflow generate-immediately oder Tool-Aufrufen, bevor der Benutzer spricht.

### 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) — Zu verwendendes Audio-Tag (für beste Leistung 1–2 Wörter, z. B. „happy“, „excited“)
- `description` (string, optional, nullable) — Optionale Beschreibung, wann dieses Tag verwendet werden soll

### PydanticPronunciationDictionaryVersionLocator

Eine Referenz, damit andere Dokumente auf ein bestimmtes Wörterbuch und dessen Version verweisen können. Dies ist eine Pydantic-Version von PronunciationDictionaryVersionLocatorDBModel. Erforderlich, um die Kompatibilität mit den übrigen Agent-Datenmodellen sicherzustellen.

- `pronunciation_dictionary_id` (string, required) — Die ID des Aussprachewörterbuchs
- `version_id` (string, required, nullable) — Die ID der Version des Aussprachewörterbuchs

### EffectsSpec-Input

Audioeffekte für generierte Sprache: ein Filter-Preset, wahrgenommene Distanz, eine Hallumgebung, ein Hintergrundgeräuschbett und Stereo-Panning. Lassen Sie alle Felder auf den Standardwerten, um unbearbeitetes Audio zu erhalten.

- `filter_preset_id` (string, optional, nullable) — ID eines Filter-Presets, das den Klang der Stimme verändert, etwa `phone` oder `old_radio`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`.
- `distance` (double, optional, default: 0) — Wie weit die sprechende Person vom Mikrofon entfernt klingt, von 0 (nah, unverändert) bis 1 (weit). Höhere Werte dämpfen tiefe und hohe Frequenzen und verschieben bei festgelegter Umgebung die Balance von der trockenen Stimme zum Hall.
- `environment_id` (string, optional, nullable) — ID einer Hallumgebung, die die Stimme in einem Raum platziert, etwa `small_room` oder `hall`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`. Hall wird in Stereo gerendert und fügt nach Ende der Sprache einen Nachhall von bis zu mehreren Sekunden hinzu.
- `background_noise_id` (string, optional, nullable) — ID eines unter die Stimme gelegten Hintergrundgeräuschbetts in Schleife, etwa `cafe` oder `keyboard`. Gültige IDs erhalten Sie mit `GET /v1/audio-effects/catalog`.
- `send_level` (double, optional, default: 1) — Wie viel der Stimme in den Hall fließt, von 0 (nichts) bis 1 (vollständig). Gilt nur, wenn `environment_id` festgelegt ist; 0 deaktiviert den Hall.
- `pan` (double, optional, default: 0) — Stereoposition der Stimme: von -1 (ganz links) über 0 (Mitte) bis 1 (ganz rechts). Nur die Stimme wird im Stereopanorama positioniert; Hall und Hintergrundgeräusche bleiben mittig.

### FileInputConfigWorkflowOverride

- `enabled` (boolean, optional, nullable) — Wenn aktiviert, können Nutzer im Chat Bilder, PDFs oder Textdateien anhängen, sofern das LLM multimodale Eingaben unterstützt.
- `max_files_in_memory` (integer, optional, nullable) — Anzahl der zuletzt verwendeten Dateien, die während einer Unterhaltung im Speicher bleiben. Ältere Dateien werden zusammengefasst und ihr Speicher wird freigegeben.
- `max_files_per_conversation` (integer, optional, nullable) — Gesamtzahl der Dateien, die ein Nutzer in einer Unterhaltung hochladen kann. Uploads werden pro Datei abgerechnet. Verwenden Sie -1 für kein Limit oder einen Wert >= max_files_in_memory.

### DTMFInputConfig

Konfiguration für die Erfassung von DTMF-Eingaben (Tastenfeld) während Telefonanrufen.

- `dtmf_input_timeout` (double, optional, default: 2) — Timeout in Sekunden für das Warten auf weitere DTMF-Ziffern
- `hash_terminator` (boolean, optional, default: true) — Wenn true, wird die DTMF-Eingabe durch Drücken von # sofort abgeschlossen.
- `redact_input` (boolean, optional, default: false) — Wenn true, werden die DTMF-Eingaben des Anrufers im Transkript, Gesprächsprotokoll und in der Analyse durch eine Schwärzungsmarkierung ersetzt. Ziffern, die der Agent wiederholt oder an ein Tool übergibt, sind nicht betroffen.

### BackgroundSoundConfigWorkflowOverride

- `source_type` (enum, optional, nullable) — Der Typ der Hintergrundgeräuschquelle.
  - Allowed values: `preset`
- `source_id` (enum, optional, nullable) — Kennung der Klangquelle.
  - Allowed values: `office2`, `office1`, `restaurant`, `city`, `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `volume` (double, optional, nullable) — Lautstärke des Hintergrundsounds (0,01 bis 1,0).
- `crossfade_loop` (boolean, optional, nullable) — Wendet am Schleifenübergang eine Überblendung an, um hörbare Knackgeräusche bei der Wiederholung zu vermeiden.

### ConversationConfigClientOverride-Input

- `asr` (ASRConversationalConfigOverride, optional, nullable) — Konfiguration für Transkription in Unterhaltungen
- `turn` (TurnConfigOverride, optional, nullable) — Konfiguration für Sprecherwechselerkennung
- `tts` (TTSConversationalConfigOverride, optional, nullable) — Konfiguration für Text to Speech in Unterhaltungen
- `conversation` (ConversationConfigOverride, optional, nullable) — Konfiguration für Unterhaltungsereignisse
- `agent` (AgentConfigOverride-Input, optional, nullable) — Agent-spezifische Konfiguration

### LanguagePresetTranslation

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

### DynamicVariablesConfigWorkflowOverride

- `dynamic_variable_placeholders` (map from string to any, optional, nullable) — Ein Wörterbuch mit Platzhaltern für dynamische Variablen und ihren Werten

### BehaviorOverride

- `verbosity` (enum, optional, nullable) — Überschreibung der Ausführlichkeit. Wenn nicht festgelegt, gilt der zugrunde liegende Standardwert.
  - Allowed values: `auto`, `concise`, `thorough`
- `output_format` (enum, optional, nullable) — Überschreibung des Ausgabeformats. Wenn nicht festgelegt, gilt der zugrunde liegende Standardwert.
  - 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) — Überschreibung des Interaktionsbudgets. Wenn nicht gesetzt, gilt der zugrunde liegende Standardwert.
  - Allowed values: `realtime`, `5_minutes`, `10_minutes`, `1_hour`

### PromptAgentAPIModelWorkflowOverride-Input

- `prompt` (string, optional, nullable) — Der Prompt für den Agenten
- `llm` (enum, optional, nullable) — Das LLM, das mit dem Prompt und dem Chatverlauf abgefragt wird. Bei Verwendung von Datenresidenz muss das LLM in der Datenresidenzumgebung unterstützt werden.
  - 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) — Reasoning-Aufwand des Modells. Nur für einige Modelle verfügbar.
  - Allowed values: `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`
- `thinking_budget` (integer, optional, nullable) — Maximale Anzahl der für das Denken verwendeten Token. Verwenden Sie 0 zum Deaktivieren, falls das Modell dies unterstützt.
- `enable_reasoning_summary` (boolean, optional, nullable) — Aktiviert Zusammenfassungen der Modellüberlegungen. Wenn deaktiviert, fordern wir nach Möglichkeit keine Zusammenfassungen vom Anbieter an, um eine schnellere TTFB zu erreichen. Nicht ZRM-kompatibel.
- `temperature` (double, optional, nullable) — Die Temperatur für das LLM. Der Standardwert ist 0. Setzen Sie den Wert auf null, um den Parameter vollständig aus der LLM-Anfrage auszuschließen. Das ist für benutzerdefinierte LLMs nützlich, die das Feld temperature ablehnen.
- `max_tokens` (integer, optional, nullable) — Wenn größer als 0: maximale Anzahl an Tokens, die das LLM vorhersagen kann
- `tool_ids` (list of string, optional, nullable) — Eine Liste der IDs von Tools, die der Agent verwendet
- `tool_ids_strict` (boolean, optional, nullable) — Gilt nur als Überschreibung für eine Unterhaltung und ist zulässig, wenn tool_ids überschrieben werden dürfen. Wenn true, enthält die überschreibende tool_ids die vollständige Liste der in der Unterhaltung erlaubten Tools, einschließlich der Tools in Workflow-Knoten. Wird ignoriert, wenn es für den Agenten festgelegt ist.
- `built_in_tools` (BuiltInToolsWorkflowOverride-Input, optional, nullable) — Integrierte System-Tools, die vom Agent verwendet werden
- `enable_parallel_tool_calls` (boolean, optional, nullable) — Aktiviert parallele Tool-Aufrufe. Wenn aktiviert, kann der Agent mehrere Tools innerhalb eines einzelnen Turns parallel ausführen. Nicht von allen Modellen unterstützt.
- `mcp_server_ids` (list of string, optional, nullable) — Eine Liste der MCP-Server-IDs, die der Agent verwenden soll
- `native_mcp_server_ids` (list of string, optional, nullable) — Eine Liste der nativen MCP-Server-IDs, die der Agent verwenden soll
- `knowledge_base` (list of KnowledgeBaseLocator, optional, nullable) — Eine Liste der Wissensdatenbanken, die der Agent verwenden soll
- `custom_llm` (CustomLLM, optional, nullable) — Definition für ein benutzerdefiniertes LLM, wenn das LLM-Feld auf 'CUSTOM_LLM' gesetzt ist
- `ignore_default_personality` (boolean, optional, nullable) — Ob die standardmäßigen Persönlichkeitszeilen aus dem System-Prompt entfernt werden sollen
- `rag` (RagConfigWorkflowOverride-Input, optional, nullable) — Konfiguration für RAG
- `timezone` (string, optional, nullable) — Zeitzone zur Anzeige der aktuellen Zeit im System-Prompt. Wenn festgelegt, wird die aktuelle Zeit in dieser Zeitzone in den System-Prompt aufgenommen. Muss ein gültiger Zeitzonenname sein, z. B. 'America/New_York', 'Europe/London' oder 'UTC'. Für präzise zeitbezogene Antworten empfohlen. Andernfalls kennt der Agent das aktuelle Datum und die Uhrzeit nicht, sofern Sie diese nicht über dynamische Variablen oder Tools bereitstellen. Das kann zu falschen oder halluzinierten Zeitangaben führen.
- `backup_llm_config` (PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig, optional, nullable) — Konfiguration für die Kaskadierung von Backup-LLMs. Kann deaktiviert sein, Systemstandards verwenden oder eine benutzerdefinierte Reihenfolge festlegen.
- `cascade_timeout_seconds` (double, optional, nullable) — Zeit in Sekunden, bevor auf das Backup-LLM gewechselt wird. Muss zwischen 2 und 15 Sekunden liegen.
- `tools` (list of PromptAgentApiModelWorkflowOverrideInputToolsItems, optional, nullable) — Eine Liste von Tools, die der Agent während des Gesprächs verwenden kann. Verwenden Sie stattdessen tool_ids.

### WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue

Der zu verwendende konstante Wert

### ASRConversationalConfigOverride

- `keywords` (list of string, optional, nullable) — Schlüsselwörter, deren Vorhersagewahrscheinlichkeit erhöht werden soll

### TurnConfigOverride

- `soft_timeout_config` (SoftTimeoutConfigOverride, optional, nullable) — Konfiguration für die Soft-Timeout-Funktion. Liefert sofortiges Feedback bei längeren LLM-Antworten.

### TTSConversationalConfigOverride

- `model_id` (enum, optional, nullable, default: eleven_v4_turbo) — Das für TTS zu verwendende Modell
  - 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) — Die für TTS zu verwendende Stimmen-ID
- `supported_voices` (list of SupportedVoice, optional, nullable) — Zusätzlich unterstützte Stimmen für den Agenten
- `stability` (double, optional, nullable) — Die Stabilität der generierten Sprache
- `speed` (double, optional, nullable) — Die Geschwindigkeit der generierten Sprache
- `similarity_boost` (double, optional, nullable) — Der Ähnlichkeits-Boost für generierte Sprache
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional, nullable) — Die Referenzen auf Aussprachewörterbücher

### ConversationConfigOverride

- `text_only` (boolean, optional, nullable) — Wenn aktiviert, wird Audio nicht verarbeitet und nur Text verwendet. Verwenden Sie dies, um Audiokosten zu vermeiden.
- `max_duration_seconds` (integer, optional, nullable) — Die maximale Dauer einer Unterhaltung in Sekunden

### AgentConfigOverride-Input

- `first_message` (string, optional, nullable) — Wenn nicht leer, die erste Nachricht, die der Agent sagt. Wenn leer, wartet der Agent, bis der Nutzer die Unterhaltung beginnt.
- `language` (string, optional, nullable) — Sprache des Agenten – verwendet für ASR und TTS
- `max_conversation_duration_message` (string, optional, nullable) — Wenn nicht leer, die Nachricht, die der Agent sendet, wenn die maximale Gesprächsdauer erreicht ist.
- `prompt` (PromptAgentAPIModelOverride-Input, optional, nullable) — Der Prompt für den Agenten

### BuiltInToolsWorkflowOverride-Input

- `transfer_to_agent` (SystemToolConfig, optional, nullable) — Das Tool zum Weiterleiten an einen Agenten
- `end_call` (SystemToolConfig, optional, nullable) — Das Tool zum Beenden des Anrufs
- `language_detection` (SystemToolConfig, optional, nullable) — Das Tool zur Spracherkennung
- `transfer_to_number` (SystemToolConfig, optional, nullable) — Das Tool zum Weiterleiten an eine Nummer
- `skip_turn` (SystemToolConfig, optional, nullable) — Das Tool zum Überspringen eines Gesprächszugs
- `play_keypad_touch_tone` (SystemToolConfig, optional, nullable) — Das DTMF-Wiedergabetool
- `voicemail_detection` (SystemToolConfig, optional, nullable) — Das Tool zur Mailbox-Erkennung

### CustomLLM

- `url` (string, required) — Die URL des mit Chat Completions kompatiblen Endpunkts
- `model_id` (string, optional, nullable) — Die zu verwendende Modell-ID, wenn die URL mehrere Modelle bereitstellt
- `api_key` (CustomLlmApiKey, optional, nullable) — Der API-Schlüssel zur Authentifizierung. Entweder eine Arbeitsbereichs-Secret-Referenz \{'secret\_id': '...'} oder eine Umgebungsvariablen-Referenz \{'env\_var\_label': '...'}.
- `auth_connection` (CustomLlmAuthConnection, optional, nullable) — Optionale Workspace-Authentifizierungsverbindung. Es werden nur Authentifizierungsverbindungen unterstützt, die ein Authorization-Bearer-Token erzeugen. Basic Auth, mTLS, benutzerdefinierte Header und URL-Secret-Authentifizierungsverbindungen werden nicht unterstützt.
- `request_headers` (map from string to CustomLlmRequestHeaders, optional) — Header, die in die Anfrage aufgenommen werden sollen
- `api_version` (string, optional, nullable) — Die für die Anfrage zu verwendende API-Version
- `api_type` (enum, optional, default: chat_completions) — Der zu verwendende API-Typ (chat_completions, responses oder 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) — Maximale Vektordistanz abgerufener Chunks.
- `max_documents_length` (integer, optional, nullable) — Maximale Gesamtlänge der von RAG abgerufenen Dokument-Chunks.
- `max_retrieved_rag_chunks_count` (integer, optional, nullable) — Maximale Anzahl von RAG-Dokument-Chunks, die zunächst aus dem Vektorspeicher abgerufen werden. Diese werden anschließend nach Vektordistanz und Gesamtlänge weiter gefiltert.
- `num_candidates` (integer, optional, nullable) — Anzahl der in der ANN-Vektorsuche bewerteten Kandidaten. Eine höhere Anzahl liefert bessere Ergebnisse, erhöht aber die Latenz. Der empfohlene Mindestwert beträgt 100. Wenn deaktiviert, wird der Standardwert verwendet.
- `query_rewrite_prompt_override` (string, optional, nullable) — Benutzerdefinierter Prompt zum Umschreiben von Benutzeranfragen vor dem RAG-Abruf. Der Gesprächsverlauf wird automatisch am Ende angehängt. Wenn nicht festgelegt, wird der Standard-Prompt verwendet.
- `knowledge_base_tool_info` (KnowledgeBaseToolInfo, optional, nullable) — Wenn festgelegt, verwendet der Agent das Tool knowledge_base statt des veralteten Tools knowledge_base_rag. None bedeutet, dass der Agent nicht aktiviert ist.

### PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig

Konfiguration für die Kaskadierung von Backup-LLMs. Kann deaktiviert sein, Systemstandards verwenden oder eine benutzerdefinierte Reihenfolge festlegen.

### PromptAgentApiModelWorkflowOverrideInputToolsItems

Der Tool-Typ

- `type`: `api_integration_webhook` (ApiIntegrationWebhookToolConfig)
  - `api_integration_connection_id` (string, required)
  - `api_integration_id` (string, required)
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `api_schema_overrides` (ApiIntegrationWebhookOverrides, optional, nullable) — Nutzerüberschreibungen, die zusätzlich zu api_schema angewendet werden
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs. Muss zwischen 5 und 300 Sekunden liegen, einschließlich.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `tool_version` (string, optional, default: 1.0.0) — Die Version des API-Integrationstools
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `client` (ClientToolConfig)
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Wenn true, soll der Aufruf dieses Tools die Unterhaltung blockieren, bis der Client antwortet und die Antwort an das LLM übergeben wird. Wenn false, wird die Unterhaltung fortgesetzt, ohne auf die Antwort des Clients zu warten. Dies eignet sich, um Nutzern Inhalte anzuzeigen, ohne die Unterhaltung zu blockieren.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema für alle an den Client zu übergebenden Parameter
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden, bis der Tool-Aufruf abgeschlossen ist. Muss zwischen 1 und 120 Sekunden (einschließlich) liegen oder -1, um unbegrenzt auf die Antwort des Clients zu warten (erfordert expects_response).
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `mcp` (mcp)
- `type`: `smb` (smb)
- `type`: `system` (SystemToolConfig)
  - `name` (string, required)
  - `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `description` (string, optional, default: ) — Beschreibung, wann das Tool verwendet werden soll und was es tut. Leer lassen, um die für den jeweiligen Tooltyp optimierte Standardbeschreibung zu verwenden.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.
- `type`: `webhook` (WebhookToolConfig)
  - `api_schema` (WebhookToolApiSchemaConfig-Input, required) — Das Schema für den ausgehenden Webhook, einschließlich Parameter und URL-Spezifikation
  - `description` (string, required) — Beschreibung, wann das Tool verwendet werden soll und was es tut.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Konfiguration für dynamische Variablen
  - `execution_mode` (enum, optional, default: immediate) — Legt fest, wann und wie das Tool ausgeführt wird: 'immediate' führt das Tool sofort aus, wenn das LLM es anfordert, 'post_tool_speech' wartet, bis der Agent zu Ende gesprochen hat, und 'async' führt das Tool im Hintergrund ohne Blockierung aus – ideal für lang laufende Vorgänge.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Ob einer Weiterleitung vom Endpunkt gefolgt und die endgültige Antwort zurückgegeben werden soll. Einer Weiterleitung wird als GET ohne Request-Body gefolgt. Keine für dieses Tool konfigurierte Einstellung (Header, Authentifizierung, Client-Zertifikat) wird an das Weiterleitungsziel gesendet. Sowohl der Endpunkt als auch das Weiterleitungsziel müssen HTTPS verwenden. Wird von API-Integrationstools nicht unterstützt.
  - `follow_redirects_allowed_domains` (list of string, optional) — Domains, auf die eine Weiterleitung verweisen darf, z. B. 'test.example.com'. Erforderlich beim Folgen von Weiterleitungen; Ziele außerhalb der Liste werden abgelehnt.
  - `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs. Muss zwischen 5 und 300 Sekunden liegen, einschließlich.
  - `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.

### SoftTimeoutConfigOverride

- `message` (string, optional, nullable) — Nachricht, die angezeigt wird, wenn beim Warten auf die LLM-Antwort der erste weiche Timeout erreicht wird. Unterstützt dynamische Variablen (z. B. \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional, nullable) — Zusätzliche statische Füllnachrichten für nachfolgende Soft-Timeouts in derselben LLM-Generierung. Das erste Timeout verwendet `message`. Wenn weniger Nachrichten als `max_soft_timeouts_per_generation` konfiguriert sind, wird die zuletzt konfigurierte Nachricht wiederholt; andernfalls wird eine integrierte Füllnachricht verwendet.

### PromptAgentAPIModelOverride-Input

- `prompt` (string, optional, nullable) — Der Prompt für den Agenten
- `llm` (enum, optional, nullable) — Das LLM, das mit dem Prompt und dem Chatverlauf abgefragt wird. Bei Verwendung von Datenresidenz muss das LLM in der Datenresidenzumgebung unterstützt werden.
  - 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) — Eine Liste der IDs von Tools, die der Agent verwendet
- `tool_ids_strict` (boolean, optional, nullable) — Gilt nur als Überschreibung für eine Unterhaltung und ist zulässig, wenn tool_ids überschrieben werden dürfen. Wenn true, enthält die überschreibende tool_ids die vollständige Liste der in der Unterhaltung erlaubten Tools, einschließlich der Tools in Workflow-Knoten. Wird ignoriert, wenn es für den Agenten festgelegt ist.
- `native_mcp_server_ids` (list of string, optional, nullable) — Eine Liste der nativen MCP-Server-IDs, die der Agent verwenden soll
- `knowledge_base` (list of KnowledgeBaseLocator, optional, nullable) — Eine Liste der Wissensdatenbanken, die der Agent verwenden soll

### SystemToolConfig

Ein System-Tool ist ein Tool, das zum Aufrufen einer Systemmethode auf dem Server verwendet wird

- `name` (string, required)
- `params` (ToolRequestModelToolConfigDiscriminatorMappingSystemParams, required)
- `description` (string, optional, default: ) — Beschreibung, wann das Tool verwendet werden soll und was es tut. Leer lassen, um die für den jeweiligen Tooltyp optimierte Standardbeschreibung zu verwenden.
- `response_timeout_secs` (integer, optional, default: 20) — Die maximale Wartezeit in Sekunden für den Abschluss des Tool-Aufrufs.
- `interruption_mode` (enum, optional, default: allow) — Controls whether the user can interrupt the agent around this tool call. 'allow' (default) lets the user interrupt at any time, 'disable_during_tool' suppresses interruptions only while the tool is running, 'disable_during_tool_and_turn' suppresses interruptions while the tool runs and for the agent response that follows it.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `pre_tool_speech` (enum, optional, default: auto) — Controls whether the agent speaks before this tool is called. 'auto' (default) decides based on recent tool latency, 'force' always asks the agent to speak, 'off' fully opts out regardless of latency.
  - Allowed values: `auto`, `force`, `off`
- `assignments` (list of DynamicVariableAssignment, optional) — Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen
- `tool_call_sound` (enum, optional, nullable) — Vordefinierter Tool-Aufruf-Soundtyp, der während der Tool-Ausführung abgespielt wird. Wenn nicht angegeben, wird kein Tool-Aufruf-Sound abgespielt.
  - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `tool_call_sound_behavior` (enum, optional, default: auto) — Legt fest, wann der Ton für Tool-Aufrufe abgespielt werden soll. 'auto' spielt ihn nur ab, wenn vor dem Tool-Aufruf gesprochen wird; 'always' spielt ihn bei jedem Tool-Aufruf ab.
  - Allowed values: `auto`, `always`
- `tool_error_handling_mode` (enum, optional, default: auto) — Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
  - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
- `disable_interruptions` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `interruption_mode`. Bei true kann der Benutzer den Agenten nicht unterbrechen, während dieses Tool ausgeführt wird.
- `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — VERALTET: Verwenden Sie stattdessen `pre_tool_speech`. Bei true spricht der Agent vor dem Tool-Aufruf.

### CustomLlmApiKey

Der API-Schlüssel zur Authentifizierung. Entweder eine Arbeitsbereichs-Secret-Referenz \{'secret\_id': '...'} oder eine Umgebungsvariablen-Referenz \{'env\_var\_label': '...'}.

### CustomLlmAuthConnection

Optionale Workspace-Authentifizierungsverbindung. Es werden nur Authentifizierungsverbindungen unterstützt, die ein Authorization-Bearer-Token erzeugen. Basic Auth, mTLS, benutzerdefinierte Header und URL-Secret-Authentifizierungsverbindungen werden nicht unterstützt.

### CustomLlmRequestHeaders

### KnowledgeBaseToolInfo

- `enabled_strategies` (list of enum, optional) — Für das Modell verfügbare Suchstrategien. Darf nicht leer sein.
  - 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) — Steuert, wie Tool-Antworten gefiltert werden, bevor sie für den Agenten sichtbar sind.
  - Allowed values: `all`, `allow`, `hide_all`
- `response_filters` (list of string, optional, nullable)
- `request_headers` (map from string to ApiIntegrationWebhookOverridesRequestHeaders, optional, nullable)

### DynamicVariableAssignment

Konfiguration zum Extrahieren von Werten aus Tool-Antworten und Zuweisen zu dynamischen Variablen.

- `dynamic_variable` (string, required) — Der Name der dynamischen Variable, der der extrahierte Wert zugewiesen wird
- `value_path` (string, required) — Pfad in Punktnotation zum Extrahieren des Werts aus der Quelle (z. B. 'user.name' oder 'data.0.id')
- `source` ("response", optional, default: response) — Die Quelle, aus der der Wert extrahiert wird. Derzeit wird nur „response“ unterstützt.
- `sanitize` (boolean, optional, default: false) — Wenn true, wird der Wert dieser Zuweisung aus der Tool-Antwort entfernt, bevor sie an das LLM und Transkript gesendet wird, aber weiterhin für die Variablenzuweisung verarbeitet.
- `preserve_native_type` (boolean, optional, default: false) — Wenn true, werden nicht skalare Werte (Listen, Objekte), die aus der Tool-Antwort extrahiert werden, in ihrem nativen Typ gespeichert, statt in JSON-Strings umgewandelt zu werden. Aktivieren Sie dies, um extrahierte Arrays direkt als dynamische Listenvariablen zu verwenden.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Ein Wörterbuch mit Platzhaltern für dynamische Variablen und ihren Werten

### ObjectJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (map from string to any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Objekt zur Laufzeit diesen konstanten JSON-Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Objekt), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `type` ("object", optional, default: object)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyInput, optional)
- `required_constraints` (RequiredConstraints, optional, nullable) — Wrapper für auf erforderliche Felder begrenzte anyOf/allOf-Kompositionseinschränkungen.

### 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) — Wenn in den ersten 2 Nutzer-Turns kein Sprachwechsel erfolgt, schlagen spätere Versuche fehl und die Unterhaltung bleibt in der aktuellen Sprache. Erfolgt während dieser Turns ein Sprachwechsel, bleiben spätere Wechsel möglich. Aktivieren Sie dies, um die Wahrscheinlichkeit falscher Sprachwechsel zu verringern.
- `system_tool_type`: `play_keypad_touch_tone` (PlayDTMFToolConfig)
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Wenn true, generiert der Agent nach dem Abspielen von DTMF-Tönen keine weitere Sprache. Dadurch wird verhindert, dass die Sprache des Agenten IVR-Systeme stört.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — DTMF-Töne als Out-of-Band-RTP-Ereignisse (RFC 4733) statt als In-Band-Audio senden. Nur für aus SIP-Trunks importierte Nummern wirksam.
- `system_tool_type`: `skip_turn` (SkipTurnToolConfig)
  - `wait_timeout_secs` (double, optional, default: -1) — Sekunden, die nach skip_turn gewartet werden, bevor der Agent eine kontextbezogene Rückmeldung generiert. Der Timer „Unterhaltung nach Stille beenden“ wird während der Wartezeit pausiert. -1 deaktiviert die Wartezeit: Nach skip_turn bleibt der Agent still, bis der Aufrufer spricht, und dieser Timer läuft weiter. Gilt nur für Sprachunterhaltungen.
- `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) — Ob dem Kunden während der Wartezeit auf die Weiterleitung eine Nachricht abgespielt werden soll. Aus Gründen der Abwärtskompatibilität ist der Standardwert true.
- `system_tool_type`: `voicemail_detection` (VoicemailDetectionToolConfig)
  - `voicemail_message` (string, optional, nullable) — Optionale Nachricht, die bei erkannter Mailbox hinterlassen wird. Wenn nicht angegeben, wird der Anruf sofort beendet, sobald eine Mailbox erkannt wird. Unterstützt dynamische Variablen, z. B. \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}.

### WebhookToolApiSchemaConfig-Input

- `url` (string, required) — Die URL, an die der Webhook gesendet wird. Kann Pfadparameter enthalten, z. B. [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigInputRequestHeaders, optional) — Header, die in die Anfrage aufgenommen werden sollen
- `method` (enum, optional, default: GET) — Die für den Webhook zu verwendende HTTP-Methode
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Schema für Pfadparameter, falls vorhanden. Die Schlüssel sollten den Platzhaltern in der URL entsprechen.
- `query_params_schema` (QueryParamsJsonSchema-Input, optional, nullable) — Schema für Query-Parameter, falls vorhanden. Diese werden als Query-Parameter an das Ende der URL angehängt. Hinweis: Eigenschaften in einem Query-Parameter müssen alle literale Typen sein.
- `request_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema für die Body-Parameter, falls vorhanden. Wird für POST-/PATCH-/PUT-Anfragen verwendet. Das Schema sollte ein Objekt sein, das als JSON-Body gesendet wird.
- `response_body_schema` (ObjectJsonSchemaProperty-Input, optional, nullable) — Schema, das die erwartete Struktur des Antworttextkörpers beschreibt. Nur zur Dokumentation; wird nicht an das LLM übermittelt.
- `response_filter` (ResponseFilter, optional, nullable) — Optionaler Allowlist-Filter, der auf die Antwort angewendet wird, bevor das LLM sie sieht, damit große Antworten den Kontext nicht überladen. Standardmäßig wird die vollständige Antwort verwendet.
- `content_type` (enum, optional, default: application/json) — Inhaltstyp für den Anfrage-Body. Gilt nur für POST-/PUT-/PATCH-Anfragen.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — URL-Platzhalter werden über die Authentifizierungsverbindung aufgelöst (z. B. über UrlSecretAuthConnection eingefügte Secrets) und nicht über path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigInputAuthConnection, optional, nullable) — Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### ConvAISecretLocator

Wird verwendet, um auf ein Secret aus dem Secret-Speicher des Agenten zu verweisen.

- `secret_id` (string, required)

### ConvAIEnvVarLocator

Wird verwendet, um über ihr Label auf eine Umgebungsvariable zu verweisen.

- `env_var_label` (string, required)

### AuthConnectionLocator

Wird verwendet, um auf eine Authentifizierungsverbindung aus dem Speicher für Authentifizierungsverbindungen des Workspace zu verweisen.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Verweist per Label auf eine Umgebungsvariable vom Typ 'auth_connection'. Zur Laufzeit wird die Authentifizierungsverbindung für die aktuelle Umgebung aufgelöst, wobei auf die Standardumgebung zurückgegriffen wird.

- `env_var_label` (string, required)

### ConvAIDynamicVariable

Wird verwendet, um auf eine dynamische Variable zu verweisen.

- `variable_name` (string, required)

### ApiIntegrationWebhookOverridesSchemaOverrides

- `source`: `constant` (ConstantSchemaOverride)
  - `constant_value` (WorkflowToolLocatorSchemaOverridesDiscriminatorMappingConstantConstantValue, required, nullable) — Der zu verwendende konstante Wert
- `source`: `dynamic_variable` (DynamicVariableSchemaOverride)
  - `dynamic_variable` (string, required) — Der Name der zu verwendenden dynamischen Variable
- `source`: `llm` (LLMSchemaOverride)
  - `prompt` (string, optional, nullable) — Prompt-Überschreibung für das LLM. Wenn nicht angegeben, wird die ursprüngliche Schemabeschreibung verwendet.
- `source`: `omit` (OmitSchemaOverride)

### ApiIntegrationWebhookOverridesRequestHeaders

### ObjectJsonSchemaPropertyInput

### RequiredConstraints

Wrapper für auf erforderliche Felder begrenzte anyOf/allOf-Kompositionseinschränkungen.

- `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) — Legt fest, ob TTS-Client-Überschreibungen auf den weitergeleiteten Agenten übertragen werden sollen.
- `preserve_voice_settings` (boolean, optional, default: false) — Legt fest, ob die Basisstimme, das TTS-Modell und die Stimmeinstellungen auf den übertragenen Agenten übernommen werden sollen.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItems, optional) — Benutzerdefinierte SIP-Header, die bei der Gesprächsweiterleitung eingeschlossen werden. Jeder Header kann entweder ein statischer Wert oder ein Verweis auf eine dynamische Variable sein.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Wenn True, wird auf dem ursprünglichen Anrufzweig ein Klingelton wiedergegeben, während eine SIP-REFER-Weiterleitung abgeschlossen wird. Der Ton wird über RTP an den SIP-Peer übertragen, der den REFER ausführt. Deaktivieren Sie dies, wenn das empfangende System, z. B. ein SBC oder Contact Center, ihn nicht hören soll. Wenn deaktiviert, hört der Anrufer bis zum Abschluss der Weiterleitung Stille. Nur für SIP-REFER-Weiterleitungen.
- `uui` (UUITransferConfig, optional, nullable) — User-to-User Information (RFC 7433), die SIP-REFER-Weiterleitungen beigefügt wird. Überträgt den Anrufkontext, etwa CRM-Identifikatoren oder den Eskalationsgrund, über die Weiterleitungsgrenze hinweg.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional, nullable) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.
- `phone_number` (string, optional, nullable, deprecated)

### WebhookToolApiSchemaConfigInputRequestHeaders

### LiteralJsonSchemaProperty

Schema-Eigenschaft für literale JSON-Typen. WICHTIG: Es kann nur EINES der folgenden Felder festgelegt werden: description (LLM liefert Wert), dynamic_variable (Wert aus Variable), is_system_provided (System liefert Wert), constant_value (fester Wert) oder is_omitted (Parameter wird ausgelassen). Diese schließen sich gegenseitig aus.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — Die Beschreibung der Eigenschaft. Wenn festgelegt, stellt das LLM den Wert anhand dieser Beschreibung bereit. Nicht gleichzeitig mit dynamic_variable, is_system_provided, constant_value und is_omitted verwendbar.
- `enum` (list of string, optional, nullable) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Wenn true, wird der Wert vom System zur Laufzeit ausgefüllt. Wird von API-Integration-Webhook-Tools für Vorlagen verwendet. Schließt sich gegenseitig mit description, dynamic_variable, constant_value und is_omitted aus.
- `dynamic_variable` (string, optional, default: ) — Der Name der dynamischen Variable, die für den Wert dieser Eigenschaft verwendet werden soll. Kann nicht zusammen mit description, is_system_provided, constant_value und is_omitted verwendet werden.
- `allowed_values` (AllowedValues, optional, nullable) — Serverseitige Ablehnungsprüfung für einen von der LLM bereitgestellten Wert: Die Laufzeit lehnt jeden Wert außerhalb der von diesem Objekt benannten zulässigen Menge ab. Die Menge wird der LLM nicht als Enum mitgeteilt. Wird nur unterstützt, wenn die Wertquelle `description` ist; eine Kombination mit dynamic_variable, is_system_provided, constant_value oder is_omitted wird abgelehnt.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional, nullable, default: ) — Ein konstanter Wert für diese Eigenschaft. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und constant_value aus.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — VERALTET: Verwenden Sie stattdessen `allowed_values`. Wenn festgelegt, liefert das LLM den Wert, aber die Laufzeitumgebung lehnt jeden Wert ab, der nicht in der Liste dieser dynamischen Variable enthalten ist (muss ein JSON-Array wie ["ws_alpha", "ws_beta"] sein). Verwenden Sie dies, damit das LLM aus einer serverseitig verifizierten Menge auswählen kann (z. B. den IDs, auf die der aktuelle Benutzer zugreifen darf). Erfordert description; schließt sich gegenseitig mit dynamic_variable, is_system_provided, constant_value und is_omitted aus.

### QueryParamsJsonSchema-Input

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

### ResponseFilter

Konfiguration zum Filtern von Tool-Antworten, bevor sie für den Agent sichtbar sind.

- `mode` (enum, optional, default: all) — Controls how tool responses are filtered. 'all' returns entire response, 'allow' returns only specified paths, 'hide_all' hides the entire response.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Pfade in Punktnotation, die einbezogen werden, wenn der Modus 'allow' ist (z. B. ['ticket.id', 'ticket.status']).
- `content_type` ("application/json", optional, default: application/json) — Inhaltstyp für die Antwortfilterung. Nur Antworten vom Typ „application/json“ werden gefiltert.

### WebhookToolApiSchemaConfigInputAuthConnection

Optionale Authentifizierungsverbindung zur Anmeldung bei diesem Webhook

### ArrayJsonSchemaProperty-Input

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Wenn festgelegt, wird der gesamte Parameter zur Laufzeit mit dieser dynamischen Variable befüllt. Schließt sich gegenseitig mit description (vom LLM bereitgestellter Wert), constant_value und is_omitted aus.
- `constant_value` (list of any, optional, nullable) — Wenn festgelegt, verwendet das gesamte Array zur Laufzeit diesen konstanten Wert. Schließt sich gegenseitig mit description (vom LLM bereitgestelltes Array), dynamic_variable und is_omitted aus.
- `is_omitted` (boolean, optional, default: false) — Wenn true, wird dieser Parameter vollständig aus der Anfrage weggelassen. Nur für optionale Parameter gültig. Schließt sich gegenseitig mit description, dynamic_variable und constant_value aus.
- `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"}) — Schema für Array-Elemente.

### RequiredConstraint

Eine Menge von Feldern, die alle vorhanden sein müssen, um diese Einschränkung zu erfüllen.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — Prozedur-ID
- `version_id` (string, required) — Versions-ID der Verfahrensversion.

### ProcedureDraftRef

- `procedure_id` (string, required) — Prozedur-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) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (CustomSIPHeader)
  - `key` (string, required) — Der SIP-Headername (z. B. 'X-Customer-ID')
  - `value` (string, required) — Der Header-Wert

### PhoneNumberTransferPostDialDigits

Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl). Kann ein statischer Wert oder ein Verweis auf eine dynamische Variable sein. Verwenden Sie 'w' für eine Pause von 0,5 Sekunden. Nur für Twilio-Weiterleitungen unterstützt.

- `type`: `dynamic` (PostDialDigitsDynamicVariable)
  - `value` (string, required) — Der aufzulösende Name der dynamischen Variable
- `type`: `static` (PostDialDigitsStatic)
  - `value` (string, required) — Nach dem Verbindungsaufbau zu sendende DTMF-Ziffern (z. B. 'ww1234' für eine Durchwahl)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — Name einer dynamischen Variablen, die zu einem JSON-Array zulässiger Werte aufgelöst werden muss, z. B. ["ws_alpha", "ws_beta"]. Systemvariablen funktionieren nur, wenn sie zu einer Liste aufgelöst werden.

### LiteralJsonSchemaPropertyConstantValue

Ein konstanter Wert für diese Eigenschaft. Schließt sich gegenseitig mit description, dynamic_variable, is_system_provided und is_omitted aus.

### ArrayJsonSchemaPropertyInputItems

Schema für Array-Elemente.

## 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()
```