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

# Get Run

> Live status and metrics; once packaged, the verdict and where the outputs are (`output`).



## OpenAPI

````yaml /api-reference/openapi.json get /v1/rl_runs/{run_id}
openapi: 3.1.0
info:
  title: Kite Platform API
  description: >-
    Public API for Kite. Authenticate with `Authorization: Bearer kite_...`, and
    send `Kite-Version: 2026-09-27` to pin the dated contract your code was
    written against (without it you get 2026-09-27). Every response carries the
    version that served it.
  version: '2026-09-27'
servers:
  - url: https://api.kiteml.com
    description: Kite Platform API
security:
  - bearerAuth: []
tags:
  - name: Augmentations
    description: Generate new episodes from a LeRobot dataset.
  - name: Training runs
    description: Fine-tune a policy on a dataset, one run per policy.
  - name: Twins
    description: Rebuild a robot episode as an interactable MuJoCo scene (private beta).
  - name: RL runs
    description: >-
      Train a robot policy in simulation from a task spec; get the policy, its
      scene and a verdict.
  - name: Catalog
    description: Policies, hardware tiers, and dataset inspection.
  - name: Operations
    description: Poll any run by its id.
  - name: Webhooks
    description: Endpoints that receive events, and the event log.
  - name: API keys
    description: The key making the request.
  - name: Usage
    description: Token usage and credit balance.
paths:
  /v1/rl_runs/{run_id}:
    get:
      tags:
        - RL runs
      summary: Get Run
      description: >-
        Live status and metrics; once packaged, the verdict and where the
        outputs are (`output`).
      operationId: get_run_v1_rl_runs__run_id__get
      parameters:
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            title: Run Id
        - $ref: '#/components/parameters/KiteVersion'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RlRun'
              example:
                budget:
                  iterations: 500
                  max_tokens: 400
                  num_envs: 2048
                completed_at: '2026-09-28T19:59:53.818362Z'
                created_at: '2026-09-28T19:15:36.753577Z'
                description: >-
                  Walk forward at a steady pace with a level body and
                  alternating feet.
                engine: '2026-09-28'
                from:
                  mode: fork
                  policy: 4d574ce4c547
                group_id: rlg_01M3MQ39HV4YNTWNNY2GHM55VC
                hardware_tier: gcp_gpu_l4
                id: rlr_01M3MQ39HVAEBQ3F64K6JDF9XR
                metadata:
                  example: rl_runs/walk.json
                metrics:
                  elapsed_s: 411.4
                  env_steps: 24576000
                  iteration: 500
                  max_iterations: 500
                  mean_reward: 6.39074
                  steps_per_second: 59745
                  terms:
                    clearance: 0.46359
                    feet: 0.04187
                    head: 0
                    pose: 0.81887
                    regularizers: -0.545
                    slip: -0.00441
                    track: 3.61929
                    upright: 1.99652
                object: rl_run
                output:
                  archive_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/archive
                  bytes: 12294261
                  files: 43
                  files_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files
                  policy_url: >-
                    /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files/policy/policy.onnx
                  report_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/report
                  sha256: >-
                    d085065b6d2bf18d5b0bffd67c8b8ed0834136e446d608fce13834ea2976706f
                  video_url: >-
                    /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files/media/video.mp4
                outputs:
                  formats:
                    - onnx
                    - pt
                    - torchscript
                  videos:
                    - command:
                        vx: 0.3
                      seconds: 8
                progress: 1
                report:
                  best_checkpoint: 500
                  verdict: pass
                robot: open_duck_mini_v2
                seed: 0
                started_at: '2026-09-28T19:51:13.239324Z'
                status: succeeded
                status_message: 'done: verdict pass'
                task:
                  commands:
                    vx:
                      - 0.2
                      - 0.4
                    vy:
                      - -0.05
                      - 0.05
                    yaw:
                      - -0.2
                      - 0.2
                  objective: velocity
                  params: {}
                  scene:
                    items: []
                title: 'Open Duck: steady walk (fine-tuned)'
                tokens:
                  charged: 117
                  refunded: 50
                  reserved: 167
                visibility: private
        '400':
          description: >-
            Invalid request (`parameter_invalid`, `unsupported_version`, ...);
            `param` names the field
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Missing or invalid API key (`unauthenticated`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: >-
            The key lacks a scope this route needs (`missing_scope`), or the
            feature is not enabled for the account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
          description: >-
            No such resource (`resource_not_found`); another account's ids
            answer the same
        '429':
          description: >-
            Rate or concurrency limited (`rate_limit_exceeded`,
            `concurrency_limit_exceeded`, `capacity_exceeded`); honor
            `Retry-After`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
components:
  parameters:
    KiteVersion:
      name: Kite-Version
      in: header
      required: false
      description: >-
        The dated contract your code was written against. Without it you get
        2026-09-27; every response says which version served it.
      schema:
        type: string
        enum:
          - '2026-09-27'
        default: '2026-09-27'
  schemas:
    RlRun:
      properties:
        id:
          type: string
          title: Id
          description: '`rlr_` + a time-ordered ULID'
        object:
          type: string
          enum:
            - rl_run
          const: rl_run
          title: Object
          default: rl_run
        status:
          type: string
          enum:
            - queued
            - processing
            - canceling
            - succeeded
            - failed
            - canceled
          title: Status
        phase:
          anyOf:
            - type: string
            - type: 'null'
          title: Phase
          description: >-
            Within `queued`/`processing`/`canceling`: `queued`, `starting`,
            `training`, `packaging`
        status_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Status Message
        progress:
          type: number
          maximum: 1
          minimum: 0
          title: Progress
        robot:
          type: string
          title: Robot
        engine:
          type: string
          title: Engine
        group_id:
          type: string
          title: Group Id
        seed:
          type: integer
          title: Seed
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        task:
          type: object
          title: Task
          description: 'The resolved task: every default filled in'
        budget:
          type: object
          title: Budget
        from:
          anyOf:
            - type: object
            - type: 'null'
          title: From
        outputs:
          type: object
          title: Outputs
        hardware_tier:
          type: string
          title: Hardware Tier
        visibility:
          type: string
          title: Visibility
        metrics:
          $ref: '#/components/schemas/RlRunMetrics'
        report:
          anyOf:
            - $ref: '#/components/schemas/RlRunReportSummary'
            - type: 'null'
          description: Once packaged
        output:
          anyOf:
            - $ref: '#/components/schemas/RlRunOutput'
            - type: 'null'
          description: 'Once packaged: where the bundle is'
        error:
          anyOf:
            - $ref: '#/components/schemas/RlRunError'
            - type: 'null'
        tokens:
          $ref: '#/components/schemas/RlRunTokens'
        metadata:
          additionalProperties:
            type: string
          type: object
          title: Metadata
        webhook_metadata:
          anyOf:
            - type: object
            - type: 'null'
          title: Webhook Metadata
        created_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Created At
        started_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Started At
        completed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Completed At
      type: object
      required:
        - id
        - status
        - progress
        - robot
        - engine
        - group_id
        - seed
        - task
        - budget
        - outputs
        - hardware_tier
        - visibility
        - metrics
        - tokens
      title: RlRun
      description: One policy training in simulation.
      examples:
        - budget:
            iterations: 500
            max_tokens: 400
            num_envs: 2048
          completed_at: '2026-09-28T19:59:53.818362Z'
          created_at: '2026-09-28T19:15:36.753577Z'
          description: >-
            Walk forward at a steady pace with a level body and alternating
            feet.
          engine: '2026-09-28'
          from:
            mode: fork
            policy: 4d574ce4c547
          group_id: rlg_01M3MQ39HV4YNTWNNY2GHM55VC
          hardware_tier: gcp_gpu_l4
          id: rlr_01M3MQ39HVAEBQ3F64K6JDF9XR
          metadata:
            example: rl_runs/walk.json
          metrics:
            elapsed_s: 411.4
            env_steps: 24576000
            iteration: 500
            max_iterations: 500
            mean_reward: 6.39074
            steps_per_second: 59745
            terms:
              clearance: 0.46359
              feet: 0.04187
              head: 0
              pose: 0.81887
              regularizers: -0.545
              slip: -0.00441
              track: 3.61929
              upright: 1.99652
          object: rl_run
          output:
            archive_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/archive
            bytes: 12294261
            files: 43
            files_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files
            policy_url: >-
              /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files/policy/policy.onnx
            report_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/report
            sha256: d085065b6d2bf18d5b0bffd67c8b8ed0834136e446d608fce13834ea2976706f
            video_url: /v1/rl_runs/rlr_01M3MQ39HVAEBQ3F64K6JDF9XR/files/media/video.mp4
          outputs:
            formats:
              - onnx
              - pt
              - torchscript
            videos:
              - command:
                  vx: 0.3
                seconds: 8
          progress: 1
          report:
            best_checkpoint: 500
            verdict: pass
          robot: open_duck_mini_v2
          seed: 0
          started_at: '2026-09-28T19:51:13.239324Z'
          status: succeeded
          status_message: 'done: verdict pass'
          task:
            commands:
              vx:
                - 0.2
                - 0.4
              vy:
                - -0.05
                - 0.05
              yaw:
                - -0.2
                - 0.2
            objective: velocity
            params: {}
            scene:
              items: []
          title: 'Open Duck: steady walk (fine-tuned)'
          tokens:
            charged: 117
            refunded: 50
            reserved: 167
          visibility: private
    ApiErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/ApiErrorBody'
      type: object
      required:
        - error
      title: ApiErrorResponse
      description: Every /v1 error has this shape.
    RlRunMetrics:
      properties:
        iteration:
          anyOf:
            - type: integer
            - type: 'null'
          title: Iteration
          description: Iterations trained so far (this run's own)
        max_iterations:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Iterations
        env_steps:
          anyOf:
            - type: integer
            - type: 'null'
          title: Env Steps
        mean_reward:
          anyOf:
            - type: number
            - type: 'null'
          title: Mean Reward
          description: Mean reward per step over the last iterations
        steps_per_second:
          anyOf:
            - type: number
            - type: 'null'
          title: Steps Per Second
        elapsed_s:
          anyOf:
            - type: number
            - type: 'null'
          title: Elapsed S
          description: Training time so far; what is billed
        terms:
          additionalProperties:
            type: number
          type: object
          title: Terms
          description: Mean reward per step, by term
      type: object
      title: RlRunMetrics
    RlRunReportSummary:
      properties:
        verdict:
          type: string
          title: Verdict
          description: >-
            `pass`, `fail` or `needs_review`; the full report is GET
            /v1/rl_runs/{id}/report
        best_checkpoint:
          type: integer
          title: Best Checkpoint
      type: object
      required:
        - verdict
        - best_checkpoint
      title: RlRunReportSummary
    RlRunOutput:
      properties:
        policy_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Policy Url
          description: 'The trained policy, `policy/policy.onnx`. An API path: send your key'
        video_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Video Url
          description: The policy on video, `media/video.mp4`; null if no clip was rendered
        files:
          type: integer
          title: Files
        bytes:
          type: integer
          title: Bytes
          description: Size of the archive
        sha256:
          anyOf:
            - type: string
            - type: 'null'
          title: Sha256
          description: 'Of the archive: check the download against it'
        archive_url:
          type: string
          title: Archive Url
        files_url:
          type: string
          title: Files Url
        report_url:
          type: string
          title: Report Url
        huggingface:
          anyOf:
            - type: object
            - type: 'null'
          title: Huggingface
      type: object
      required:
        - files
        - bytes
        - archive_url
        - files_url
        - report_url
      title: RlRunOutput
    RlRunError:
      properties:
        code:
          type: string
          title: Code
          description: >-
            `submission_failed`, `warm_start_failed`, `training_diverged`,
            `gpu_capacity_unavailable`, `training_failed`, `packaging_failed`
        message:
          type: string
          title: Message
      type: object
      required:
        - code
        - message
      title: RlRunError
    RlRunTokens:
      properties:
        reserved:
          type: integer
          title: Reserved
          description: 'Taken at create: the estimate (or `budget.max_tokens`)'
        charged:
          type: integer
          title: Charged
          description: >-
            Training minutes used, at the tier's rate, when the run produced a
            policy; 0 for a failed run or a cancel with nothing to package
        refunded:
          type: integer
          title: Refunded
      type: object
      required:
        - reserved
        - charged
        - refunded
      title: RlRunTokens
    ApiErrorBody:
      properties:
        type:
          type: string
          title: Type
          description: >-
            invalid_request_error, authentication_error, permission_error,
            not_found_error, conflict_error, rate_limit_error, or api_error
        code:
          type: string
          title: Code
          description: 'Machine-readable: branch on this, not on the message'
        message:
          type: string
          title: Message
        param:
          anyOf:
            - type: string
            - type: 'null'
          title: Param
          description: The request field the error is about, when there is one
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Request Id
          description: Also in the X-Request-Id header; quote it to support
        details:
          anyOf:
            - type: object
            - type: 'null'
          title: Details
          description: >-
            Extra data for some codes (e.g. the cameras a dataset does have, for
            camera_not_found)
      type: object
      required:
        - type
        - code
        - message
      title: ApiErrorBody
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A Kite API key (`kite_...`), from **Platform API → Keys** in the
        dashboard.

````