Vapi · Schema

ConversationNode

AIVoiceAgentsRealtimeCPaaS

Properties

Name Type Description
type string This is the Conversation node. This can be used to start a conversation with the customer. The flow is: - Workflow starts the conversation node - Model is active with the `prompt` and global context.
model object This is the model for the node. This overrides `workflow.model`.
transcriber object This is the transcriber for the node. This overrides `workflow.transcriber`.
voice object This is the voice for the node. This overrides `workflow.voice`.
tools array These are the tools that the conversation node can use during the call. To use existing tools, use `toolIds`. Both `tools` and `toolIds` can be used together.
toolIds array These are the tools that the conversation node can use during the call. To use transient tools, use `tools`. Both `tools` and `toolIds` can be used together.
prompt string
globalNodePlan object This is the plan for the global node.
variableExtractionPlan object This is the plan that controls the variable extraction from the user's responses. Usage: Use `schema` to specify what you want to extract from the user's responses. ```json { "schema": { "type": "obje
name string
isStart boolean This is whether or not the node is the start of the workflow.
metadata object This is for metadata you want to store on the task.
View JSON Schema on GitHub

JSON Schema

vapi-conversationnode-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/ConversationNode",
  "title": "ConversationNode",
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "description": "This is the Conversation node. This can be used to start a conversation with the customer.\n\nThe flow is:\n- Workflow starts the conversation node\n- Model is active with the `prompt` and global context.\n- Model will call a tool to exit this node.\n- Workflow will extract variables from the conversation.\n- Workflow continues.",
      "enum": [
        "conversation"
      ]
    },
    "model": {
      "description": "This is the model for the node.\n\nThis overrides `workflow.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 node.\n\nThis overrides `workflow.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 node.\n\nThis overrides `workflow.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"
        }
      ]
    },
    "tools": {
      "type": "array",
      "description": "These are the tools that the conversation node can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.",
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CreateApiRequestToolDTO",
            "title": "ApiRequestTool"
          },
          {
            "$ref": "#/components/schemas/CreateBashToolDTO",
            "title": "BashTool"
          },
          {
            "$ref": "#/components/schemas/CreateCodeToolDTO",
            "title": "CodeTool"
          },
          {
            "$ref": "#/components/schemas/CreateComputerToolDTO",
            "title": "ComputerTool"
          },
          {
            "$ref": "#/components/schemas/CreateDtmfToolDTO",
            "title": "DtmfTool"
          },
          {
            "$ref": "#/components/schemas/CreateEndCallToolDTO",
            "title": "EndCallTool"
          },
          {
            "$ref": "#/components/schemas/CreateFunctionToolDTO",
            "title": "FunctionTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO",
            "title": "GoHighLevelCalendarAvailabilityTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO",
            "title": "GoHighLevelCalendarEventCreateTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO",
            "title": "GoHighLevelContactCreateTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO",
            "title": "GoHighLevelContactGetTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO",
            "title": "GoogleCalendarCheckAvailabilityTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO",
            "title": "GoogleCalendarCreateEventTool"
          },
          {
            "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO",
            "title": "GoogleSheetsRowAppendTool"
          },
          {
            "$ref": "#/components/schemas/CreateHandoffToolDTO",
            "title": "HandoffTool"
          },
          {
            "$ref": "#/components/schemas/CreateMcpToolDTO",
            "title": "McpTool"
          },
          {
            "$ref": "#/components/schemas/CreateQueryToolDTO",
            "title": "QueryTool"
          },
          {
            "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO",
            "title": "SlackSendMessageTool"
          },
          {
            "$ref": "#/components/schemas/CreateSmsToolDTO",
            "title": "SmsTool"
          },
          {
            "$ref": "#/components/schemas/CreateTextEditorToolDTO",
            "title": "TextEditorTool"
          },
          {
            "$ref": "#/components/schemas/CreateTransferCallToolDTO",
            "title": "TransferCallTool"
          },
          {
            "$ref": "#/components/schemas/CreateSipRequestToolDTO",
            "title": "SipRequestTool"
          },
          {
            "$ref": "#/components/schemas/CreateVoicemailToolDTO",
            "title": "VoicemailTool"
          }
        ]
      }
    },
    "toolIds": {
      "description": "These are the tools that the conversation node can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "prompt": {
      "type": "string",
      "maxLength": 5000
    },
    "globalNodePlan": {
      "description": "This is the plan for the global node.",
      "allOf": [
        {
          "$ref": "#/components/schemas/GlobalNodePlan"
        }
      ]
    },
    "variableExtractionPlan": {
      "description": "This is the plan that controls the variable extraction from the user's responses.\n\nUsage:\nUse `schema` to specify what you want to extract from the user's responses.\n```json\n{\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"user\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"age\": {\n            \"type\": \"number\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nThis will be extracted as `{{ user.name }}` and `{{ user.age }}` respectively.\n\n(Optional) Use `aliases` to create new variables.\n\n```json\n{\n  \"aliases\": [\n    {\n      \"key\": \"userAge\",\n      \"value\": \"{{user.age}}\"\n    },\n    {\n      \"key\": \"userName\",\n      \"value\": \"{{user.name}}\"\n    }\n  ]\n}\n```\n\nThis will be extracted as `{{ userAge }}` and `{{ userName }}` respectively.\n\nNote: The `schema` field is required for Conversation nodes if you want to extract variables from the user's responses. `aliases` is just a convenience.",
      "allOf": [
        {
          "$ref": "#/components/schemas/VariableExtractionPlan"
        }
      ]
    },
    "name": {
      "type": "string",
      "maxLength": 80
    },
    "isStart": {
      "type": "boolean",
      "description": "This is whether or not the node is the start of the workflow."
    },
    "metadata": {
      "type": "object",
      "description": "This is for metadata you want to store on the task."
    }
  },
  "required": [
    "type",
    "name"
  ]
}