Vapi Eval API

Eval endpoints.

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 #

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-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 email required.

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

OpenAPI Specification

vapi-ai-eval-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vapi Analytics Eval 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: Eval
  description: Eval endpoints.
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
        description: The unique identifier for the resource.
        schema:
          format: uuid
          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
        description: The unique identifier for the resource.
        schema:
          format: uuid
          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
        description: The unique identifier for the resource.
        schema:
          format: uuid
          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
        description: The unique identifier for the resource.
        schema:
          format: uuid
          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
        description: The unique identifier for the resource.
        schema:
          format: uuid
          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:
    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
    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
    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
        langu

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