Vapi Squads API

Squads endpoints.

Operations 5

POST /squad Create Squad #
GET /squad List Squads #
GET /squad/{id} Get Squad #
PATCH /squad/{id} Update Squad #
DELETE /squad/{id} Delete Squad #

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-squads-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-squads-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vapi Analytics Squads 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: Squads
  description: Squads endpoints.
paths:
  /squad:
    post:
      operationId: SquadController_create
      summary: Create Squad
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSquadDTO'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Squad'
      tags:
      - Squads
      security:
      - bearer: []
    get:
      operationId: SquadController_findAll
      summary: List Squads
      parameters:
      - 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:
                type: array
                items:
                  $ref: '#/components/schemas/Squad'
      tags:
      - Squads
      security:
      - bearer: []
  /squad/{id}:
    get:
      operationId: SquadController_findOne
      summary: Get Squad
      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/Squad'
      tags:
      - Squads
      security:
      - bearer: []
    patch:
      operationId: SquadController_update
      summary: Update Squad
      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/UpdateSquadDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Squad'
      tags:
      - Squads
      security:
      - bearer: []
    delete:
      operationId: SquadController_remove
      summary: Delete Squad
      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/Squad'
      tags:
      - Squads
      security:
      - bearer: []
components:
  schemas:
    SummaryPlan:
      type: object
      properties:
        messages:
          description: "These are the messages used to generate the summary.\n\n@default: ```\n[\n  {\n    \"role\": \"system\",\n    \"content\": \"You are an expert note-taker. You will be given a transcript of a call. Summarize the call in 2-3 sentences. DO NOT return anything except the summary.\"\n  },\n  {\n    \"role\": \"user\",\n    \"content\": \"Here is the transcript:\\n\\n{{transcript}}\\n\\n. Here is the ended reason of the call:\\n\\n{{endedReason}}\\n\\n\"\n  }\n]```\n\nYou can customize by providing any messages you want.\n\nHere are the template variables available:\n- {{transcript}}: The transcript of the call from `call.artifact.transcript` \n- {{systemPrompt}}: The system prompt of the call from `assistant.model.messages[type=system].content` \n- {{messages}}: The messages of the call from `assistant.model.messages` \n- {{endedReason}}: The ended reason of the call from `call.endedReason`"
          type: array
          items:
            type: object
        enabled:
          type: boolean
          description: 'This determines whether a summary is generated and stored in `call.analysis.summary`. Defaults to true.


            Usage:

            - If you want to disable the summary, set this to false.


            @default true'
        timeoutSeconds:
          type: number
          description: 'This is how long the request is tried before giving up. When request times out, `call.analysis.summary` will be empty.


            Usage:

            - To guarantee the summary is generated, set this value high. Note, this will delay the end of call report in cases where model is slow to respond.


            @default 5 seconds'
          minimum: 1
          maximum: 60
    CallHookCallEnding:
      type: object
      properties:
        'on':
          type: string
          description: This is the event that triggers this hook
          enum:
          - call.ending
          maxLength: 1000
        do:
          type: array
          description: This is the set of actions to perform when the hook triggers
          items:
            oneOf:
            - $ref: '#/components/schemas/ToolCallHookAction'
              title: ToolCallHookAction
            - $ref: '#/components/schemas/MessageAddHookAction'
              title: MessageAddHookAction
        filters:
          description: This is the set of filters that must match for the hook to trigger
          type: array
          items:
            $ref: '#/components/schemas/CallHookFilter'
      required:
      - 'on'
      - do
    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
    NeuphonicVoice:
      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:
          - neuphonic
        voiceId:
          description: This is the provider-specific ID that will be used.
          oneOf:
          - type: string
            enum: []
            title: Preset Voice Options
          - type: string
            title: Neuphonic Voice ID
        model:
          type: string
          description: This is the model that will be used. Defaults to 'neu_fast' if not specified.
          enum:
          - neu_hq
          - neu_fast
          example: neu_fast
        language:
          type: object
          description: This is the language (ISO 639-1) that is enforced for the model.
          example: en
        speed:
          type: number
          description: This is the speed multiplier that will be used.
          minimum: 0.25
          maximum: 2
          example: null
        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
      - language
    RecordingConsentPlanStayOnLine:
      type: object
      properties:
        message:
          type: string
          description: 'This is the message asking for consent to record the call.

            If the type is `stay-on-line`, the message should ask the user to hang up if they do not consent.

            If the type is `verbal`, the message should ask the user to verbally consent or decline.'
          maxLength: 1000
          examples:
          - For quality purposes, this call may be recorded. Please stay on the line if you agree or end the call if you do not consent.
          - This call may be recorded for quality and training purposes. Say "I agree" if you consent to being recorded, or "I disagree" if you do not consent.
        voice:
          description: 'This is the voice to use for the consent message. If not specified, inherits from the assistant''s voice.

            Use a different voice for the consent message for a better user experience.'
          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
          - $ref: '#/components/schemas/XaiVoice'
            title: XaiVoice
        firstMessageMode:
          type: string
          description: 'This controls whether the consent assistant speaks first or waits for the caller to speak first.


            Use:

            - `assistant-speaks-first` (default) to have the consent assistant play the consent message as soon as the call is answered.

            - `assistant-waits-for-user` to have the consent assistant wait for the caller to speak before playing the consent message.


            We strongly recommend `assistant-waits-for-user` for outbound calls. Some telephony providers signal "answered" while the line is still ringing, which can cause the consent message to play into a ringing line and be missed by the caller. Waiting for the caller to speak first guarantees they hear the full consent message.


            Note: when combined with `type: ''stay-on-line''`, silence only counts toward consent after the caller has spoken at least once.


            @default ''assistant-speaks-first'''
          enum:
          - assistant-speaks-first
          - assistant-waits-for-user
          default: assistant-speaks-first
          example: assistant-speaks-first
        type:
          type: string
          description: This is the type of recording consent plan. This type assumes consent is granted if the user stays on the line.
          enum:
          - stay-on-line
          example: stay-on-line
        waitSeconds:
          type: number
          description: Number of seconds to wait before transferring to the assistant if user stays on the call
          minimum: 1
          maximum: 6
          default: 3
          example: 3
      required:
      - message
      - type
    CreateNeuphonicCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - neuphonic
        apiKey:
          type: string
          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
    BackoffPlan:
      type: object
      properties:
        type:
          type: object
          description: 'This is the type of backoff plan to use. Defaults to fixed.


            @default fixed'
          enum:
          - fixed
          - exponential
          example: fixed
        maxRetries:
          type: number
          description: 'This is the maximum number of retries to attempt if the request fails. Defaults to 0 (no retries).


            @default 0'
          minimum: 0
          maximum: 10
          example: 0
        baseDelaySeconds:
          type: number
          description: This is the base delay in seconds. For linear backoff, this is the delay between each retry. For exponential backoff, this is the initial delay.
          minimum: 0
          maximum: 10
          example: 1
        excludedStatusCodes:
          description: 'This is the excluded status codes. If the response status code is in this list, the request will not be retried.

            By default, the request will be retried for any non-2xx status code.'
          example:
          - 400
          - 401
          - 403
          - 404
          type: array
          items:
            type: object
      required:
      - type
      - maxRetries
      - baseDelaySeconds
    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
    CreateEndCallToolDTO:
      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:
          - endCall
          description: The type of tool. "endCall" for End Call tool.
        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
    AnthropicThinkingConfig:
      type: object
      properties:
        type:
          type: string
          enum:
          - enabled
        budgetTokens:
          type: number
          description: 'The maximum number of tokens to allocate for thinking.

            Must be between 1024 and 100000 tokens.'
          minimum: 1024
          maximum: 100000
      required:
      - type
      - budgetTokens
    CreateMinimaxCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - minimax
        apiKey:
          type: string
          description: This is not returned in the API.
        groupId:
          type: string
          description: This is the Minimax Group ID.
        name:
          type: string
          description: This is the name of credential. This is just for your reference.
          minLength: 1
          maxLength: 40
      required:
      - provider
      - apiKey
      - groupId
    OpenAITranscriber:
      type: object
      properties:
        provider:
          type: string
          description: This is the transcription provider that will be used.
          enum:
          - openai
        model:
          type: string
          description: This is the model that will be used for the transcription.
          enum:
          - gpt-4o-transcribe
          - gpt-4o-mini-transcribe
        language:
          type: string
          description: This is the language that will be set for the transcription.
          enum:
          - af
          - ar
          - hy
          - az
          - be
          - bs
          - bg
          - ca
          - zh
          - hr
          - cs
          - da
          - nl
          - en
          - et
          - fi
          - fr
          - gl
          - de
          - el
          - he
          - hi
          - hu
          - is
          - id
          - it
          - ja
          - kn
          - kk
          - ko
          - lv
          - lt
          - mk
          - ms
          - mr
          - mi
          - ne
          - 'no'
          - fa
          - pl
          - pt
          - ro
          - ru
          - sr
          - sk
          - sl
          - es
          - sw
          - sv
          - tl
          - ta
          - th
          - tr
          - uk
          - ur
          - vi
          - cy
        fallbackPlan:
          description: This is the plan for transcriber provider fallbacks in the event that the primary transcriber provider fails.
          allOf:
          - $ref: '#/components/schemas/FallbackTranscriberPlan'
      required:
      - provider
      - model
    CreateGoogleCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          description: 'This is the key for Gemini in Google AI Studio. Get it from here: https://aistudio.google.com/app/apikey'
          enum:
          - google
        apiKey:
          type: string
          maxLength: 10000
          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
    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
          -

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