Vapi Eval API

The Eval API from Vapi — 4 operation(s) for eval.

Operations 9

POST /eval Create Eval #
GET /eval List Evals #
PATCH /eval/{id} Update Eval #
DELETE /eval/{id} Delete Eval #
GET /eval/{id} Get Eval #
DELETE /eval/run/{id} Delete Eval Run #
GET /eval/run/{id} Get Eval Run #
POST /eval/run Create Eval Run #
GET /eval/run List Eval Runs #

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-eval-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

vapi-eval-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vapi Analytics Eval API
  description: Voice AI for developers.
  version: '1.0'
  contact: {}
servers:
- url: https://api.vapi.ai
tags:
- name: Eval
paths:
  /eval:
    post:
      operationId: EvalController_create
      summary: Create Eval
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEvalDTO'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Eval'
      tags:
      - Eval
      security:
      - bearer: []
    get:
      operationId: EvalController_getPaginated
      summary: List Evals
      parameters:
      - name: id
        required: false
        in: query
        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/EvalPaginatedResponse'
      tags:
      - Eval
      security:
      - bearer: []
  /eval/{id}:
    patch:
      operationId: EvalController_update
      summary: Update Eval
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEvalDTO'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Eval'
      tags:
      - Eval
      security:
      - bearer: []
    delete:
      operationId: EvalController_remove
      summary: Delete Eval
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Eval'
      tags:
      - Eval
      security:
      - bearer: []
    get:
      operationId: EvalController_get
      summary: Get Eval
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Eval'
      tags:
      - Eval
      security:
      - bearer: []
  /eval/run/{id}:
    delete:
      operationId: EvalController_removeRun
      summary: Delete Eval Run
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvalRun'
      tags:
      - Eval
      security:
      - bearer: []
    get:
      operationId: EvalController_getRun
      summary: Get Eval Run
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvalRun'
      tags:
      - Eval
      security:
      - bearer: []
  /eval/run:
    post:
      operationId: EvalController_run
      summary: Create Eval Run
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEvalRunDTO'
      responses:
        '200':
          description: ''
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
      tags:
      - Eval
      security:
      - bearer: []
    get:
      operationId: EvalController_getRunsPaginated
      summary: List Eval Runs
      parameters:
      - name: id
        required: false
        in: query
        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/EvalRunPaginatedResponse'
      tags:
      - Eval
      security:
      - bearer: []
components:
  schemas:
    FallbackCartesiaVoice:
      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:
          - cartesia
        voiceId:
          type: string
          description: The ID of the particular voice you want to use.
        model:
          type: string
          description: This is the model that will be used. This is optional and will default to the correct model for the voiceId.
          enum:
          - sonic-3
          - sonic-3-2026-01-12
          - sonic-3-2025-10-27
          - sonic-2
          - sonic-2-2025-06-11
          - sonic-english
          - sonic-multilingual
          - sonic-preview
          - sonic
          example: sonic-english
        language:
          type: string
          description: This is the language that will be used. This is optional and will default to the correct language for the voiceId.
          enum:
          - ar
          - bg
          - bn
          - cs
          - da
          - de
          - el
          - en
          - es
          - fi
          - fr
          - gu
          - he
          - hi
          - hr
          - hu
          - id
          - it
          - ja
          - ka
          - kn
          - ko
          - ml
          - mr
          - ms
          - nl
          - 'no'
          - pa
          - pl
          - pt
          - ro
          - ru
          - sk
          - sv
          - ta
          - te
          - th
          - tl
          - tr
          - uk
          - vi
          - zh
          example: en
        experimentalControls:
          description: Experimental controls for Cartesia voice generation
          allOf:
          - $ref: '#/components/schemas/CartesiaExperimentalControls'
        generationConfig:
          description: Generation config for fine-grained control of sonic-3 voice output (speed, volume, and experimental controls). Only available for sonic-3 model.
          allOf:
          - $ref: '#/components/schemas/CartesiaGenerationConfig'
        pronunciationDictId:
          type: string
          description: Pronunciation dictionary ID for sonic-3. Allows custom pronunciations for specific words. Only available for sonic-3 model.
          example: dict_abc123
        chunkPlan:
          description: This is the plan for chunking the model output before it is sent to the voice provider.
          allOf:
          - $ref: '#/components/schemas/ChunkPlan'
      required:
      - provider
      - voiceId
    CreateEmailCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - email
        email:
          type: string
          description: The recipient email address for alerts
        name:
          type: string
          description: This is the name of credential. This is just for your reference.
          minLength: 1
          maxLength: 40
      required:
      - provider
      - email
    ArtifactPlan:
      type: object
      properties:
        recordingEnabled:
          type: boolean
          description: 'This determines whether assistant''s calls are recorded. Defaults to true.


            Usage:

            - If you don''t want to record the calls, set this to false.

            - If you want to record the calls when `assistant.hipaaEnabled` (deprecated) or `assistant.compliancePlan.hipaaEnabled` explicity set this to true and make sure to provide S3 or GCP credentials on the Provider Credentials page in the Dashboard.


            You can find the recording at `call.artifact.recordingUrl` and `call.artifact.stereoRecordingUrl` after the call is ended.


            @default true'
          example: true
        recordingFormat:
          type: string
          description: 'This determines the format of the recording. Defaults to `wav;l16`.


            @default ''wav;l16'''
          enum:
          - wav;l16
          - mp3
        recordingUseCustomStorageEnabled:
          type: boolean
          description: 'This determines whether to use custom storage (S3 or GCP) for call recordings when storage credentials are configured.


            When set to false, recordings will be stored on Vapi''s storage instead of your custom storage, even if you have custom storage credentials configured.


            Usage:

            - Set to false if you have custom storage configured but want to store recordings on Vapi''s storage for this assistant.

            - Set to true (or leave unset) to use your custom storage for recordings when available.


            @default true'
          example: true
        videoRecordingEnabled:
          type: boolean
          description: 'This determines whether the video is recorded during the call. Defaults to false. Only relevant for `webCall` type.


            You can find the video recording at `call.artifact.videoRecordingUrl` after the call is ended.


            @default false'
          example: false
        fullMessageHistoryEnabled:
          type: boolean
          description: This determines whether the artifact contains the full message history, even after handoff context engineering. Defaults to false.
          example: false
        pcapEnabled:
          type: boolean
          description: 'This determines whether the SIP packet capture is enabled. Defaults to true. Only relevant for `phone` type calls where phone number''s provider is `vapi` or `byo-phone-number`.


            You can find the packet capture at `call.artifact.pcapUrl` after the call is ended.


            @default true'
          example: true
        pcapS3PathPrefix:
          type: string
          description: 'This is the path where the SIP packet capture will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.


            If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.


            Usage:

            - If you want to upload the packet capture to a specific path, set this to the path. Example: `/my-assistant-captures`.

            - If you want to upload the packet capture to the root of the bucket, set this to `/`.


            @default ''/'''
          example: /pcaps
        pcapUseCustomStorageEnabled:
          type: boolean
          description: 'This determines whether to use custom storage (S3 or GCP) for SIP packet captures when storage credentials are configured.


            When set to false, packet captures will be stored on Vapi''s storage instead of your custom storage, even if you have custom storage credentials configured.


            Usage:

            - Set to false if you have custom storage configured but want to store packet captures on Vapi''s storage for this assistant.

            - Set to true (or leave unset) to use your custom storage for packet captures when available.


            @default true'
          example: true
        loggingEnabled:
          type: boolean
          description: 'This determines whether the call logs are enabled. Defaults to true.


            @default true'
          example: true
        loggingUseCustomStorageEnabled:
          type: boolean
          description: 'This determines whether to use custom storage (S3 or GCP) for call logs when storage credentials are configured.


            When set to false, logs will be stored on Vapi''s storage instead of your custom storage, even if you have custom storage credentials configured.


            Usage:

            - Set to false if you have custom storage configured but want to store logs on Vapi''s storage for this assistant.

            - Set to true (or leave unset) to use your custom storage for logs when available.


            @default true'
          example: true
        transcriptPlan:
          description: This is the plan for `call.artifact.transcript`. To disable, set `transcriptPlan.enabled` to false.
          allOf:
          - $ref: '#/components/schemas/TranscriptPlan'
        recordingPath:
          type: string
          description: 'This is the path where the recording will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.


            If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.


            Usage:

            - If you want to upload the recording to a specific path, set this to the path. Example: `/my-assistant-recordings`.

            - If you want to upload the recording to the root of the bucket, set this to `/`.


            @default ''/'''
        structuredOutputIds:
          description: 'This is an array of structured output IDs to be calculated during the call.

            The outputs will be extracted and stored in `call.artifact.structuredOutputs` after the call is ended.'
          type: array
          items:
            type: string
        structuredOutputs:
          description: 'This is an array of transient structured outputs to be calculated during the call.

            The outputs will be extracted and stored in `call.artifact.structuredOutputs` after the call is ended.

            Use this to provide inline structured output configurations instead of referencing existing ones via structuredOutputIds.'
          type: array
          items:
            $ref: '#/components/schemas/CreateStructuredOutputDTO'
        scorecardIds:
          description: 'This is an array of scorecard IDs that will be evaluated based on the structured outputs extracted during the call.

            The scorecards will be evaluated and the results will be stored in `call.artifact.scorecards` after the call has ended.'
          type: array
          items:
            type: string
        scorecards:
          description: 'This is the array of scorecards that will be evaluated based on the structured outputs extracted during the call.

            The scorecards will be evaluated and the results will be stored in `call.artifact.scorecards` after the call has ended.'
          type: array
          items:
            $ref: '#/components/schemas/CreateScorecardDTO'
        loggingPath:
          type: string
          description: 'This is the path where the call logs will be uploaded. This is only used if you have provided S3 or GCP credentials on the Provider Credentials page in the Dashboard.


            If credential.s3PathPrefix or credential.bucketPlan.path is set, this will append to it.


            Usage:

            - If you want to upload the call logs to a specific path, set this to the path. Example: `/my-assistant-logs`.

            - If you want to upload the call logs to the root of the bucket, set this to `/`.


            @default ''/'''
    SessionCreatedHook:
      type: object
      properties:
        'on':
          type: string
          description: This is the event that triggers this hook
          enum:
          - session.created
          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
        name:
          type: string
          description: 'Optional name for this hook instance.

            If no name is provided, the hook will be auto generated as UUID.


            @default UUID'
          maxLength: 1000
      required:
      - 'on'
      - do
    FallbackWellSaidVoice:
      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:
          - wellsaid
        voiceId:
          type: string
          description: The WellSaid speaker ID to synthesize.
        model:
          type: string
          description: This is the model that will be used.
          enum:
          - caruso
          - legacy
        enableSsml:
          type: boolean
          description: Enables limited SSML translation for input text.
        libraryIds:
          description: Array of library IDs to use for voice synthesis.
          type: array
          items:
            type: string
        chunkPlan:
          description: This is the plan for chunking the model output before it is sent to the voice provider.
          allOf:
          - $ref: '#/components/schemas/ChunkPlan'
      required:
      - provider
      - voiceId
    ToolRejectionPlan:
      type: object
      properties:
        conditions:
          type: array
          description: 'This is the list of conditions that must be evaluated.


            Usage:

            - If all conditions match (AND logic), the tool call is rejected.

            - For OR logic at the top level, use a single ''group'' condition with operator: ''OR''.


            @default [] - Empty array means tool always executes'
          examples:
          - '[{ type: "regex", regex: "(?i)\\b(cancel|stop)\\b", target: { role: "user" } }]'
          - '[{ type: "group", operator: "OR", conditions: [...] }]'
          items:
            oneOf:
            - $ref: '#/components/schemas/RegexCondition'
              title: RegexCondition
            - $ref: '#/components/schemas/LiquidCondition'
              title: LiquidCondition
            - $ref: '#/components/schemas/GroupCondition'
              title: GroupCondition
              description: This is the GroupCondition object but Swagger does not display nested schemas correctly.
    SayHookAction:
      type: object
      properties:
        type:
          type: string
          description: This is the type of action - must be "say"
          enum:
          - say
        prompt:
          description: 'This is the prompt for the assistant to generate a response based on existing conversation.

            Can be a string or an array of chat messages.'
          oneOf:
          - type: string
            title: String
          - type: array
            items:
              oneOf:
              - $ref: '#/components/schemas/SystemMessage'
                title: SystemMessage
              - $ref: '#/components/schemas/UserMessage'
                title: UserMessage
              - $ref: '#/components/schemas/AssistantMessage'
                title: AssistantMessage
              - $ref: '#/components/schemas/ToolMessage'
                title: ToolMessage
              - $ref: '#/components/schemas/DeveloperMessage'
                title: DeveloperMessage
            title: MessageArray
          examples:
          - Ask the user if they're still in the call
          - - role: system
              content: You are a helpful assistant, and would like to know if the user is still in the call based on the conversation history in {{transcript}}
        exact:
          type: object
          description: This is the message to say
      required:
      - type
    CreateHumeCredentialDTO:
      type: object
      properties:
        provider:
          type: string
          enum:
          - hume
        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
    CreateEvalDTO:
      type: object
      properties:
        messages:
          type: array
          description: 'This is the mock conversation that will be used to evaluate the flow of the conversation.


            Mock Messages are used to simulate the flow of the conversation


            Evaluation Messages are used as checkpoints in the flow where the model''s response to previous conversation needs to be evaluated to check the content and tool calls'
          example: '[{ role: "user", content: "Hello, how are you?" }, { role: "assistant", judgePlan: { type: "exact", content: "I am good, thank you!" } }]'
          items:
            oneOf:
            - $ref: '#/components/schemas/ChatEvalAssistantMessageMock'
              title: ChatEvalAssistantMessageMock
            - $ref: '#/components/schemas/ChatEvalSystemMessageMock'
              title: ChatEvalSystemMessageMock
            - $ref: '#/components/schemas/ChatEvalToolResponseMessageMock'
              title: ChatEvalToolResponseMessageMock
            - $ref: '#/components/schemas/ChatEvalToolResponseMessageEvaluation'
              title: ChatEvalToolResponseMessageEvaluation
            - $ref: '#/components/schemas/ChatEvalUserMessageMock'
              title: ChatEvalUserMessageMock
            - $ref: '#/components/schemas/ChatEvalAssistantMessageEvaluation'
              title: ChatEvalAssistantMessageEvaluation
        name:
          type: string
          description: 'This is the name of the eval.

            It helps identify what the eval is checking for.'
          example: Verified User Flow Eval
          minLength: 1
          maxLength: 80
        description:
          type: string
          description: 'This is the description of the eval.

            This helps describe the eval and its purpose in detail. It will not be used to evaluate the flow of the conversation.'
          example: This eval checks if the user flow is verified.
          maxLength: 500
        type:
          type: string
          description: 'This is the type of the eval.

            Currently it is fixed to `chat.mockConversation`.'
          example: chat.mockConversation
          enum:
          - chat.mockConversation
      required:
      - messages
      - type
    TransferFallbackPlan:
      type: object
      properties:
        message:
          description: This is the message the assistant will deliver to the customer if the transfer fails.
          oneOf:
          - type: string
          - $ref: '#/components/schemas/CustomMessage'
        endCallEnabled:
          type: boolean
          description: 'This controls what happens after delivering the failure message to the customer.

            - true: End the call after delivering the failure message (default)

            - false: Keep the assistant on the call to continue handling the customer''s request


            @default true'
          default: true
      required:
      - message
    FallbackSesameVoice:
      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:
          - sesame
        voiceId:
          type: string
          description: This is the provider-specific ID that will be used.
          title: Sesame Voice ID. This should be either a name (a built-in voice) or a UUID (a custom voice).
        model:
          type: string
          description: This is the model that will be used.
          enum:
          - csm-1b
        chunkPlan:
          description: This is the plan for chunking the model output before it is sent to the voice provider.
          allOf:
          - $ref: '#/components/schemas/ChunkPlan'
      required:
      - provider
      - voiceId
      - model
    WorkflowGoogleModel:
      type: object
      properties:
        provider:
          type: string
          description: This is the provider of the model (`google`).
          enum:
          - google
        model:
          type: string
          description: This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b
          maxLength: 100
          enum:
          - gemini-3-flash-preview
          - gemini-2.5-pro
          - gemini-2.5-flash
          - gemini-2.5-flash-lite
          - gemini-2.0-flash-thinking-exp
          - gemini-2.0-pro-exp-02-05
          - gemini-2.0-flash
          - gemini-2.0-flash-lite
          - gemini-2.0-flash-exp
          - gemini-2.0-flash-realtime-exp
          - gemini-1.5-flash
          - gemini-1.5-flash-002
          - gemini-1.5-pro
          - gemini-1.5-pro-002
          - gemini-1.0-pro
        temperature:
          type: number
          description: This is the temperature of the model.
          minimum: 0
          maximum: 2
        maxTokens:
          type: number
          description: This is the max tokens of the model.
          minimum: 50
          maximum: 10000
      required:
      - provider
      - model
    CreateGoHighLevelCalendarAvailabilityToolDTO:
      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:
          - gohighlevel.calendar.availability.check
          description: The type of tool. "gohighlevel.calendar.availability.check" for GoHighLevel Calendar Availability Check 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    

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