---
title: "Get Eval Run Route"
method: GET
path: "/api/v1/eval/{run_id}"
tags: ["eval"]
---

# Get Eval Run Route

`GET /api/v1/eval/{run_id}`

## Request

- Base URL: `https://api.trajectory.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.trajectory.ai/api/v1/eval/{run_id}`
- Auth: none declared

## Path parameters

- `run_id` string, required

## Response `200`

Successful Response

- EvalRun
  - `task_selection` EvalTaskSelection
    - `split` 'test' | 'all', required
    - `available_task_count` integer, required: Tasks in the selected scope at launch.
    - `selected_task_count` integer, required: Distinct tasks selected for execution.
    - `max_samples` integer, nullable: Explicit options.val_num_tasks, or null to run every task in the selected scope.
  - `agent_id` string, nullable, required: Persisted owner; null for unassigned legacy runs.
  - `eval_run_id` string, required: Unique evaluation run identifier.
  - `bench_id` string, required: Benchmark evaluated by this run.
  - `rollout_xid` string, nullable: XID containing this run's evaluation trajectories.
  - `display_name` string, nullable, required: User-facing name for the evaluation run; null for legacy rows.
  - `base_model_slug` string, nullable: Base model evaluated by this run.
  - `options` RecordedRunOptions, required: Recorded settings retain values outside the public launch limits.
    - `load_weights_only` boolean, nullable
    - `density_aware_training` boolean, nullable
    - `algorithm` 'gspo' | 'grpo'
    - `train_on_truncation` boolean, nullable
    - `train_on_error` boolean, nullable
    - `train_on_timeout` boolean, nullable
    - `val_enabled` boolean, nullable
    - `val_interval_steps` integer, nullable
    - `val_num_tasks` integer, nullable
    - `val_trajectories_per_task` integer, nullable
    - `val_max_concurrent_trajectories` integer, nullable
    - `val_final_wait_timeout_seconds` number, nullable
    - `learning_rate` number, nullable
    - `lr_warmup_steps` integer, nullable
    - `lr_hold_steps` integer, nullable
    - `lr_min_ratio` number, nullable
    - `reasoning_effort` 'off' | 'on' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max', nullable
    - `temperature` number, nullable
    - `top_p` number, nullable
    - `top_k` integer, nullable
    - `val_reasoning_effort` 'off' | 'on' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max', nullable
    - `val_temperature` number, nullable
    - `val_top_p` number, nullable
    - `val_top_k` integer, nullable
    - `val_max_output_tokens_per_turn` integer, nullable
    - `val_max_output_tokens_per_trajectory` integer, nullable
    - `val_max_turns_per_trajectory` integer, nullable
    - `val_trajectory_timeout_seconds` integer, nullable
    - `num_steps` integer, nullable
    - `batch_size` integer, nullable
    - `group_size` integer, nullable
    - `min_trajectories_per_group` integer, nullable
    - `max_concurrent_trajectories` integer, nullable
    - `max_staleness` integer, nullable
    - `train_on_all_fail` boolean, nullable
    - `train_on_all_pass` boolean, nullable
    - `train_on_zero_advantage` boolean, nullable
    - `trajectory_timeout_seconds` integer, nullable
    - `batch_timeout_seconds` integer, nullable
    - `max_output_tokens_per_turn` integer, nullable
    - `max_output_tokens_per_trajectory` integer, nullable
    - `max_turns_per_trajectory` integer, nullable
  - `status` 'pending' | 'registered' | 'running' | 'completed' | 'failed' | 'cancelled', required
  - `deployment_id` string, nullable: Hosted deployment snapshotted at launch.
  - `parent_checkpoint_id` string, nullable: Checkpoint evaluated by this run, when applicable.
  - `training_run_id` string, nullable: Training run that produced the evaluated checkpoint.
  - `step` integer, nullable: Evaluated checkpoint training step.
  - `reward_mean` number, nullable: Completed mean of effective evaluation rewards; cut-off trajectories can contribute zero without a logged grader reward.
  - `total_rollouts` integer, nullable: Rollout total fixed at launch; null for legacy or diagnostic runs.
  - `created_at` string, date-time, required: Time when the evaluation run was created.
  - `updated_at` string, date-time, required: Time when the evaluation run was last updated.
  - `completed_at` string, date-time, nullable: Time when the evaluation reached a terminal status.
  - `failure` AsyncFailure
    - `type` string, required: Stable category used for exception mapping.
    - `code` string, required: Stable programmatic reason for the asynchronous failure.
    - `message` string, required: Human-readable explanation for this failure occurrence.
    - `context` object: Machine-readable values specific to this failure code.

## Changes

- **2026-11-02** `5b5a8ae4b4a4`: 4 info
  - added the optional property `options/val_max_output_tokens_per_trajectory` to the response with the `200` status
  - added the optional property `options/val_max_output_tokens_per_turn` to the response with the `200` status
  - added the optional property `options/val_max_turns_per_trajectory` to the response with the `200` status
  - added the optional property `options/val_trajectory_timeout_seconds` to the response with the `200` status
- **2026-11-02** `ac63eff4913f`: 21 warning, 24 info
  - removed the optional property `options/batch_collection_idle_timeout_seconds` from the response with the `200` status
  - removed the optional property `options/evaluation_collection_timeout_seconds` from the response with the `200` status
  - removed the optional property `options/evaluation_enabled` from the response with the `200` status
  - removed the optional property `options/evaluation_frequency` from the response with the `200` status
  - …41 more
- **2026-10-31** `7b218d495d5c`: 1 info
  - added the optional property `options/load_weights_only` to the response with the `200` status
- **2026-10-23** `0a17f8723be0`: 2 info
  - added the optional property `options/group_size` to the response with the `200` status
  - added the optional property `options/min_samples_per_group` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/trajectory/apis/trajectory-api/changes/api/v1/eval/:run_id/get.md)

---

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