---
title: "List Test Runs"
method: GET
path: "/voice/testing/{agentId}/runs"
tags: ["Voice Agent Testing"]
---

# List Test Runs

`GET /voice/testing/{agentId}/runs`

## Request

- Base URL: `https://api.speakai.co/v1`
- URL: `https://api.speakai.co/v1/voice/testing/{agentId}/runs`
- Auth: API key in header `x-speakai-key` and API key in header `x-access-token`

### List Runs

Most recent first, capped at 100 regardless of the `limit` query parameter.

## Path parameters

- `agentId` string, required

## Query parameters

- `limit` integer

## Response `200`

OK

- object
  - `status` 'success'
  - `data` object
    - `runs` object[]
      - `_id` string: MongoDB document id, included because every document has one; use runId to identify it.
      - `runId` string
      - `suiteId` string
      - `agentId` string
      - `companyId` string
      - `status` 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled' | 'budget_exceeded'
      - `trigger` 'manual' | 'kb_update' | 'instruction_save' | 'scheduled'
      - `currentScenarioIndex` integer
      - `totalScenarios` integer
      - `scenarioResults` object[]: Populated as the execution engine appends results. Empty on a run that never left queued.
      - `overallScore` number
      - `passedCount` integer
      - `failedCount` integer
      - `totalCount` integer
      - `totalCost` number
      - `isRegression` boolean
      - `baselineScore` number, nullable
      - `scoreDelta` number, nullable
      - `recommendations` object[]
      - `startedAt` string, date-time
      - `completedAt` string, date-time, nullable
      - `failureReason` string, nullable

## Other responses

- `404`: Agent not found

---

[API](https://skmtc.dev/speakai/apis/speak-ai-api.md) · [All operations](https://skmtc.dev/speakai/apis/speak-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/speakai/apis/speak-ai-api/revisions/52d777e6d46e?raw)
