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

# List Eval Runs

> List eval runs (deploy-gate and manual executions) for an environment.



## OpenAPI

````yaml GET /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs
openapi: 3.1.0
info:
  title: Timbal Platform API
  description: Public API documentation for the Timbal platform
  license:
    name: ''
  version: 2.0.0
servers:
  - url: https://api.timbal.ai
    description: Production
  - url: https://api.dev.timbal.ai
    description: Development
security: []
tags:
  - name: ace
    description: Action Control Engine (ACE) operations
  - name: analytics
    description: Org and project analytics
  - name: billing
    description: Subscriptions, usage, and payment-related operations
  - name: content
    description: Re-sign stored content URLs
  - name: files
    description: File operations
  - name: iam
    description: IAM — actions, roles, users, and authorization introspection
  - name: k2
    description: Knowledge Bases v2 operations
  - name: orgs
    description: Organization operations
  - name: projects
    description: Project operations
  - name: runs
    description: Execution operations
  - name: templates
    description: Public project template catalog
  - name: users
    description: Authenticated user profile
paths:
  /orgs/{org_id}/projects/{project_id}/envs/{env_id}/evals/runs:
    get:
      tags:
        - projects
      description: List eval runs (deploy-gate and manual executions) for an environment.
      operationId: handler
      parameters:
        - name: org_id
          in: path
          required: true
          schema:
            type: string
        - name: project_id
          in: path
          required: true
          schema:
            type: string
        - name: env_id
          in: path
          required: true
          schema:
            type: string
        - name: component_id
          in: query
          description: |-
            Filter to a single workforce component by its numeric app id
            (the value the SDK reads from `TIMBAL_APP_ID`, also returned as
            `component.id` on each run). Combines with `component_uid`: when
            both are set, rows must match both.
          required: false
          schema:
            type:
              - string
              - 'null'
        - name: component_uid
          in: query
          description: |-
            Filter to a single workforce component by its manifest uid (the
            `_id` field in `timbal.yaml`, also returned as `component.uid` on
            each run). Display name is deliberately not accepted as a filter
            — it's user-editable and not guaranteed unique within a project.
          required: false
          schema:
            type:
              - string
              - 'null'
        - name: trigger
          in: query
          description: |-
            Optional trigger filter. Accepts:
              * `latest` — runs from the env's most recent deploy batch.
              * a UUID — runs from that deploy batch.
          required: false
          schema:
            type:
              - string
              - 'null'
        - name: trigger_type
          in: query
          description: |-
            Filter by what started the run: `deploy` (gate), `manual`
            (`POST .../evals/runs`), or `push` (`deploy_config.evals_on_push`
            CI runs). Orthogonal to `trigger` (a deploy-batch selector).
          required: false
          schema:
            type:
              - string
              - 'null'
        - name: status
          in: query
          description: 'Filter by run status: `running`, `passed`, `failed`, or `error`.'
          required: false
          schema:
            type:
              - string
              - 'null'
        - name: include_logs
          in: query
          description: |-
            Include the captured CLI stdout/stderr in each run. Off by
            default — logs can be hundreds of KB per run.
          required: false
          schema:
            type: boolean
        - name: include_results
          in: query
          description: |-
            Include the structured per-eval results document in each run.
            Off by default for the same size reason as `include_logs`; the
            single-run GET always returns it.
          required: false
          schema:
            type: boolean
        - name: limit
          in: query
          description: Max rows returned, newest first. Defaults to 50, capped at 200.
          required: false
          schema:
            type:
              - integer
              - 'null'
            format: int64
      responses:
        '200':
          description: Eval runs listed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListEvalRunsResBody'
        '403':
          description: Insufficient permissions
      security:
        - bearer_auth: []
components:
  schemas:
    ListEvalRunsResBody:
      type: object
      required:
        - eval_runs
      properties:
        eval_runs:
          type: array
          items:
            $ref: '#/components/schemas/EvalRunDetail'
    EvalRunDetail:
      type: object
      description: One eval run against a workforce component (deploy gate or manual).
      required:
        - id
        - component
        - trigger_type
        - status
        - started_at
        - created_at
      properties:
        commit_hash:
          type:
            - string
            - 'null'
          description: Git commit SHA the evals executed against.
        component:
          $ref: '#/components/schemas/EvalRunComponent'
          description: The workforce component the evals ran against.
        created_at:
          type: string
          format: date-time
        deployment_id:
          type:
            - string
            - 'null'
          description: The `Deployments` row this run gated. NULL for manual runs.
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
        id:
          type: string
        logs:
          type:
            - string
            - 'null'
          description: Captured CLI output (only when `include_logs=true`).
        results:
          description: |-
            Structured per-eval results (timbal >= 2.2.9): a flat array of
            per-eval objects — params/output/usage/validator verdicts/captured
            output. On the list endpoint only when `include_results=true`;
            NULL for runs that predate structured capture or died before the
            report.
        started_at:
          type: string
          format: date-time
        status:
          type: string
          description: '`running` | `passed` | `failed` | `error`.'
        status_detail:
          type:
            - string
            - 'null'
          description: Short human summary, e.g. "1 failed, 2 passed in 12.40s".
        trigger_id:
          type:
            - string
            - 'null'
          description: Deploy batch id — matches `Deployments.trigger_id`.
        trigger_type:
          type: string
          description: 'What started the run: `deploy` | `manual` | `push`.'
    EvalRunComponent:
      type: object
      description: |-
        The workforce component an eval run targets. Same identifiers the
        deployments list exposes on its `target` object: `id` is
        `OrgsApps.id` (accepted as `component_id` filters/body params), `uid`
        is the manifest `_id` from `timbal.yaml` (accepted as
        `component_uid`). `name`/`type` are display metadata; `uid`/`name`/
        `type` go NULL if the app row was deleted after the run.
      required:
        - id
      properties:
        id:
          type: string
        name:
          type:
            - string
            - 'null'
        type:
          type:
            - string
            - 'null'
          description: '`agent` | `workflow`.'
        uid:
          type:
            - string
            - 'null'
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      description: >-
        Timbal API key. Obtain your API key from the Timbal platform settings.
        See [Authentication](/api-reference/authentication) for more
        information.

````