Vapi Sessions API

Sessions endpoints.

Operations 5

POST /session Create Session #
GET /session List Sessions #
GET /session/{id} Get Session #
PATCH /session/{id} Update Session #
DELETE /session/{id} Delete Session #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/vapi-ai-sessions-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

vapi-ai-sessions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vapi Analytics Sessions API
  description: Vapi API — Analytics resource. Voice AI for developers.
  version: '1.0'
  contact:
    name: Vapi
    url: https://vapi.ai
servers:
- url: https://api.vapi.ai
security:
- bearer: []
tags:
- name: Sessions
  description: Sessions endpoints.
paths:
  /session:
    post:
      operationId: SessionController_create
      summary: Create Session
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSessionDTO'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Session'
      tags:
      - Sessions
      security:
      - bearer: []
    get:
      operationId: SessionController_findAllPaginated
      summary: List Sessions
      parameters:
      - name: id
        required: false
        in: query
        description: This is the unique identifier for the session to filter by.
        schema:
          type: string
      - name: name
        required: false
        in: query
        description: This is the name of the session to filter by.
        schema:
          type: string
      - name: assistantId
        required: false
        in: query
        description: This is the ID of the assistant to filter sessions by.
        schema:
          type: string
      - name: assistantIdAny
        required: false
        in: query
        description: Filter by multiple assistant IDs. Provide as comma-separated values.
        schema:
          example: assistant-1,assistant-2,assistant-3
          type: string
      - name: squadId
        required: false
        in: query
        description: This is the ID of the squad to filter sessions by.
        schema:
          type: string
      - name: workflowId
        required: false
        in: query
        description: This is the ID of the workflow to filter sessions by.
        schema:
          type: string
      - required: false
        description: 'This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.


          Use cases:

          - `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.

          - `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.


          If `false`, the `number` is still required to only contain alphanumeric characters (regex: `/^\+?[a-zA-Z0-9]+$/`).


          @default true (E164 check is enabled)'
        name: numberE164CheckEnabled
        in: query
        schema:
          default: true
          type: boolean
      - required: false
        description: This is the extension that will be dialed after the call is answered.
        name: extension
        in: query
        schema:
          maxLength: 10
          example: null
          type: string
      - name: assistantOverrides
        required: false
        description: 'These are the overrides for the assistant''s settings and template variables specific to this customer.

          This allows customization of the assistant''s behavior for individual customers in batch calls.'
        allOf:
        - $ref: '#/components/schemas/AssistantOverrides'
        in: query
        schema: {}
      - required: false
        description: This is the number of the customer.
        name: number
        in: query
        schema:
          minLength: 3
          maxLength: 40
          type: string
      - required: false
        description: This is the SIP URI of the customer.
        name: sipUri
        in: query
        schema:
          type: string
      - required: false
        description: 'This is the name of the customer. This is just for your own reference.


          For SIP inbound calls, this is extracted from the `From` SIP header with format `"Display Name" <sip:username@domain>`.'
        name: name
        in: query
        schema:
          maxLength: 40
          type: string
      - required: false
        description: This is the email of the customer.
        name: email
        in: query
        schema:
          maxLength: 40
          type: string
      - required: false
        description: This is the external ID of the customer.
        name: externalId
        in: query
        schema:
          maxLength: 40
          type: string
      - name: customerNumberAny
        required: false
        in: query
        description: Filter by any of the specified customer phone numbers (comma-separated).
        schema:
          example: +1234567890,+0987654321
          type: string
      - name: phoneNumberId
        required: false
        in: query
        description: This will return sessions with the specified phoneNumberId.
        schema:
          type: string
      - name: phoneNumberIdAny
        required: false
        in: query
        description: This will return sessions with any of the specified phoneNumberIds.
        schema:
          type: array
          items:
            type: string
      - name: page
        required: false
        in: query
        description: This is the page number to return. Defaults to 1.
        schema:
          minimum: 1
          type: number
      - name: sortOrder
        required: false
        in: query
        description: This is the sort order for pagination. Defaults to 'DESC'.
        schema:
          enum:
          - ASC
          - DESC
          type: string
      - name: sortBy
        required: false
        in: query
        description: This is the column to sort by. Defaults to 'createdAt'.
        schema:
          enum:
          - createdAt
          - duration
          - cost
          type: string
      - name: limit
        required: false
        in: query
        description: This is the maximum number of items to return. Defaults to 100.
        schema:
          minimum: 0
          maximum: 1000
          type: number
      - name: createdAtGt
        required: false
        in: query
        description: This will return items where the createdAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLt
        required: false
        in: query
        description: This will return items where the createdAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtGe
        required: false
        in: query
        description: This will return items where the createdAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: createdAtLe
        required: false
        in: query
        description: This will return items where the createdAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGt
        required: false
        in: query
        description: This will return items where the updatedAt is greater than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLt
        required: false
        in: query
        description: This will return items where the updatedAt is less than the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtGe
        required: false
        in: query
        description: This will return items where the updatedAt is greater than or equal to the specified value.
        schema:
          format: date-time
          type: string
      - name: updatedAtLe
        required: false
        in: query
        description: This will return items where the updatedAt is less than or equal to the specified value.
        schema:
          format: date-time
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionPaginatedResponse'
      tags:
      - Sessions
      security:
      - bearer: []
  /session/{id}:
    get:
      operationId: SessionController_findOne
      summary: Get Session
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Session'
      tags:
      - Sessions
      security:
      - bearer: []
    patch:
      operationId: SessionController_update
      summary: Update Session
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSessionDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Session'
      tags:
      - Sessions
      security:
      - bearer: []
    delete:
      operationId: SessionController_remove
      summary: Delete Session
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier for the resource.
        schema:
          format: uuid
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Session'
      tags:
      - Sessions
      security:
      - bearer: []
components:
  schemas:
    CreateMistralCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - mistral
        apiKey:
          type: string
          maxLength: 100
          description: This is not returned in the API.
        name:
          type: string
          description: This is the name of credential. This is just for your reference.
          minLength: 1
          maxLength: 40
      required:
      - provider
      - apiKey
    CreateTextEditorToolDTO:
      type: object
      properties:
        messages:
          type: array
          description: 'These are the messages that will be spoken to the user as the tool is running.


            For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.'
          items:
            oneOf:
            - $ref: '#/components/schemas/ToolMessageStart'
              title: ToolMessageStart
            - $ref: '#/components/schemas/ToolMessageComplete'
              title: ToolMessageComplete
            - $ref: '#/components/schemas/ToolMessageFailed'
              title: ToolMessageFailed
            - $ref: '#/components/schemas/ToolMessageDelayed'
              title: ToolMessageDelayed
        type:
          type: string
          enum:
          - textEditor
          description: The type of tool. "textEditor" for Text Editor tool.
        subType:
          type: string
          enum:
          - text_editor_20241022
          description: The sub type of tool.
        server:
          description: "\n  This is the server where a `tool-calls` webhook will be sent.\n\n  Notes:\n  - Webhook is sent to this server when a tool call is made.\n  - Webhook contains the call, assistant, and phone number objects.\n  - Webhook contains the variables set on the assistant.\n  - Webhook is sent to the first available URL in this order: {{tool.server.url}}, {{assistant.server.url}}, {{phoneNumber.server.url}}, {{org.server.url}}.\n  - Webhook expects a response with tool call result."
          allOf:
          - $ref: '#/components/schemas/Server'
        name:
          type: string
          description: The name of the tool, fixed to 'str_replace_editor'
          default: str_replace_editor
          enum:
          - str_replace_editor
        rejectionPlan:
          description: "This is the plan to reject a tool call based on the conversation state.\n\n// Example 1: Reject endCall if user didn't say goodbye\n```json\n{\n  conditions: [{\n    type: 'regex',\n    regex: '(?i)\\\\b(bye|goodbye|farewell|see you later|take care)\\\\b',\n    target: { position: -1, role: 'user' },\n    negate: true  // Reject if pattern does NOT match\n  }]\n}\n```\n\n// Example 2: Reject transfer if user is actually asking a question\n```json\n{\n  conditions: [{\n    type: 'regex',\n    regex: '\\\\?',\n    target: { position: -1, role: 'user' }\n  }]\n}\n```\n\n// Example 3: Reject transfer if user didn't mention transfer recently\n```json\n{\n  conditions: [{\n    type: 'liquid',\n    liquid: `{% assign recentMessages = messages | last: 5 %}\n{% assign userMessages = recentMessages | where: 'role', 'user' %}\n{% assign mentioned = false %}\n{% for msg in userMessages %}\n  {% if msg.content contains 'transfer' or msg.content contains 'connect' or msg.content contains 'speak to' %}\n    {% assign mentioned = true %}\n    {% break %}\n  {% endif %}\n{% endfor %}\n{% if mentioned %}\n  false\n{% else %}\n  true\n{% endif %}`\n  }]\n}\n```\n\n// Example 4: Reject endCall if the bot is looping and trying to exit\n```json\n{\n  conditions: [{\n    type: 'liquid',\n    liquid: `{% assign recentMessages = messages | last: 6 %}\n{% assign userMessages = recentMessages | where: 'role', 'user' | reverse %}\n{% if userMessages.size < 3 %}\n  false\n{% else %}\n  {% assign msg1 = userMessages[0].content | downcase %}\n  {% assign msg2 = userMessages[1].content | downcase %}\n  {% assign msg3 = userMessages[2].content | downcase %}\n  {% comment %} Check for repetitive messages {% endcomment %}\n  {% if msg1 == msg2 or msg1 == msg3 or msg2 == msg3 %}\n    true\n  {% comment %} Check for common loop phrases {% endcomment %}\n  {% elsif msg1 contains 'cool thanks' or msg2 contains 'cool thanks' or msg3 contains 'cool thanks' %}\n    true\n  {% elsif msg1 contains 'okay thanks' or msg2 contains 'okay thanks' or msg3 contains 'okay thanks' %}\n    true\n  {% elsif msg1 contains 'got it' or msg2 contains 'got it' or msg3 contains 'got it' %}\n    true\n  {% else %}\n    false\n  {% endif %}\n{% endif %}`\n  }]\n}\n```"
          allOf:
          - $ref: '#/components/schemas/ToolRejectionPlan'
      required:
      - type
      - subType
      - name
    TransferDestinationAssistant:
      type: object
      properties:
        message:
          description: 'This is spoken to the customer before connecting them to the destination.


            Usage:

            - If this is not provided and transfer tool messages is not provided, default is "Transferring the call now".

            - If set to "", nothing is spoken. This is useful when you want to silently transfer. This is especially useful when transferring between assistants in a squad. In this scenario, you likely also want to set `assistant.firstMessageMode=assistant-speaks-first-with-model-generated-message` for the destination assistant.


            This accepts a string or a ToolMessageStart class. Latter is useful if you want to specify multiple messages for different languages through the `contents` field.'
          oneOf:
          - type: string
          - $ref: '#/components/schemas/CustomMessage'
        type:
          type: string
          enum:
          - assistant
        transferMode:
          type: string
          description: "This is the mode to use for the transfer. Defaults to `rolling-history`.\n\n- `rolling-history`: This is the default mode. It keeps the entire conversation history and appends the new assistant's system message on transfer.\n\n  Example:\n\n  Pre-transfer:\n    system: assistant1 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n\n  Post-transfer:\n    system: assistant1 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n    system: assistant2 system message\n    assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n- `swap-system-message-in-history`: This replaces the original system message with the new assistant's system message on transfer.\n\n  Example:\n\n  Pre-transfer:\n    system: assistant1 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n\n  Post-transfer:\n    system: assistant2 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n    assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n- `delete-history`: This deletes the entire conversation history on transfer.\n\n  Example:\n\n  Pre-transfer:\n    system: assistant1 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n\n  Post-transfer:\n    system: assistant2 system message\n    assistant: assistant2 first message\n    user: Yes, please\n    assistant: how can i help?\n    user: i need help with my account\n\n- `swap-system-message-in-history-and-remove-transfer-tool-messages`: This replaces the original system message with the new assistant's system message on transfer and removes transfer tool messages from conversation history sent to the LLM.\n\n  Example:\n\n  Pre-transfer:\n    system: assistant1 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    transfer-tool\n    transfer-tool-result\n    assistant: (destination.message)\n\n  Post-transfer:\n    system: assistant2 system message\n    assistant: assistant1 first message\n    user: hey, good morning\n    assistant: how can i help?\n    user: i need help with my account\n    assistant: (destination.message)\n    assistant: assistant2 first message (or model generated if firstMessageMode is set to `assistant-speaks-first-with-model-generated-message`)\n\n@default 'rolling-history'"
          enum:
          - rolling-history
          - swap-system-message-in-history
          - swap-system-message-in-history-and-remove-transfer-tool-messages
          - delete-history
        assistantName:
          type: string
          description: This is the assistant to transfer the call to.
        description:
          type: string
          description: This is the description of the destination, used by the AI to choose when and how to transfer the call.
      required:
      - type
      - assistantName
    FallbackGladiaTranscriber:
      type: object
      properties:
        provider:
          type: string
          description: This is the transcription provider that will be used.
          enum:
          - gladia
        model:
          description: This is the Gladia model that will be used. Default is 'fast'
          oneOf:
          - type: string
            enum:
            - fast
            - accurate
            - solaria-1
        languageBehaviour:
          description: Defines how the transcription model detects the audio language. Default value is 'automatic single language'.
          oneOf:
          - type: string
            enum:
            - manual
            - automatic single language
            - automatic multiple languages
        language:
          type: string
          description: Defines the language to use for the transcription. Required when languageBehaviour is 'manual'.
          enum:
          - af
          - sq
          - am
          - ar
          - hy
          - as
          - az
          - ba
          - eu
          - be
          - bn
          - bs
          - br
          - bg
          - ca
          - zh
          - hr
          - cs
          - da
          - nl
          - en
          - et
          - fo
          - fi
          - fr
          - gl
          - ka
          - de
          - el
          - gu
          - ht
          - ha
          - haw
          - he
          - hi
          - hu
          - is
          - id
          - it
          - ja
          - jv
          - kn
          - kk
          - km
          - ko
          - lo
          - la
          - lv
          - ln
          - lt
          - lb
          - mk
          - mg
          - ms
          - ml
          - mt
          - mi
          - mr
          - mn
          - my
          - ne
          - 'no'
          - nn
          - oc
          - ps
          - fa
          - pl
          - pt
          - pa
          - ro
          - ru
          - sa
          - sr
          - sn
          - sd
          - si
          - sk
          - sl
          - so
          - es
          - su
          - sw
          - sv
          - tl
          - tg
          - ta
          - tt
          - te
          - th
          - bo
          - tr
          - tk
          - uk
          - ur
          - uz
          - vi
          - cy
          - yi
          - yo
        languages:
          type: array
          description: Defines the languages to use for the transcription. Required when languageBehaviour is 'manual'.
          items:
            type: string
            enum:
            - af
            - sq
            - am
            - ar
            - hy
            - as
            - az
            - ba
            - eu
            - be
            - bn
            - bs
            - br
            - bg
            - ca
            - zh
            - hr
            - cs
            - da
            - nl
            - en
            - et
            - fo
            - fi
            - fr
            - gl
            - ka
            - de
            - el
            - gu
            - ht
            - ha
            - haw
            - he
            - hi
            - hu
            - is
            - id
            - it
            - ja
            - jv
            - kn
            - kk
            - km
            - ko
            - lo
            - la
            - lv
            - ln
            - lt
            - lb
            - mk
            - mg
            - ms
            - ml
            - mt
            - mi
            - mr
            - mn
            - my
            - ne
            - 'no'
            - nn
            - oc
            - ps
            - fa
            - pl
            - pt
            - pa
            - ro
            - ru
            - sa
            - sr
            - sn
            - sd
            - si
            - sk
            - sl
            - so
            - es
            - su
            - sw
            - sv
            - tl
            - tg
            - ta
            - tt
            - te
            - th
            - bo
            - tr
            - tk
            - uk
            - ur
            - uz
            - vi
            - cy
            - yi
            - yo
        transcriptionHint:
          type: string
          description: 'Provides a custom vocabulary to the model to improve accuracy of transcribing context specific words, technical terms, names, etc. If empty, this argument is ignored.

            ⚠️ Warning ⚠️: Please be aware that the transcription_hint field has a character limit of 600. If you provide a transcription_hint longer than 600 characters, it will be automatically truncated to meet this limit.'
          maxLength: 600
          example: custom vocabulary
        prosody:
          type: boolean
          description: If prosody is true, you will get a transcription that can contain prosodies i.e. (laugh) (giggles) (malefic laugh) (toss) (music)… Default value is false.
          example: false
        audioEnhancer:
          type: boolean
          description: If true, audio will be pre-processed to improve accuracy but latency will increase. Default value is false.
          example: false
        confidenceThreshold:
          type: number
          description: 'Transcripts below this confidence threshold will be discarded.


            @default 0.4'
          minimum: 0
          maximum: 1
          example: 0.4
        endpointing:
          type: number
          minimum: 0.01
          maximum: 10
          example: 0.05
          description: Endpointing time in seconds - time to wait before considering speech ended
        speechThreshold:
          type: number
          minimum: 0
          maximum: 1
          example: 0.6
          description: Speech threshold - sensitivity configuration for speech detection (0.0 to 1.0)
        customVocabularyEnabled:
          type: boolean
          example: false
          description: Enable custom vocabulary for improved accuracy
        customVocabularyConfig:
          description: Custom vocabulary configuration
          allOf:
          - $ref: '#/components/schemas/GladiaCustomVocabularyConfigDTO'
        region:
          type: string
          enum:
          - us-west
          - eu-west
          description: Region for processing audio (us-west or eu-west)
          example: us-west
        receivePartialTranscripts:
          type: boolean
          example: false
          description: Enable partial transcripts for low-latency streaming transcription
      required:
      - provider
    RimeAIVoice:
      type: object
      properties:
        cachingEnabled:
          type: boolean
          description: This is the flag to toggle voice caching for the assistant.
          example: true
          default: true
        provider:
          type: string
          description: This is the voice provider that will be used.
          enum:
          - rime-ai
        voiceId:
          description: This is the provider-specific ID that will be used.
          oneOf:
          - type: string
            enum:
            - cove
            - moon
            - wildflower
            - eva
            - amber
            - maya
            - lagoon
            - breeze
            - helen
            - joy
            - marsh
            - creek
            - cedar
            - alpine
            - summit
            - nicholas
            - tyler
            - colin
            - hank
            - thunder
            - astra
            - eucalyptus
            - moraine
            - peak
            - tundra
            - mesa_extra
            - talon
            - marlu
            - glacier
            - falcon
            - luna
            - celeste
            - estelle
            - andromeda
            - esther
            - lyra
            - lintel
            - oculus
            - vespera
            - transom
            - bond
            - arcade
            - atrium
            - cupola
            - fern
            - sirius
            - orion
            - masonry
            - albion
            - parapet
            title: Suggested Voice Options
            description: Popular Rime AI voices across mist, mistv2, and arcana models. Any valid Rime AI voice ID is accepted, not just these suggestions.
          - type: string
            title: Any Rime AI Voice ID
            description: Any valid Rime AI voice ID. See https://docs.rime.ai/docs/voices for the full catalog.
        model:
          type: string
          description: This is the model that will be used. Defaults to 'arcana' when not specified.
          enum:
          - arcana
          - mistv2
          - mist
          example: arcana
        speed:
          type: number
          description: This is the speed multiplier that will be used.
          minimum: 0.1
          example: null
        pauseBetweenBrackets:
          type: boolean
          description: 'This is a flag that controls whether to add slight pauses using angle brackets. Example: "Hi. <200> I''d love to have a conversation with you." adds a 200ms pause between the first and second sentences.'
          example: false
        phonemizeBetweenBrackets:
          type: boolean
          description: 'This is a flag that controls whether text inside brackets should be phonemized (converted to phonetic pronunciation) - Example: "{h''El.o} World" will pronounce "Hello" as expected.'
          example: false
        reduceLatency:
          type: boolean
          description: This is a flag that controls whether to optimize for reduced latency in streaming. https://docs.rime.ai/api-reference/endpoint/websockets#param-reduce-latency
          example: false
        inlineSpeedAlpha:
          type: string
          description: This is a string that allows inline speed control using alpha notation. https://docs.rime.ai/api-reference/endpoint/websockets#param-inline-speed-alpha
          example: null
        language:
          type: string
          description: 'Language for speech synthesis. Uses ISO 639 codes. Supported: en, es, de, fr, ar, hi, ja, he, pt, ta, si.'
          enum:
          - en
          - es
          - de
          - fr
          - ar
          - hi
          - ja
          - he
          - pt
          - ta
          - si
          example: en
        chunkPlan:
          description: This is the plan for chunking the model output before it is sent to the voice provider.
          allOf:
          - $ref: '#/components/schemas/ChunkPlan'
        fallbackPlan:
          description: This is the plan for voice provider fallbacks in the event that the primary voice provider fails.
          allOf:
          - $ref: '#/components/schemas/FallbackPlan'
      required:
      - provider
      - voiceId
    CreateSquadDTO:
      type: object
      properties:
        name:
          type: string
          description: This is the name of the squad.
        members:
          description: 'This is the list of assistants that make up the squad.


            The call will start with the first assistant in the list.'
          type: array
          items:
            $ref: '#/components/schemas/SquadMemberDTO'
        membersOverrides:
          description: 'This can be used to override all the assistants'' settings and provide values for their template variables.


            Both `membersOverrides` and `members[n].assistantOverrides` can be used together. First, `members[n].assistantOverrides` is applied. Then, `membersOverrides` is applied as a global override.'
          allOf:
          - $ref: '#/components/schemas/AssistantOverrides'
      required:
      - members
    CreateCustomerDTO:
      type: object
      properties:
        numberE164CheckEnabled:
          type: boolean
          description: 'This is the flag to toggle the E164 check for the `number` field. This is an advanced property which should be used if you know your use case requires it.


            Use cases:

            - `false`: To allow non-E164 numbers like `+001234567890`, `1234`, or `abc`. This is useful for dialing out to non-E164 numbers on your SIP trunks.

            - `true` (default): To allow only E164 numbers like `+14155551234`. This is standard for PSTN calls.


            If `false`, the `number` is still required to only contain alphanumeric characters (regex: `/^\+?[a-zA-Z0-9]+$/`).


            @default true (E164 check is enabled)'
          default: true
        extension:
          type: string
          description: This is the extension that will be dialed after the call is answered.
          maxLength: 10
          example: null
        assistantOverrides:
          description: 'These are the overrides for the assistant''s settings and template variables specific to this

# --- truncated at 32 KB (744 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vapi-ai/refs/heads/main/openapi/vapi-ai-sessions-api-openapi.yml