Vapi · Schema

StartSpeakingPlan

AIVoiceAgentsRealtimeCPaaS

Properties

Name Type Description
waitSeconds number This is how long assistant waits before speaking. Defaults to 0.4. This is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is intended as a stopga
smartEndpointingEnabled object
smartEndpointingPlan object This is the plan for smart endpointing. Pick between Vapi smart endpointing, LiveKit, or custom endpointing model (or nothing). We strongly recommend using livekit endpointing when working in English.
customEndpointingRules array These are the custom endpointing rules to set an endpointing timeout based on a regex on the customer's speech or the assistant's last message. Usage: - If you have yes/no questions like "are you inte
transcriptionEndpointingPlan object This determines how a customer speech is considered done (endpointing) using the transcription of customer's speech. Once an endpoint is triggered, the request is sent to `assistant.model`. Note: This
View JSON Schema on GitHub

JSON Schema

vapi-startspeakingplan-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/StartSpeakingPlan",
  "title": "StartSpeakingPlan",
  "type": "object",
  "properties": {
    "waitSeconds": {
      "type": "number",
      "description": "This is how long assistant waits before speaking. Defaults to 0.4.\n\nThis is the minimum it will wait but if there is latency is the pipeline, this minimum will be exceeded. This is intended as a stopgap in case the pipeline is moving too fast.\n\nExample:\n- If model generates tokens and voice generates bytes within 100ms, the pipeline still waits 300ms before outputting speech.\n\nUsage:\n- If the customer is taking long pauses, set this to a higher value.\n- If the assistant is accidentally jumping in too much, set this to a higher value.\n\n@default 0.4",
      "minimum": 0,
      "maximum": 5,
      "example": 0.4
    },
    "smartEndpointingEnabled": {
      "example": false,
      "deprecated": true,
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string",
          "enum": [
            "livekit"
          ]
        }
      ]
    },
    "smartEndpointingPlan": {
      "description": "This is the plan for smart endpointing. Pick between Vapi smart endpointing, LiveKit, or custom endpointing model (or nothing). We strongly recommend using livekit endpointing when working in English. LiveKit endpointing is not supported in other languages, yet.\n\nIf this is set, it will override and take precedence over `transcriptionEndpointingPlan`.\nThis plan will still be overridden by any matching `customEndpointingRules`.\n\nIf this is not set, the system will automatically use the transcriber's built-in endpointing capabilities if available.",
      "oneOf": [
        {
          "$ref": "#/components/schemas/VapiSmartEndpointingPlan",
          "title": "Vapi"
        },
        {
          "$ref": "#/components/schemas/LivekitSmartEndpointingPlan",
          "title": "Livekit"
        },
        {
          "$ref": "#/components/schemas/CustomEndpointingModelSmartEndpointingPlan",
          "title": "Custom Endpointing Model"
        }
      ]
    },
    "customEndpointingRules": {
      "type": "array",
      "description": "These are the custom endpointing rules to set an endpointing timeout based on a regex on the customer's speech or the assistant's last message.\n\nUsage:\n- If you have yes/no questions like \"are you interested in a loan?\", you can set a shorter timeout.\n- If you have questions where the customer may pause to look up information like \"what's my account number?\", you can set a longer timeout.\n- If you want to wait longer while customer is enumerating a list of numbers, you can set a longer timeout.\n\nThese rules have the highest precedence and will override both `smartEndpointingPlan` and `transcriptionEndpointingPlan` when a rule is matched.\n\nThe rules are evaluated in order and the first one that matches will be used.\n\nOrder of precedence for endpointing:\n1. customEndpointingRules (if any match)\n2. smartEndpointingPlan (if set)\n3. transcriptionEndpointingPlan\n\n@default []",
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/AssistantCustomEndpointingRule",
            "title": "Assistant"
          },
          {
            "$ref": "#/components/schemas/CustomerCustomEndpointingRule",
            "title": "Customer"
          },
          {
            "$ref": "#/components/schemas/BothCustomEndpointingRule",
            "title": "Both"
          }
        ]
      }
    },
    "transcriptionEndpointingPlan": {
      "description": "This determines how a customer speech is considered done (endpointing) using the transcription of customer's speech.\n\nOnce an endpoint is triggered, the request is sent to `assistant.model`.\n\nNote: This plan is only used if `smartEndpointingPlan` is not set and transcriber does not have built-in endpointing capabilities. If both are provided, `smartEndpointingPlan` takes precedence.\nThis plan will also be overridden by any matching `customEndpointingRules`.",
      "allOf": [
        {
          "$ref": "#/components/schemas/TranscriptionEndpointingPlan"
        }
      ]
    }
  }
}