---
title: "List deployment test results"
method: GET
path: "/v1/projects/{project_id}/deployments/{deployment_id}/test-runs"
tags: ["deployments"]
---

# List deployment test results

`GET /v1/projects/{project_id}/deployments/{deployment_id}/test-runs`

## Request

- Base URL: `https://api.connic.co`
- URL: `https://api.connic.co/v1/projects/{project_id}/deployments/{deployment_id}/test-runs`
- Auth: HTTP bearer

Results of each test case from this deployment's test phase, ordered by agent and test name.

Required permission: `deployments.test`.

## Path parameters

- `project_id` string, uuid, required
- `deployment_id` string, uuid, required

## Query parameters

- `convert_costs_to` 'EUR' | 'USD', nullable: Convert token costs to EUR or USD at the daily ECB reference rate of each model call

## Response `200`

Successful Response

- DeploymentTestRunWithCost[]
  - `id` string, uuid, required
  - `deployment_id` string, uuid, required: ID of the deployment whose test phase ran this case.
  - `agent_name` string, required: Agent under test.
  - `test_name` string, required: Test case name from the agent's tests in code.
  - `runs` integer, required: Number of agent runs the case executes.
  - `successes` integer, required: Number of agent runs that passed so far.
  - `success_threshold` integer, required: Percentage of runs that must pass for the case to pass.
  - `passed` boolean, required: Whether the case passed; false until it finishes.
  - `failure_reason` string, nullable: Short explanation when the case failed or was cancelled.
  - `agent_run_ids` string[], required: IDs of the agent runs executed for this case, in order.
  - `agent_run_passed` boolean[], required: Pass result for each entry in `agent_run_ids`; null while that run's result is pending.
  - `started_at` string, date-time, required: When the case was planned at the start of the test phase.
  - `ended_at` string, date-time, nullable: When the case finished; null while pending or running.
  - `status` string, nullable: `pending`, `running`, `passed`, `failed`, or `cancelled` when the deployment was cancelled first.
  - `token_usage` TestRunTokenUsage: Token counts summed over a test case's agent runs, including judge evaluations of those runs.
    - `input_tokens` integer: Input tokens, including cached ones.
    - `output_tokens` integer: Output tokens.
    - `cached_input_tokens` integer: Input tokens served from the provider's cache; part of `input_tokens`.
    - `thinking_tokens` integer: Reasoning tokens.
    - `audio_input_tokens` integer: Audio part of `input_tokens`.
    - `audio_output_tokens` integer: Audio part of `output_tokens`.
    - `audio_cached_input_tokens` integer: Audio part of `cached_input_tokens`.
    - `audio_thinking_tokens` integer: Audio part of `thinking_tokens`.
    - `audio_usage_missing` boolean: True when at least one model call did not report its audio token split, so audio counts may be low.
    - `total_tokens` integer: Total tokens as reported per model call, usually input plus output plus thinking.
  - `token_cost` PublicTokenCostResponse: Token cost in each model's pricing currency, or in one currency when `convert_costs_to` is set.
    - `amounts` object, required: Total cost keyed by currency code (`EUR` or `USD`), as a decimal string with 12 decimal places. Only currencies with a nonzero amount are included.
    - `breakdown` object, required: Cost split by token type and by agent versus judge, keyed by currency code.
    - `coverage` PublicTokenCostCoverageResponse, required: How many model calls could be priced.
      - `complete` boolean, required: True when every model call could be priced.
      - `call_count` integer, required: Model calls covered by the report.
      - `priced_call_count` integer, required: Calls included in the cost amounts.
      - `unpriced_call_count` integer, required: Calls without a known price or without reported token usage. They are left out of the amounts.
      - `unpriced_models` string[], required: Models of the unpriced calls.
    - `converted_to` string, nullable: Currency the amounts were converted to at the daily ECB reference rate of each call. Present only when `convert_costs_to` is set.
    - `native_amounts` object, nullable: Totals in each model's pricing currency before conversion, as decimal strings keyed by currency code. Present only when `convert_costs_to` is set.

## Other responses

- `401`: Missing or invalid API key.
- `403`: The API key lacks the required permission or access to the environment.
- `404`: The resource does not exist in this project.
- `422`: Validation Error
- `429`: Rate limit exceeded.

---

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