---
title: "List judge evaluation runs"
method: GET
path: "/v1/projects/{project_id}/judges/{judge_id}/runs"
tags: ["judges"]
---

# List judge evaluation runs

`GET /v1/projects/{project_id}/judges/{judge_id}/runs`

## Request

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

Paginated history of this judge's evaluations, newest first. Optional `status_filter` narrows to queued, running, completed, or failed states. `low_score_only` keeps rows whose score is below `low_score_threshold_pct` of the rubric maximum. Each row links back to the evaluated agent run and includes reasoning text, token usage, and judge token cost.

Required permission: `judges.view`.

## Path parameters

- `project_id` string, uuid, required
- `judge_id` string, uuid, required

## Query parameters

- `limit` integer: Page size, 1 to 100.
- `offset` integer: Number of evaluations to skip.
- `status_filter` JudgeRunStatus[], nullable: Only evaluations in these statuses.
- `low_score_only` boolean: Only scored evaluations whose overall score is below `low_score_threshold_pct` percent of the maximum.
- `low_score_threshold_pct` number: Percentage of the maximum score used by `low_score_only`, 0 to 100.
- `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

- JudgeRunsResponse: Page of judge evaluations.
  - `runs` JudgeRunResponse[], required: Evaluations on this page, newest first.
    - `id` string, uuid, required
    - `judge_id` string, uuid, required: ID of the judge that ran this evaluation.
    - `agent_run_id` string, uuid, required: ID of the agent run this judge evaluated.
    - `judge_name` string, nullable: Current name of the judge.
    - `agent_name` string, nullable: Agent of the evaluated run.
    - `status` 'queued' | 'running' | 'completed' | 'failed', required: State of one judge evaluation: `queued`, `running`, then `completed` or `failed`.
    - `scores` JudgeCriterionScore[], nullable: Per-criterion scores in rubric order; null until the evaluation completes.
      - `name` string, required
      - `score` number, required: Points awarded, from 0 to `max_score`.
      - `max_score` number, required: Maximum points for this criterion in the judge's rubric.
      - `reasoning` string, nullable: Judge's explanation for this score; null after the evaluated run is deleted.
    - `overall_score` number, nullable: Sum of the criterion scores; null until the evaluation completes.
    - `overall_max_score` number, nullable: Sum of the criteria's maximum points; null until the evaluation completes.
    - `reasoning` string, nullable: Judge's overall explanation; null until the evaluation completes and after the evaluated run is deleted.
    - `token_usage` PublicRunTokenUsageResponse, required
      - `input_tokens` integer, required: Prompt tokens sent to the model, including cached tokens.
      - `output_tokens` integer, required: Tokens the model generated, excluding thinking tokens.
      - `cached_input_tokens` integer, required: Part of `input_tokens` read from the provider's prompt cache.
      - `thinking_tokens` integer, required: Reasoning tokens the model generated.
      - `total_tokens` integer, required: Input, output and thinking tokens combined.
      - `audio_input_tokens` integer: Part of `input_tokens` that was audio.
      - `audio_output_tokens` integer: Part of `output_tokens` that was audio.
      - `audio_cached_input_tokens` integer: Part of `cached_input_tokens` that was audio.
      - `audio_thinking_tokens` integer: Part of `thinking_tokens` that was audio.
      - `audio_usage_missing` boolean: True when at least one model call did not report its audio breakdown, so audio counts may be too low.
      - `model_usages` PublicModelTokenUsageResponse[], required: Usage of each model request, in call order.
        - `input_tokens` integer, required: Prompt tokens sent to the model, including cached tokens.
        - `output_tokens` integer, required: Tokens the model generated, excluding thinking tokens.
        - `cached_input_tokens` integer, required: Part of `input_tokens` read from the provider's prompt cache.
        - `thinking_tokens` integer, required: Reasoning tokens the model generated.
        - `total_tokens` integer, required: Input, output and thinking tokens combined.
        - `audio_input_tokens` integer: Part of `input_tokens` that was audio.
        - `audio_output_tokens` integer: Part of `output_tokens` that was audio.
        - `audio_cached_input_tokens` integer: Part of `cached_input_tokens` that was audio.
        - `audio_thinking_tokens` integer: Part of `thinking_tokens` that was audio.
        - `audio_usage_missing` boolean: True when at least one model call did not report its audio breakdown, so audio counts may be too low.
        - `model` string, nullable, required: Model that served the request. Null when not recorded.
    - `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.
    - `error` string, nullable: Failure message when `status` is `failed`.
    - `created_at` string, date-time, required
    - `completed_at` string, date-time, nullable: When the evaluation completed or failed; null while it is queued or running.
  - `total` integer, required: Number of evaluations matching the filters.
  - `limit` integer, required: Page size used for this response.
  - `offset` integer, required: Number of evaluations skipped.

## 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)
