Vapi Chats API

Chats endpoints.

Operations 5

GET /chat List Chats #
POST /chat Create Chat #
GET /chat/{id} Get Chat #
DELETE /chat/{id} Delete Chat #
POST /chat/responses Create Chat (OpenAI Compatible) #

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-chats-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-chats-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vapi Analytics Chats 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: Chats
  description: Chats endpoints.
paths:
  /chat:
    get:
      operationId: ChatController_listChats
      summary: List Chats
      parameters:
      - name: id
        required: false
        in: query
        description: This is the unique identifier for the chat to filter by.
        schema:
          type: string
      - name: assistantId
        required: false
        in: query
        description: This is the unique identifier for the assistant that will be used for the chat.
        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 unique identifier for the squad that will be used for the chat.
        schema:
          type: string
      - name: sessionId
        required: false
        in: query
        description: This is the unique identifier for the session that will be used for the chat.
        schema:
          type: string
      - name: previousChatId
        required: false
        in: query
        description: This is the unique identifier for the previous chat to filter by.
        schema:
          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/ChatPaginatedResponse'
      tags:
      - Chats
      security:
      - bearer: []
    post:
      operationId: ChatController_createChat
      summary: Create Chat
      description: 'Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and transport fields together. The transport.useLLMGeneratedMessageForOutbound flag controls whether input is processed by LLM (true, default) or forwarded directly as SMS (false).'
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChatDTO'
      responses:
        '200':
          description: Chat response - either non-streaming chat or streaming
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/Chat'
                - $ref: '#/components/schemas/CreateChatStreamResponse'
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
      tags:
      - Chats
      security:
      - bearer: []
  /chat/{id}:
    get:
      operationId: ChatController_getChat
      summary: Get Chat
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Chat'
      tags:
      - Chats
      security:
      - bearer: []
    delete:
      operationId: ChatController_deleteChat
      summary: Delete Chat
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Chat'
      tags:
      - Chats
      security:
      - bearer: []
  /chat/responses:
    post:
      operationId: ChatController_createOpenAIChat
      summary: Create Chat (OpenAI Compatible)
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenAIResponsesRequest'
      responses:
        '200':
          description: OpenAI Responses API format - either non-streaming or streaming
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ResponseObject'
                - $ref: '#/components/schemas/ResponseTextDeltaEvent'
                - $ref: '#/components/schemas/ResponseTextDoneEvent'
                - $ref: '#/components/schemas/ResponseCompletedEvent'
                - $ref: '#/components/schemas/ResponseErrorEvent'
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
      tags:
      - Chats
      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 customer.

            This allows customization of the assistant''s behavior for individual customers in batch calls.'
          allOf:
          - $ref: '#/components/schemas/AssistantOverrides'
        number:
          type: string
          description: This is the number of the customer.
          minLength: 3
          maxLength: 40
        sipUri:
          type: string
          description: This is the SIP URI of the customer.
        name:
          type: string
          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>`.'
          maxLength: 40
        email:
          type: string
          description: This is the email of the customer.
          maxLength: 40
        externalId:
          type: string
          description: This is the external ID of the customer.
          maxLength: 40
    CreateAzureCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - azure
        service:
          type: string
          description: This is the service being used in Azure.
          enum:
          - speech
          - blob_storage
          default: speech
        region:
          type: string
          description: This is the region of the Azure resource.
          enum:
          - australiaeast
          - canadaeast
          - canadacentral
          - centralus
          - eastus2
          - eastus
          - france
          - germanywestcentral
          - india
          - japaneast
          - japanwest
          - northcentralus
          - norway
          - polandcentral
          - southcentralus
          - spaincentral
          - swedencentral
          - switzerland
          - uaenorth
          - uk
          - westeurope
          - westus
          - westus3
        apiKey:
          type: string
          

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