Vapi · Schema

ConversationNode

Artificial IntelligenceVoiceAgentsReal-TimeCPaaS

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"
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/vapi-conversationnode"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.