---
title: "List test results"
method: GET
path: "/test_framework/v2/results/"
tags: ["test_framework"]
---

# List test results

`GET /test_framework/v2/results/`

## Request

- Base URL: `https://api.cekura.ai`
- URL: `https://api.cekura.ai/test_framework/v2/results/`
- Auth: one of:
  - API key in header `X-CEKURA-API-KEY`
  - HTTP bearer
  - HTTP bearer
  - API key in header `X-VOCERA-SHAREABLE-LINK-TOKEN`
  - HTTP bearer

List test results.

To filter by status, use `results_retrieve(id=result_id)` and inspect `status` directly (`running` while in progress; `completed`, `failed`, `timeout` or `cancelled` once finished) — there is no list-level status filter.

**Result status:** a result marked `failed` indicates infrastructure failures (e.g. connection errors, websocket handshake failures), not metric evaluation failures. `success_runs_count` counts completed runs that passed; `failed_runs_count` counts completed runs that failed evaluation, so runs that errored, timed out or were cancelled are in neither. See `results_retrieve().failed_reasons` for the breakdown.

**Scenarios filter note:** filtering by `scenarios` may return duplicate result rows when a result contains multiple runs of the same scenario — deduplicate by `result.id` if needed.

After triggering a run, poll `results_retrieve(id=result_id)` until `status` is `completed`, `failed`, `timeout` or `cancelled`. A result stays non-terminal until every run has ended, then becomes `completed` if any run completed — even if runs failed their checks or others errored. To gate, require `success_runs_count == total_runs_count` (`failed_runs_count` counts only completed runs that failed evaluation). For outbound runs, each run's `outbound_dial_window_closes_at` shows the deadline by which your agent must dial in.

## Query parameters

- `page` integer
- `page_size` integer
- `agent_id` integer
- `project_id` integer
- `search` string
- `scenarios` string
- `assistant_id` string

## Response `200`

- PaginatedResultList
  - `count` integer: Only present when the request passes `include_count=true`. Capped at 10000: when `count_capped` is true, the true total exceeds 10000.
  - `count_capped` boolean: Only present alongside `count`.
  - `next` string, uri, nullable
  - `previous` string, uri, nullable
  - `results` Result[], required
    - `id` integer: Unique identifier for the Result Example: `123`
    - `name` string, required: Name of the Result Example: `"Test Result 1"`
    - `agent` integer: ID of the AI agent that was tested Example: `123`
    - `agent_name` string: Name of the AI agent that was tested Example: `"Test Agent 1"`
    - `agent_inbound` boolean: Whether the agent is configured for inbound calls (true) or outbound calls (false) Example: `true` or `false`
    - `status` 'running' | 'completed' | 'failed' | 'pending' | 'in_progress' | 'evaluating' | 'in_queue' | 'timeout' | 'cancelled' | 'scaling_up': Current status of the result * `running` - Running * `completed` - Completed * `failed` - Failed * `pending` - Pending * `in_progress` - In Progress * `evaluating` - Evaluating * `in_queue` - In Queue * `timeout` - Timeout * `cancelled` - Cancelled * `scaling_up` - Scaling Up
    - `success_rate` number, double: Percentage of runs that passed, 0 to 100
    - `run_as_text` boolean: Whether this test was run in text mode instead of voice mode Example: `true` or `false`
    - `is_cronjob` string: Whether this result was created by a scheduled cronjob Example: `true` or `false`
    - `created_via` string, nullable: How this result was started: user (dashboard), api, mcp, cli, sdk, schedule or agent (the Cekura agent). Null when unknown.
    - `created_by` UserInline
      - `id` integer, nullable
      - `name` string, required
      - `email` string, email, nullable
    - `api_key` ResultApiKey
      - `id` integer, required
      - `name` string, required
      - `created_by` UserInline, required
        - `id` integer, nullable
        - `name` string, required
        - `email` string, email, nullable
    - `runs` object: Run summaries for this result. For full run data including transcripts and metric scores, fetch the result detail endpoint — there `runs` is a dict keyed by run ID.
    - `met_expected_outcome_count` string: Number of test runs that met the expected outcome criteria Example: `10`
    - `total_expected_outcome_count` string: Total number of test runs that were evaluated for expected outcomes Example: `10`
    - `total_runs_count` string: Total number of test runs associated with this result Example: `10`
    - `completed_runs_count` string: Number of test runs that have completed successfully Example: `10`
    - `success_runs_count` string: Number of test runs that were marked as successful Example: `10`
    - `failed_runs_count` string: Number of test runs that failed or encountered errors Example: `10`
    - `scenarios` object: List of scenario names used in the test runs for this result Example: ```json [ { "id": 123, "name": "Scenario 1" }, { "id": 456, "name": "Scenario 2" } ] ```
    - `run_type` string, nullable: Run Execution Type
    - `agent_version` AgentVersionSummary
      - `history_id` integer, required: History record ID of the agent version
      - `version_id` string, nullable, required: Version label, e.g. "v12"
      - `version_name` string, nullable, required: Optional name given to the version
      - `is_current` boolean, required: Whether this is the agent's current version
    - `created_at` string, date-time: Timestamp when this test result was created Example: `2021-01-01 00:00:00`
    - `updated_at` string, date-time: Timestamp when this test result was last updated

## Changes

- **2026-11-03** `a6fb6a739212`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/cekura/apis/cekura-api/changes/test_framework/v2/results/get.md)

---

[API](https://skmtc.dev/cekura/apis/cekura-api.md) - [All operations](https://skmtc.dev/cekura/apis/cekura-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cekura/apis/cekura-api/revisions/a6fb6a739212?raw)
