---
title: "Summarize an RL run's scored tasks and before-and-after comparison"
method: GET
path: "/v1/workloads/{id}/rl-summary"
tags: ["RL"]
---

# Summarize an RL run's scored tasks and before-and-after comparison

`GET /v1/workloads/{id}/rl-summary`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/v1/workloads/{id}/rl-summary`
- Auth: HTTP bearer

Counts every reported attempt once, as its latest report, per phase, and compares baseline with evaluation the way the console's run page does. comparable is false when the phases scored different numbers of attempts or different tasks. measurable is false when the phases are not comparable or every attempt passed or failed in both. When dropped_events is above zero or truncated is true, reason is incomplete_events and neither is true, because missing events could change either score. resolution_pp is the smallest change the task count can show. Figures come from events the workload reported and do not establish general model improvement.

## Path parameters

- `id` string, required

## Response `200`

Success

- RLSummary
  - `schema_version` integer, required
  - `workload_id` string, required
  - `phases` object, required
    - `baseline` RLPhaseSummary, required
      - `attempts` integer, required: Finished attempts, scored or not.
      - `scored` integer, required: Attempts that passed or failed.
      - `passed` integer, required
      - `failed` integer, required
      - `errors` integer, required: Attempts that ended in an execution error. Not scored.
      - `in_progress` integer, required: Attempts started without a finish yet.
      - `pass_rate` number, nullable, required: passed divided by scored, as a fraction. Null with nothing scored.
      - `mean_reward` number, nullable, required: Mean reported reward of scored attempts. Null when none reported a reward.
      - `reward_samples` integer, required
    - `training` RLPhaseSummary, required
      - `attempts` integer, required: Finished attempts, scored or not.
      - `scored` integer, required: Attempts that passed or failed.
      - `passed` integer, required
      - `failed` integer, required
      - `errors` integer, required: Attempts that ended in an execution error. Not scored.
      - `in_progress` integer, required: Attempts started without a finish yet.
      - `pass_rate` number, nullable, required: passed divided by scored, as a fraction. Null with nothing scored.
      - `mean_reward` number, nullable, required: Mean reported reward of scored attempts. Null when none reported a reward.
      - `reward_samples` integer, required
    - `evaluation` RLPhaseSummary, required
      - `attempts` integer, required: Finished attempts, scored or not.
      - `scored` integer, required: Attempts that passed or failed.
      - `passed` integer, required
      - `failed` integer, required
      - `errors` integer, required: Attempts that ended in an execution error. Not scored.
      - `in_progress` integer, required: Attempts started without a finish yet.
      - `pass_rate` number, nullable, required: passed divided by scored, as a fraction. Null with nothing scored.
      - `mean_reward` number, nullable, required: Mean reported reward of scored attempts. Null when none reported a reward.
      - `reward_samples` integer, required
  - `comparison` RLComparison, required
    - `baseline_pass_rate` number, required
    - `evaluation_pass_rate` number, required
    - `change_pp` number, required: Evaluation minus baseline pass rate, in percentage points.
    - `resolution_pp` number, required: Smallest change the task count can show, 100 divided by the larger scored count.
    - `comparable` boolean, required
    - `measurable` boolean, required
    - `reason` 'comparable' | 'smallest_step' | 'different_attempt_counts' | 'different_tasks' | 'none_passed' | 'all_passed' | 'incomplete_events', required
    - `message` string, required: Plain explanation of reason. Empty when reason is comparable.
  - `dropped_events` integer, required
  - `truncated` boolean, required

## Other responses

- `default`: Error. The JSON error and message fields are stable. Additional fields may provide details. Authentication, rate limits, and transient failures apply to all operations.

## Changes

- **2026-10-01** `ba84c74aeec8`: 1 info
  - endpoint added
- **2026-10-01** `544fef290a54`: 1 breaking
  - api path removed without deprecation
- **2026-09-28** `90817917723b`: 1 info
  - endpoint added
- **2026-09-28** `12e777b060de`: 1 breaking
  - api path removed without deprecation
- **2026-09-28** `045bd07f7817`: 1 warning
  - added the new `incomplete_events` enum value to the `comparison/anyOf[#/components/schemas/RLComparison]/reason` response property for the response status `200`

[Operation history](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/changes/v1/workloads/:id/rl-summary/get.md)

---

[API](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api.md) - [All operations](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/revisions/a59210899d95?raw)
