> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trajectory.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get training step summaries

> Retrieve trajectory, group, and termination summaries for each recorded training step.



## OpenAPI

````yaml /openapi.json get /api/v1/train/{run_id}/step-summaries
openapi: 3.1.0
info:
  title: Trajectory API
  version: 0.1.0
  x-trajectory-api-version: '2026-10-14'
  description: >-
    This contract is API version 2026-10-14. The optional Trajectory-API-Version
    header pins it, and tmp-contract is accepted as an alias. Requests without
    the header get this version. Version 2026-10-07 and the pre-launch legacy
    response formats are retired.
servers:
  - url: https://api.trajectory.ai
security: []
tags:
  - name: agents
    x-group: Agents
  - name: benchmarks
    x-group: Specs (benchmarks)
  - name: diagnostics
    x-group: Diagnostics
  - name: benchmark-ingestion
    x-group: Spec (benchmark) submissions
  - name: eval
    x-group: Evaluations
  - name: training
    x-group: Training
  - name: deployments
    x-group: Deployments
  - name: model-endpoints
    x-group: Model endpoints
  - name: inference
    x-group: Inference
  - name: trajectories
    x-group: Trajectories
  - name: artifacts
    x-group: Artifacts
  - name: telemetry
    x-group: Telemetry
  - name: supported-models
    x-group: Supported models
  - name: organizations
    x-group: Organizations
  - name: secrets
    x-group: Secrets
paths:
  /api/v1/train/{run_id}/step-summaries:
    get:
      tags:
        - training
      summary: Get training step summaries
      description: >-
        Retrieve trajectory, group, and termination summaries for each recorded
        training step.
      operationId: getTrainingStepSummaries
      parameters:
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            title: Run Id
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Cursor
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 200
            minimum: 1
            default: 25
            title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingStepSummariesPage'
        '400':
          description: >-
            The cursor is malformed, unsupported, or belongs to a different
            collection scope.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/RequestId'
            Trajectory-Should-Retry:
              $ref: '#/components/headers/TrajectoryShouldRetry'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCursorErrorResponse'
        default:
          $ref: '#/components/responses/ApiErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    TrainingStepSummariesPage:
      properties:
        items:
          items:
            $ref: '#/components/schemas/TrainingStepSummary'
          type: array
          title: Items
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
        has_more:
          type: boolean
          title: Has More
        training_run_id:
          type: string
          title: Training Run Id
          description: Training run whose per-step summaries are returned.
      type: object
      required:
        - items
        - has_more
        - training_run_id
      title: TrainingStepSummariesPage
    InvalidCursorErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/InvalidCursorErrorBody'
      type: object
      required:
        - error
      title: InvalidCursorErrorResponse
    TrainingStepSummary:
      properties:
        step:
          type: integer
          title: Step
          description: >-
            Training step these rollout, group, and termination aggregates
            cover.
        trajectory_count:
          type: integer
          title: Trajectory Count
          description: Rollouts generated at this training step.
        completed_count:
          type: integer
          title: Completed Count
          description: Finished rollouts at this training step.
        avg_turns:
          anyOf:
            - type: number
            - type: 'null'
          title: Avg Turns
          description: >-
            Mean agent turns (num_steps) per finished rollout; a turn is an
            agent step inside a trajectory, distinct from a training step.
        min_turns:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min Turns
          description: Fewest agent turns among finished rollouts at this training step.
        max_turns:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Turns
          description: Most agent turns among finished rollouts at this training step.
        avg_tokens:
          anyOf:
            - type: number
            - type: 'null'
          title: Avg Tokens
          description: Mean generated tokens per finished rollout.
        min_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Min Tokens
          description: >-
            Fewest generated tokens among finished rollouts at this training
            step.
        max_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Tokens
          description: Most generated tokens among finished rollouts at this training step.
        tool_failure_count:
          type: integer
          title: Tool Failure Count
          description: >-
            Finished rollouts with at least one tool failure (recoverable; not
            folded into error_count).
        tool_failure_exec_count:
          type: integer
          title: Tool Failure Exec Count
          description: >-
            Finished rollouts with at least one tool call that raised while
            executing.
        tool_failure_parse_count:
          type: integer
          title: Tool Failure Parse Count
          description: >-
            Finished rollouts with at least one tool call the runtime could not
            parse.
        tool_failure_unk_count:
          type: integer
          title: Tool Failure Unk Count
          description: >-
            Finished rollouts with at least one tool call that returned neither
            a result nor an error.
        correct_count:
          type: integer
          title: Correct Count
          description: Finished rollouts with reward = 1.
        partial_count:
          type: integer
          title: Partial Count
          description: Finished rollouts with 0 < reward < 1.
        incorrect_count:
          type: integer
          title: Incorrect Count
          description: Finished rollouts with reward = 0.
        error_count:
          type: integer
          title: Error Count
          description: >-
            Finished rollouts whose termination_reason is ERROR (reward not
            meaningful).
        incomplete_count:
          type: integer
          title: Incomplete Count
          description: >-
            Finished rollouts stopped by TIMEOUT or TRUNCATION (real reward,
            task unfinished).
        termination_reasons:
          additionalProperties:
            type: integer
          type: object
          title: Termination Reasons
          description: Finished rollouts per termination reason.
        group_count:
          type: integer
          title: Group Count
          description: Rollout groups (distinct uid) at the training step.
        completed_groups:
          type: integer
          title: Completed Groups
          description: Groups whose rollouts are all finished with a reward.
        no_signal_groups:
          type: integer
          title: No Signal Groups
          description: >-
            Completed groups whose rewards are all identical. Group-relative
            algorithms give them zero advantage; other algorithms can train on
            them.
        all_success_groups:
          type: integer
          title: All Success Groups
          description: Subset of no_signal_groups with every reward >= 1.
        all_failed_groups:
          type: integer
          title: All Failed Groups
          description: Subset of no_signal_groups with every reward <= 0.
        used_groups:
          type: integer
          title: Used Groups
          description: >-
            Completed groups with non-identical rewards that the trainer
            consumed. This count need not equal the number of groups in the
            optimizer batch.
        discarded_groups:
          type: integer
          title: Discarded Groups
          description: >-
            Completed groups with reward contrast the trainer did not and will
            not consume: stale, or unconsumed once the step settled.
        pending_groups:
          type: integer
          title: Pending Groups
          description: >-
            Completed groups with reward contrast the trainer has not consumed
            yet but still could.
        stale_groups:
          type: integer
          title: Stale Groups
          description: Subset of discarded_groups with at least one STALE rollout.
        settled:
          type: boolean
          title: Settled
          description: >-
            True once used/discarded can no longer change: the run is terminal,
            or the trainer's latest step > step + max_steps_off_policy with a
            nonnegative staleness bound.
      type: object
      required:
        - step
        - trajectory_count
        - completed_count
        - avg_turns
        - min_turns
        - max_turns
        - avg_tokens
        - min_tokens
        - max_tokens
        - tool_failure_count
        - tool_failure_exec_count
        - tool_failure_parse_count
        - tool_failure_unk_count
        - correct_count
        - partial_count
        - incorrect_count
        - error_count
        - incomplete_count
        - termination_reasons
        - group_count
        - completed_groups
        - no_signal_groups
        - all_success_groups
        - all_failed_groups
        - used_groups
        - discarded_groups
        - pending_groups
        - stale_groups
        - settled
      title: TrainingStepSummary
    InvalidCursorErrorBody:
      properties:
        type:
          type: string
          const: invalid_request_error
          title: Type
        code:
          type: string
          const: invalid_cursor
          title: Code
        message:
          type: string
          title: Message
        param:
          anyOf:
            - type: string
            - type: 'null'
          title: Param
        doc_url:
          type: string
          title: Doc Url
        context:
          $ref: '#/components/schemas/EmptyErrorContext'
      type: object
      required:
        - type
        - code
        - message
        - doc_url
        - context
      title: InvalidCursorErrorBody
    ApiErrorEnvelope:
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorBody'
      required:
        - error
      title: ApiErrorEnvelope
      type: object
    EmptyErrorContext:
      properties: {}
      additionalProperties: false
      type: object
      title: EmptyErrorContext
    ApiErrorBody:
      properties:
        type:
          $ref: '#/components/schemas/ErrorType'
        code:
          type: string
          title: Code
        message:
          type: string
          title: Message
        param:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Param
        doc_url:
          type: string
          title: Doc Url
        context:
          additionalProperties: true
          title: Context
          type: object
      required:
        - type
        - code
        - message
        - doc_url
        - context
      title: ApiErrorBody
      type: object
    ErrorType:
      enum:
        - invalid_request_error
        - authentication_error
        - permission_error
        - conflict_error
        - billing_error
        - rate_limit_error
        - dependency_error
        - api_error
      title: ErrorType
      type: string
  headers:
    RequestId:
      schema:
        type: string
    TrajectoryShouldRetry:
      schema:
        type: boolean
    RetryAfter:
      schema:
        type: string
  responses:
    ApiErrorResponse:
      description: >-
        Common API error. Possible codes: `authentication_required`,
        `permission_denied`, `validation_error`, `rate_limited`,
        `internal_error`, `service_unavailable`.
      headers:
        X-Request-ID:
          $ref: '#/components/headers/RequestId'
        Trajectory-Should-Retry:
          $ref: '#/components/headers/TrajectoryShouldRetry'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiErrorEnvelope'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Organization API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.