---
title: "List visible Experiment metadata"
method: GET
path: "/experiments"
tags: ["experiments"]
---

# List visible Experiment metadata

`GET /experiments`

List creator-owned or manager-visible Experiment metadata.

Args:
    query: Project, mode, stage, creator, and pagination filters.
    auth: Authenticated caller.

Returns:
    Descending keyset page.

## Query parameters

- `project_id` string, uuid, nullable
- `mode` 'mle_agent' | 'auto_agent' — Which agent drives an Experiment's conversation (EDD section 0.2).
- `stage` 'scoping' | 'preparing_data' | 'training' | 'evaluating' | 'complete' | 'blocked' | 'cancelled' — Agent-owned workflow stage of an Experiment (EDD section 0.2).
- `creator_id` string, uuid, nullable
- `limit` integer
- `cursor` string, nullable

## Response `200`

Successful Response

- ExperimentListResponse — One keyset-paginated page of visible Experiment metadata.
  - `items` ExperimentResponse[]
    - `id` string, required
    - `project_id` string, required
    - `project_version_id` string, nullable, required
    - `team_id` string, required
    - `session_id` string, nullable — Creator-only transcript session identifier.
    - `created_by` string, required
    - `title` string, nullable, required
    - `mode` 'mle_agent' | 'auto_agent', required — Which agent drives an Experiment's conversation (EDD section 0.2).
    - `stage` 'scoping' | 'preparing_data' | 'training' | 'evaluating' | 'complete' | 'blocked' | 'cancelled', required — Agent-owned workflow stage of an Experiment (EDD section 0.2).
    - `mode_locked_at` string, date-time, nullable, required
    - `last_activity_at` string, date-time, required
    - `completed_at` string, date-time, nullable, required
    - `completion_outcome` 'incumbent_retained' | 'candidate_promoted' — Why a COMPLETE Experiment ended (EDD 8.1). A closed set rather than free text because it is the thing that makes "the incumbent is already good enough" a *queryable* success instead of one inferred from the absence of a promoted model -- and an unvalidated string column cannot be counted on for that. Sits beside ``ExperimentStage`` and ``ExperimentMode``, which back the two other lifecycle discriminators on the same table.
    - `cancelled_at` string, date-time, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `summary` ExperimentAssetSummary, required — Stable landing counts and display fields for one Experiment.
      - `active_job_count` integer, required
      - `total_job_count` integer, required
      - `failed_job_count` integer, required — Training jobs on this Experiment that ended in failure. Surfaced on the fine-tune landing row so a failed run is visible without expanding the Experiment, which is the only place its assets are loaded.
      - `dataset_count` integer, required
      - `evaluation_count` integer, required
      - `base_models` string[], required
      - `base_models_truncated` boolean, required
      - `last_activity_at` string, date-time, required
      - `category_label` string, nullable — Uppercase domain label derived from the project, title, and base models. Filled for the agent-sessions list only; null on a single-Experiment read, which renders the project and title themselves. Null means not computed for this response, never that the Experiment has no category.
      - `last_agent_message` string, nullable — Creator-only latest agent message, truncated for a list row. Filled for the agent-sessions list only, and only on the caller's own transcripts.
      - `agent_step_count` integer, nullable — Creator-only count of agent turns taken in the transcript. Filled for the agent-sessions list only, and only on the caller's own transcripts.
      - `agent_turn_active` boolean, required — True when the Experiment's chat session has a Fine-Tune agent turn in flight, including scoping turns that have not started training yet. False when idle or when the turn stamp is too old to believe.
  - `next_cursor` string, nullable
  - `has_more` boolean

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-24** `1cffaad2a921` — 1 warning, 7 info
  - removed the optional property `detail` from the response with the `422` status
  - added the optional property `items/items/completion_outcome` to the response with the `200` status
  - added the optional property `items/items/summary/agent_step_count` to the response with the `200` status
  - added the optional property `items/items/summary/category_label` to the response with the `200` status
  - …4 more
- **2026-08-19** `b92f75fd3b61` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pioneer/apis/brain-api/changes/experiments/get.md)

---

[API](https://skmtc.dev/pioneer/apis/brain-api.md) · [All operations](https://skmtc.dev/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pioneer/apis/brain-api/revisions/1cffaad2a921?raw)
