Vapi · Schema

UpdateWorkflowDTO

AIVoiceAgentsRealtimeCPaaS

Properties

Name Type Description
nodes array
model object This is the model for the workflow. This can be overridden at node level using `nodes[n].model`.
transcriber object This is the transcriber for the workflow. This can be overridden at node level using `nodes[n].transcriber`.
voice object This is the voice for the workflow. This can be overridden at node level using `nodes[n].voice`.
observabilityPlan object This is the plan for observability of workflow's calls. Currently, only Langfuse is supported.
backgroundSound object This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'. You can also provide a custom sound by providing a URL to an audio file.
hooks array This is a set of actions that will be performed on certain events.
credentials array These are dynamic credentials that will be used for the workflow calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. D
voicemailDetection object This is the voicemail detection plan for the workflow.
maxDurationSeconds number This is the maximum duration of the call in seconds. After this duration, the call will automatically end. Default is 1800 (30 minutes), max is 43200 (12 hours), and min is 10 seconds.
name string
edges array
globalPrompt string
server object This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema. The order of precedence is: 1. tool.server 2. workflow.server / assistant.ser
compliancePlan object This is the compliance plan for the workflow. It allows you to configure HIPAA and other compliance settings.
analysisPlan object This is the plan for analysis of workflow's calls. Stored in `call.analysis`.
artifactPlan object This is the plan for artifacts generated during workflow's calls. Stored in `call.artifact`.
startSpeakingPlan object This is the plan for when the workflow nodes should start talking. You should configure this if you're running into these issues: - The assistant is too slow to start talking after the customer is don
stopSpeakingPlan object This is the plan for when workflow nodes should stop talking on customer interruption. You should configure this if you're running into these issues: - The assistant is too slow to recognize customer'
monitorPlan object This is the plan for real-time monitoring of the workflow's calls. Usage: - To enable live listening of the workflow's calls, set `monitorPlan.listenEnabled` to `true`. - To enable live control of the
backgroundSpeechDenoisingPlan object This enables filtering of noise and background speech while the user is talking. Features: - Smart denoising using Krisp - Fourier denoising Both can be used together. Order of precedence: - Smart den
credentialIds array These are the credentials that will be used for the workflow calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
keypadInputPlan object This is the plan for keypad input handling during workflow calls.
voicemailMessage string This is the message that the assistant will say if the call is forwarded to voicemail. If unspecified, it will hang up.
View JSON Schema on GitHub

JSON Schema

vapi-updateworkflowdto-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/UpdateWorkflowDTO",
  "title": "UpdateWorkflowDTO",
  "type": "object",
  "properties": {
    "nodes": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConversationNode",
            "title": "ConversationNode"
          },
          {
            "$ref": "#/components/schemas/ToolNode",
            "title": "ToolNode"
          }
        ]
      }
    },
    "model": {
      "description": "This is the model for the workflow.\n\nThis can be overridden at node level using `nodes[n].model`.",
      "oneOf": [
        {
          "$ref": "#/components/schemas/WorkflowOpenAIModel",
          "title": "WorkflowOpenAIModel"
        },
        {
          "$ref": "#/components/schemas/WorkflowAnthropicModel",
          "title": "WorkflowAnthropicModel"
        },
        {
          "$ref": "#/components/schemas/WorkflowAnthropicBedrockModel",
          "title": "WorkflowAnthropicBedrockModel"
        },
        {
          "$ref": "#/components/schemas/WorkflowGoogleModel",
          "title": "WorkflowGoogleModel"
        },
        {
          "$ref": "#/components/schemas/WorkflowCustomModel",
          "title": "WorkflowCustomModel"
        }
      ]
    },
    "transcriber": {
      "description": "This is the transcriber for the workflow.\n\nThis can be overridden at node level using `nodes[n].transcriber`.",
      "oneOf": [
        {
          "$ref": "#/components/schemas/AssemblyAITranscriber",
          "title": "AssemblyAITranscriber"
        },
        {
          "$ref": "#/components/schemas/AzureSpeechTranscriber",
          "title": "AzureSpeechTranscriber"
        },
        {
          "$ref": "#/components/schemas/CustomTranscriber",
          "title": "CustomTranscriber"
        },
        {
          "$ref": "#/components/schemas/DeepgramTranscriber",
          "title": "DeepgramTranscriber"
        },
        {
          "$ref": "#/components/schemas/ElevenLabsTranscriber",
          "title": "ElevenLabsTranscriber"
        },
        {
          "$ref": "#/components/schemas/GladiaTranscriber",
          "title": "GladiaTranscriber"
        },
        {
          "$ref": "#/components/schemas/GoogleTranscriber",
          "title": "GoogleTranscriber"
        },
        {
          "$ref": "#/components/schemas/SpeechmaticsTranscriber",
          "title": "SpeechmaticsTranscriber"
        },
        {
          "$ref": "#/components/schemas/TalkscriberTranscriber",
          "title": "TalkscriberTranscriber"
        },
        {
          "$ref": "#/components/schemas/OpenAITranscriber",
          "title": "OpenAITranscriber"
        },
        {
          "$ref": "#/components/schemas/CartesiaTranscriber",
          "title": "CartesiaTranscriber"
        },
        {
          "$ref": "#/components/schemas/SonioxTranscriber",
          "title": "SonioxTranscriber"
        }
      ]
    },
    "voice": {
      "description": "This is the voice for the workflow.\n\nThis can be overridden at node level using `nodes[n].voice`.",
      "oneOf": [
        {
          "$ref": "#/components/schemas/AzureVoice",
          "title": "AzureVoice"
        },
        {
          "$ref": "#/components/schemas/CartesiaVoice",
          "title": "CartesiaVoice"
        },
        {
          "$ref": "#/components/schemas/CustomVoice",
          "title": "CustomVoice"
        },
        {
          "$ref": "#/components/schemas/DeepgramVoice",
          "title": "DeepgramVoice"
        },
        {
          "$ref": "#/components/schemas/ElevenLabsVoice",
          "title": "ElevenLabsVoice"
        },
        {
          "$ref": "#/components/schemas/HumeVoice",
          "title": "HumeVoice"
        },
        {
          "$ref": "#/components/schemas/LMNTVoice",
          "title": "LMNTVoice"
        },
        {
          "$ref": "#/components/schemas/NeuphonicVoice",
          "title": "NeuphonicVoice"
        },
        {
          "$ref": "#/components/schemas/OpenAIVoice",
          "title": "OpenAIVoice"
        },
        {
          "$ref": "#/components/schemas/PlayHTVoice",
          "title": "PlayHTVoice"
        },
        {
          "$ref": "#/components/schemas/WellSaidVoice",
          "title": "WellSaidVoice"
        },
        {
          "$ref": "#/components/schemas/RimeAIVoice",
          "title": "RimeAIVoice"
        },
        {
          "$ref": "#/components/schemas/SmallestAIVoice",
          "title": "SmallestAIVoice"
        },
        {
          "$ref": "#/components/schemas/TavusVoice",
          "title": "TavusVoice"
        },
        {
          "$ref": "#/components/schemas/VapiVoice",
          "title": "VapiVoice"
        },
        {
          "$ref": "#/components/schemas/SesameVoice",
          "title": "SesameVoice"
        },
        {
          "$ref": "#/components/schemas/InworldVoice",
          "title": "InworldVoice"
        },
        {
          "$ref": "#/components/schemas/MinimaxVoice",
          "title": "MinimaxVoice"
        }
      ]
    },
    "observabilityPlan": {
      "description": "This is the plan for observability of workflow's calls.\n\nCurrently, only Langfuse is supported.",
      "oneOf": [
        {
          "$ref": "#/components/schemas/LangfuseObservabilityPlan",
          "title": "Langfuse"
        }
      ],
      "allOf": [
        {
          "$ref": "#/components/schemas/LangfuseObservabilityPlan"
        }
      ]
    },
    "backgroundSound": {
      "description": "This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.\nYou can also provide a custom sound by providing a URL to an audio file.",
      "oneOf": [
        {
          "type": "enum",
          "enum": [
            "off",
            "office"
          ],
          "example": "office"
        },
        {
          "type": "string",
          "format": "uri",
          "example": "https://www.soundjay.com/ambient/sounds/people-in-lounge-1.mp3"
        }
      ]
    },
    "hooks": {
      "type": "array",
      "description": "This is a set of actions that will be performed on certain events.",
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CallHookCallEnding",
            "title": "CallHookCallEnding"
          },
          {
            "$ref": "#/components/schemas/CallHookAssistantSpeechInterrupted",
            "title": "CallHookAssistantSpeechInterrupted"
          },
          {
            "$ref": "#/components/schemas/CallHookCustomerSpeechInterrupted",
            "title": "CallHookCustomerSpeechInterrupted"
          },
          {
            "$ref": "#/components/schemas/CallHookCustomerSpeechTimeout",
            "title": "CallHookCustomerSpeechTimeout"
          },
          {
            "$ref": "#/components/schemas/CallHookModelResponseTimeout",
            "title": "CallHookModelResponseTimeout"
          }
        ]
      }
    },
    "credentials": {
      "type": "array",
      "description": "These are dynamic credentials that will be used for the workflow calls. By default, all the credentials are available for use in the call but you can supplement an additional credentials using this. Dynamic credentials override existing credentials.",
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CreateAnthropicCredentialDTO",
            "title": "AnthropicCredential"
          },
          {
            "$ref": "#/components/schemas/CreateAnthropicBedrockCredentialDTO",
            "title": "AnthropicBedrockCredential"
          },
          {
            "$ref": "#/components/schemas/CreateAnyscaleCredentialDTO",
            "title": "AnyscaleCredential"
          },
          {
            "$ref": "#/components/schemas/CreateAssemblyAICredentialDTO",
            "title": "AssemblyAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateAzureCredentialDTO",
            "title": "AzureCredential"
          },
          {
            "$ref": "#/components/schemas/CreateAzureOpenAICredentialDTO",
            "title": "AzureOpenAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
            "title": "ByoSipTrunkCredential"
          },
          {
            "$ref": "#/components/schemas/CreateCartesiaCredentialDTO",
            "title": "CartesiaCredential"
          },
          {
            "$ref": "#/components/schemas/CreateCerebrasCredentialDTO",
            "title": "CerebrasCredential"
          },
          {
            "$ref": "#/components/schemas/CreateCloudflareCredentialDTO",
            "title": "CloudflareCredential"
          },
          {
            "$ref": "#/components/schemas/CreateCustomLLMCredentialDTO",
            "title": "CustomLLMCredential"
          },
          {
            "$ref": "#/components/schemas/CreateDeepgramCredentialDTO",
            "title": "DeepgramCredential"
          },
          {
            "$ref": "#/components/schemas/CreateDeepInfraCredentialDTO",
            "title": "DeepInfraCredential"
          },
          {
            "$ref": "#/components/schemas/CreateDeepSeekCredentialDTO",
            "title": "DeepSeekCredential"
          },
          {
            "$ref": "#/components/schemas/CreateElevenLabsCredentialDTO",
            "title": "ElevenLabsCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGcpCredentialDTO",
            "title": "GcpCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGladiaCredentialDTO",
            "title": "GladiaCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelCredentialDTO",
            "title": "GhlCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleCredentialDTO",
            "title": "GoogleCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGroqCredentialDTO",
            "title": "GroqCredential"
          },
          {
            "$ref": "#/components/schemas/CreateHumeCredentialDTO",
            "title": "HumeCredential"
          },
          {
            "$ref": "#/components/schemas/CreateInflectionAICredentialDTO",
            "title": "InflectionAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateLangfuseCredentialDTO",
            "title": "LangfuseCredential"
          },
          {
            "$ref": "#/components/schemas/CreateLmntCredentialDTO",
            "title": "LmntCredential"
          },
          {
            "$ref": "#/components/schemas/CreateMakeCredentialDTO",
            "title": "MakeCredential"
          },
          {
            "$ref": "#/components/schemas/CreateMistralCredentialDTO",
            "title": "MistralCredential"
          },
          {
            "$ref": "#/components/schemas/CreateNeuphonicCredentialDTO",
            "title": "NeuphonicCredential"
          },
          {
            "$ref": "#/components/schemas/CreateOpenAICredentialDTO",
            "title": "OpenAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateOpenRouterCredentialDTO",
            "title": "OpenRouterCredential"
          },
          {
            "$ref": "#/components/schemas/CreatePerplexityAICredentialDTO",
            "title": "PerplexityAICredential"
          },
          {
            "$ref": "#/components/schemas/CreatePlayHTCredentialDTO",
            "title": "PlayHTCredential"
          },
          {
            "$ref": "#/components/schemas/CreateRimeAICredentialDTO",
            "title": "RimeAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateRunpodCredentialDTO",
            "title": "RunpodCredential"
          },
          {
            "$ref": "#/components/schemas/CreateS3CredentialDTO",
            "title": "S3Credential"
          },
          {
            "$ref": "#/components/schemas/CreateSmallestAICredentialDTO",
            "title": "SmallestAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateSpeechmaticsCredentialDTO",
            "title": "SpeechmaticsCredential"
          },
          {
            "$ref": "#/components/schemas/CreateSonioxCredentialDTO",
            "title": "SonioxCredential"
          },
          {
            "$ref": "#/components/schemas/CreateSupabaseCredentialDTO",
            "title": "SupabaseCredential"
          },
          {
            "$ref": "#/components/schemas/CreateTavusCredentialDTO",
            "title": "TavusCredential"
          },
          {
            "$ref": "#/components/schemas/CreateTogetherAICredentialDTO",
            "title": "TogetherAICredential"
          },
          {
            "$ref": "#/components/schemas/CreateTwilioCredentialDTO",
            "title": "TwilioCredential"
          },
          {
            "$ref": "#/components/schemas/CreateVonageCredentialDTO",
            "title": "VonageCredential"
          },
          {
            "$ref": "#/components/schemas/CreateWebhookCredentialDTO",
            "title": "WebhookCredential"
          },
          {
            "$ref": "#/components/schemas/CreateCustomCredentialDTO",
            "title": "CustomCredential"
          },
          {
            "$ref": "#/components/schemas/CreateXAiCredentialDTO",
            "title": "XAiCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO",
            "title": "GoogleCalendarOAuth2ClientCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO",
            "title": "GoogleCalendarOAuth2AuthorizationCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO",
            "title": "GoogleSheetsOAuth2AuthorizationCredential"
          },
          {
            "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO",
            "title": "SlackOAuth2AuthorizationCredential"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO",
            "title": "GoHighLevelMCPCredential"
          },
          {
            "$ref": "#/components/schemas/CreateInworldCredentialDTO",
            "title": "InworldCredential"
          },
          {
            "$ref": "#/components/schemas/CreateMinimaxCredentialDTO",
            "title": "MinimaxCredential"
          },
          {
            "$ref": "#/components/schemas/CreateWellSaidCredentialDTO",
            "title": "WellSaidCredential"
          },
          {
            "$ref": "#/components/schemas/CreateEmailCredentialDTO",
            "title": "EmailCredential"
          },
          {
            "$ref": "#/components/schemas/CreateSlackWebhookCredentialDTO",
            "title": "SlackWebhookCredential"
          }
        ],
        "discriminator": {
          "propertyName": "provider",
          "mapping": {
            "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO",
            "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO",
            "anthropic-bedrock": "#/components/schemas/CreateAnthropicBedrockCredentialDTO",
            "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO",
            "assembly-ai": "#/components/schemas/CreateAssemblyAICredentialDTO",
            "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO",
            "azure": "#/components/schemas/CreateAzureCredentialDTO",
            "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO",
            "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO",
            "cerebras": "#/components/schemas/CreateCerebrasCredentialDTO",
            "cloudflare": "#/components/schemas/CreateCloudflareCredentialDTO",
            "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO",
            "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO",
            "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO",
            "deep-seek": "#/components/schemas/CreateDeepSeekCredentialDTO",
            "gcp": "#/components/schemas/CreateGcpCredentialDTO",
            "gladia": "#/components/schemas/CreateGladiaCredentialDTO",
            "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO",
            "google": "#/components/schemas/CreateGoogleCredentialDTO",
            "groq": "#/components/schemas/CreateGroqCredentialDTO",
            "inflection-ai": "#/components/schemas/CreateInflectionAICredentialDTO",
            "langfuse": "#/components/schemas/CreateLangfuseCredentialDTO",
            "lmnt": "#/components/schemas/CreateLmntCredentialDTO",
            "make": "#/components/schemas/CreateMakeCredentialDTO",
            "openai": "#/components/schemas/CreateOpenAICredentialDTO",
            "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO",
            "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO",
            "playht": "#/components/schemas/CreatePlayHTCredentialDTO",
            "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO",
            "runpod": "#/components/schemas/CreateRunpodCredentialDTO",
            "s3": "#/components/schemas/CreateS3CredentialDTO",
            "supabase": "#/components/schemas/CreateSupabaseCredentialDTO",
            "smallest-ai": "#/components/schemas/CreateSmallestAICredentialDTO",
            "tavus": "#/components/schemas/CreateTavusCredentialDTO",
            "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO",
            "twilio": "#/components/schemas/CreateTwilioCredentialDTO",
            "vonage": "#/components/schemas/CreateVonageCredentialDTO",
            "webhook": "#/components/schemas/CreateWebhookCredentialDTO",
            "custom-credential": "#/components/schemas/CreateCustomCredentialDTO",
            "xai": "#/components/schemas/CreateXAiCredentialDTO",
            "neuphonic": "#/components/schemas/CreateNeuphonicCredentialDTO",
            "hume": "#/components/schemas/CreateHumeCredentialDTO",
            "mistral": "#/components/schemas/CreateMistralCredentialDTO",
            "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO",
            "soniox": "#/components/schemas/CreateSonioxCredentialDTO",
            "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO",
            "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO",
            "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO",
            "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO",
            "ghl.oauth2-authorization": "#/components/schemas/CreateGoHighLevelMCPCredentialDTO",
            "inworld": "#/components/schemas/CreateInworldCredentialDTO",
            "minimax": "#/components/schemas/CreateMinimaxCredentialDTO",
            "wellsaid": "#/components/schemas/CreateWellSaidCredentialDTO",
            "email": "#/components/schemas/CreateEmailCredentialDTO",
            "slack-webhook": "#/components/schemas/CreateSlackWebhookCredentialDTO"
          }
        }
      }
    },
    "voicemailDetection": {
      "description": "This is the voicemail detection plan for the workflow.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "off"
          ]
        },
        {
          "$ref": "#/components/schemas/GoogleVoicemailDetectionPlan",
          "title": "Google"
        },
        {
          "$ref": "#/components/schemas/OpenAIVoicemailDetectionPlan",
          "title": "OpenAI"
        },
        {
          "$ref": "#/components/schemas/TwilioVoicemailDetectionPlan",
          "title": "Twilio"
        },
        {
          "$ref": "#/components/schemas/VapiVoicemailDetectionPlan",
          "title": "Vapi"
        }
      ]
    },
    "maxDurationSeconds": {
      "type": "number",
      "description": "This is the maximum duration of the call in seconds.\n\nAfter this duration, the call will automatically end.\n\nDefault is 1800 (30 minutes), max is 43200 (12 hours), and min is 10 seconds.",
      "minimum": 10,
      "maximum": 43200,
      "example": 600
    },
    "name": {
      "type": "string",
      "maxLength": 80
    },
    "edges": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Edge"
      }
    },
    "globalPrompt": {
      "type": "string",
      "maxLength": 5000
    },
    "server": {
      "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. tool.server\n2. workflow.server / assistant.server\n3. phoneNumber.server\n4. org.server",
      "allOf": [
        {
          "$ref": "#/components/schemas/Server"
        }
      ]
    },
    "compliancePlan": {
      "description": "This is the compliance plan for the workflow. It allows you to configure HIPAA and other compliance settings.",
      "allOf": [
        {
          "$ref": "#/components/schemas/CompliancePlan"
        }
      ]
    },
    "analysisPlan": {
      "description": "This is the plan for analysis of workflow's calls. Stored in `call.analysis`.",
      "allOf": [
        {
          "$ref": "#/components/schemas/AnalysisPlan"
        }
      ]
    },
    "artifactPlan": {
      "description": "This is the plan for artifacts generated during workflow's calls. Stored in `call.artifact`.",
      "allOf": [
        {
          "$ref": "#/components/schemas/ArtifactPlan"
        }
      ]
    },
    "startSpeakingPlan": {
      "description": "This is the plan for when the workflow nodes should start talking.\n\nYou should configure this if you're running into these issues:\n- The assistant is too slow to start talking after the customer is done speaking.\n- The assistant is too fast to start talking after the customer is done speaking.\n- The assistant is so fast that it's actually interrupting the customer.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StartSpeakingPlan"
        }
      ]
    },
    "stopSpeakingPlan": {
      "description": "This is the plan for when workflow nodes should stop talking on customer interruption.\n\nYou should configure this if you're running into these issues:\n- The assistant is too slow to recognize customer's interruption.\n- The assistant is too fast to recognize customer's interruption.\n- The assistant is getting interrupted by phrases that are just acknowledgments.\n- The assistant is getting interrupted by background noises.\n- The assistant is not properly stopping -- it starts talking right after getting interrupted.",
      "allOf": [
        {
          "$ref": "#/components/schemas/StopSpeakingPlan"
        }
      ]
    },
    "monitorPlan": {
      "description": "This is the plan for real-time monitoring of the workflow's calls.\n\nUsage:\n- To enable live listening of the workflow's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the workflow's calls, set `monitorPlan.controlEnabled` to `true`.",
      "allOf": [
        {
          "$ref": "#/components/schemas/MonitorPlan"
        }
      ]
    },
    "backgroundSpeechDenoisingPlan": {
      "description": "This enables filtering of noise and background speech while the user is talking.\n\nFeatures:\n- Smart denoising using Krisp\n- Fourier denoising\n\nBoth can be used together. Order of precedence:\n- Smart denoising\n- Fourier denoising",
      "allOf": [
        {
          "$ref": "#/components/schemas/BackgroundSpeechDenoisingPlan"
        }
      ]
    },
    "credentialIds": {
      "description": "These are the credentials that will be used for the workflow calls. By default, all the credentials are available for use in the call but you can provide a subset using this.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "keypadInputPlan": {
      "description": "This is the plan for keypad input handling during workflow calls.",
      "allOf": [
        {
          "$ref": "#/components/schemas/KeypadInputPlan"
        }
      ]
    },
    "voicemailMessage": {
      "type": "string",
      "description": "This is the message that the assistant will say if the call is forwarded to voicemail.\n\nIf unspecified, it will hang up.",
      "maxLength": 1000
    }
  }
}