---
title: "Get Held Out Rewards By Step"
method: GET
path: "/api/v1/train/{run_id}/step/held-out-reward-by-step"
tags: ["training"]
---

# Get Held Out Rewards By Step

`GET /api/v1/train/{run_id}/step/held-out-reward-by-step`

## 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/train/{run_id}/step/held-out-reward-by-step`
- Auth: none declared

Held-out evaluation rewards and sample coverage for a training run, in ascending training-step order. Only rounds with a published reward metric appear; use the step trajectories route for attempts before reward publication. These rounds do not appear in standalone evaluation-run lists.

## Path parameters

- `run_id` string, required

## Query parameters

- `cursor` string, nullable
- `limit` integer

## Response `200`

Successful Response

- HeldOutRewardsByStepPage
  - `items` HeldOutReward[], required
    - `step` integer, required: Training step associated with this held-out reward.
    - `held_out_reward` number, required: Held-out reward recorded for the step.
    - `round_completed` boolean, nullable: False when any sample failed, was cancelled, or did not finish.
    - `expected_samples` integer, nullable: Configured eval tasks times samples per task.
    - `completed_samples` integer, nullable: Samples marked completed before trajectory loading.
    - `failed_samples` integer, nullable: Samples marked failed; excluded from the loaded-trajectory mean.
    - `cancelled_samples` integer, nullable: Samples marked cancelled; excluded from the loaded-trajectory mean.
    - `loaded_trajectories` integer, nullable: Actual trajectory denominator of held_out_reward; may be smaller than expected_samples.
  - `next_cursor` string, nullable
  - `has_more` boolean, required
  - `training_run_id` string, required: Training run whose held-out rewards are returned.

## Changes

- **2026-10-13** `cdeafc877c06`: 1 breaking, 5 info
  - removed the required property `held_out_rewards` from the response with the `200` status
  - added the new optional `query` request parameter `cursor`
  - added the new optional `query` request parameter `limit`
  - added the optional property `next_cursor` to the response with the `200` status
  - …2 more

[Operation history](https://skmtc.dev/trajectory/apis/trajectory-api/changes/api/v1/train/:run_id/step/held-out-reward-by-step/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)
