---
title: "List Evals"
method: GET
path: "/eval"
tags: ["Eval"]
---

# List Evals

`GET /eval`

## Query parameters

- `id` string
- `page` number
- `sortOrder` 'ASC' | 'DESC'
- `sortBy` 'createdAt' | 'duration' | 'cost'
- `limit` number
- `createdAtGt` string, date-time
- `createdAtLt` string, date-time
- `createdAtGe` string, date-time
- `createdAtLe` string, date-time
- `updatedAtGt` string, date-time
- `updatedAtLt` string, date-time
- `updatedAtGe` string, date-time
- `updatedAtLe` string, date-time

## Response `200`

- EvalPaginatedResponse
  - `results` Eval[], required
    - `messages` union[], required — 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
      - union
        - ChatEvalAssistantMessageMock
          - `role` 'assistant', required — This is the role of the message author. For a mock assistant message, the role is always 'assistant' @default 'assistant'
          - `content` string — This is the content of the assistant message. This is the message that the assistant would have sent.
          - `toolCalls` ChatEvalAssistantMessageMockToolCall[] — This is the tool calls that will be made by the assistant.
            - `name` string, required — This is the name of the tool that will be called. It should be one of the tools created in the organization.
            - `arguments` object — This is the arguments that will be passed to the tool call.
        - ChatEvalSystemMessageMock
          - `role` 'system', required — This is the role of the message author. For a mock system message, the role is always 'system' @default 'system'
          - `content` string, required — This is the content of the system message that would have been added in the middle of the conversation. Do not include the assistant prompt as a part of this message. It will automatically be fetched during runtime.
        - ChatEvalToolResponseMessageMock
          - `role` 'tool', required — This is the role of the message author. For a mock tool response message, the role is always 'tool' @default 'tool'
          - `content` string, required — This is the content of the tool response message. JSON Objects should be stringified.
        - ChatEvalToolResponseMessageEvaluation
          - `role` 'tool', required — This is the role of the message author. For a tool response message evaluation, the role is always 'tool' @default 'tool'
          - `judgePlan` AssistantMessageJudgePlanAI, required
            - `model` union, required — This is the model to use for the LLM-as-a-judge. If not provided, will default to the assistant's model. The instructions on how to evaluate the model output with this LLM-Judge must be passed as a system message in the messages array of the model. The Mock conversation can be passed to the LLM-Judge to evaluate using the prompt {{messages}} and will be evaluated as a LiquidJS Variable. To access and judge only the last message, use {{messages[-1]}} The LLM-Judge must respond with "pass" or "fail" and only those two responses are allowed.
              - …
            - `type` 'ai', required — This is the type of the judge plan. Use 'ai' to evaluate the assistant message content using LLM-as-a-judge. @default 'ai'
            - `autoIncludeMessageHistory` boolean — This is the flag to enable automatically adding the liquid variable {{messages}} to the model's messages array This is only applicable if the user has not provided any messages in the model's messages array @default true
        - ChatEvalUserMessageMock
          - `role` 'user', required — This is the role of the message author. For a mock user message, the role is always 'user' @default 'user'
          - `content` string, required — This is the content of the user message. This is the message that the user would have sent.
        - ChatEvalAssistantMessageEvaluation
          - `role` 'assistant', required — This is the role of the message author. For an assistant message evaluation, the role is always 'assistant' @default 'assistant'
          - `judgePlan` union, required — This is the judge plan that instructs how to evaluate the assistant message. The assistant message can be evaluated against fixed content (exact match or RegEx) or with an LLM-as-judge by defining the evaluation criteria in a prompt.
            - AssistantMessageJudgePlanExact
              - …
            - AssistantMessageJudgePlanRegex
              - …
            - AssistantMessageJudgePlanAI
              - …
          - `continuePlan` AssistantMessageEvaluationContinuePlan
            - `exitOnFailureEnabled` boolean — This is whether the evaluation should exit if the assistant message evaluates to false. By default, it is false and the evaluation will continue. @default false
            - `contentOverride` string — This is the content that will be used in the conversation for this assistant turn moving forward if provided. It will override the content received from the model.
            - `toolCallsOverride` ChatEvalAssistantMessageMockToolCall[] — This is the tool calls that will be used in the conversation for this assistant turn moving forward if provided. It will override the tool calls received from the model.
              - …
    - `id` string, required
    - `orgId` string, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `name` string — This is the name of the eval. It helps identify what the eval is checking for.
    - `description` string — 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.
    - `type` 'chat.mockConversation', required — This is the type of the eval. Currently it is fixed to `chat.mockConversation`.
  - `metadata` PaginationMeta, required
    - `itemsPerPage` number, required
    - `totalItems` number, required
    - `currentPage` number, required
    - `totalPages` number
    - `hasNextPage` boolean
    - `nextCursor` string — Opaque cursor for the next page under keyset pagination (PRO-3163). Pass it back as the `cursor` query param to fetch the next page without an OFFSET scan. Present only when a further page likely exists.
    - `sortOrder` 'ASC' | 'DESC'
    - `itemsBeyondRetention` boolean
    - `createdAtLe` string, date-time
    - `createdAtGe` string, date-time

## Changes

> 57 revisions in range; 2 not diffed, 9 could not be searched.

- **2026-01-06** `57c22d5b3510` — 3 warning
  - added the new `gemini-3-flash-preview` enum value to the `results/items/messages/items/oneOf[subschema #4: ChatEvalToolResponseMessageEvaluation]/judgePlan/allOf[#/components/schemas/AssistantMessageJudgePlanAI]/model/oneOf[subschema #3: EvalGoogleModel]/model` response property for the response status `200`
  - added the new `gemini-3-flash-preview` enum value to the `results/items/messages/items/oneOf[subschema #4: ChatEvalToolResponseMessageEvaluation]/judgePlan/oneOf[subschema #1: AssistantMessageJudgePlanAI]/model/oneOf[subschema #3: EvalGoogleModel]/model` response property for the response status `200`
  - added the new `gemini-3-flash-preview` enum value to the `results/items/messages/items/oneOf[subschema #6: ChatEvalAssistantMessageEvaluation]/judgePlan/oneOf[subschema #3: AssistantMessageJudgePlanAI]/model/oneOf[subschema #3: EvalGoogleModel]/model` response property for the response status `200`
- …earlier changes not shown

[Full history](https://skmtc.dev/vapiai/apis/vapi-api/changes/eval/get.md)

---

[API](https://skmtc.dev/vapiai/apis/vapi-api.md) · [All operations](https://skmtc.dev/vapiai/apis/vapi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vapiai/vapi-api/revisions/872ff45af53b/schema)
